replace dbomatic with condormatic
by Mo Morsi
These patches completely remove dbomatic and replace it with another
method in condormatic to update instance attributes whenever an instance
is accessed from the db.
12 years, 10 months
ANNOUNCE: libdeltacloud 0.9
by Chris Lalancette
All,
I'm pleased to announce the release of libdeltacloud 0.9.
libdeltacloud is a library for accessing the Deltacloud API from C or C++
programs. There are several important changes in this release:
- Performance optimizations
- Support for deltacloud driver section
- Support for deltacloud buckets and blobs
- Support for deltacloud loadbalancers
- Full doxygen documentation of all of the functions
- Other minor bugfixes
The release is available from:
http://people.redhat.com/clalance/libdeltacloud/0.9
The source code is pushed to the git repository, which lives here:
git://git.fedorahosted.org/deltacloud/libdeltacloud.git
As always, questions, comments, problems and patches are welcome!
--
Chris Lalancette
12 years, 10 months
[PATCH configure] RHEV-M support
by Richard Su
1. enable/disable RHEV-M support through config file
2. templatized /etc/rhevm.json and /etc/iwhd/conf.js
3. mount NFS shared directory between iwhd and RHEV-M
4. startup deltacloud-core with RHEV-M powershell as api provider
5. create a hardware profile for RHEV-M
6. add RHEV-M provider in Conductor
---
conf/rhevm_cleanup | 15 +++++++++
conf/rhevm_configure | 26 ++++++++++++++++
recipes/aeolus/manifests/init.pp | 1 +
recipes/aeolus/manifests/rhevm.pp | 53 +++++++++++++++++++++++++++++++++
recipes/aeolus/templates/iwhd-conf.js | 7 ++++
recipes/aeolus/templates/rhevm.json | 12 +++++++
6 files changed, 114 insertions(+), 0 deletions(-)
create mode 100644 conf/rhevm_cleanup
create mode 100644 conf/rhevm_configure
create mode 100644 recipes/aeolus/manifests/rhevm.pp
create mode 100644 recipes/aeolus/templates/iwhd-conf.js
create mode 100644 recipes/aeolus/templates/rhevm.json
diff --git a/conf/rhevm_cleanup b/conf/rhevm_cleanup
new file mode 100644
index 0000000..a43d991
--- /dev/null
+++ b/conf/rhevm_cleanup
@@ -0,0 +1,15 @@
+#RHEV-M-only cleanup specification
+
+#You can override the default behavior
+#by renaming this to <fqdn>_cleanup.
+#This will result in only iwhd being
+#disabled
+---
+parameters:
+ enable_https: true
+ enable_security: false
+ rhevm_nfs_server: nfs.server.com
+ rhevm_nfs_export: /export/export_domain
+ rhevm_nfs_mount_point: /mnt/rhevm-nfs
+classes:
+- aeolus::rhevm::disabled
diff --git a/conf/rhevm_configure b/conf/rhevm_configure
new file mode 100644
index 0000000..8e6e601
--- /dev/null
+++ b/conf/rhevm_configure
@@ -0,0 +1,26 @@
+#RHEV-M-only setup configuration.
+
+#renaming this file to <fqdn>_configure will
+#make it override the default configure everything
+#behavior with the behavior below to only set up
+#iwhd
+
+#NOTE: Although this suggests the components
+#can be deployed on individual boxes. This will likely
+#become a common practice, but be advised that currently
+#apart from https on the web server for conductor, you should
+#consider intermachine communications insecure. Securing
+#intermachine service calls is on the roadmap.
+---
+parameters:
+ enable_https: true
+ enable_security: false
+ rhevm_nfs_server: nfs.server.com
+ rhevm_nfs_export: /export/export_domain
+ rhevm_nfs_mount_point: /mnt/rhevm-nfs
+ rhevm_deltacloud_port: 3005
+ rhevm_deltacloud_username: username@fqdn
+ rhevm_deltacloud_password: password
+ rhevm_deltacloud_powershell_url: https://rhevm.server.com:8543/rhevm-api-powershell
+classes:
+- aeolus::rhevm
diff --git a/recipes/aeolus/manifests/init.pp b/recipes/aeolus/manifests/init.pp
index e3e601c..1144293 100644
--- a/recipes/aeolus/manifests/init.pp
+++ b/recipes/aeolus/manifests/init.pp
@@ -10,6 +10,7 @@ import "conductor"
import "deltacloud"
import "iwhd"
import "image-factory"
+import "rhevm"
if $aeolus_enable_https == "true" or $aeolus_enable_https == "1" {
import "openssl"
diff --git a/recipes/aeolus/manifests/rhevm.pp b/recipes/aeolus/manifests/rhevm.pp
new file mode 100644
index 0000000..84c18c6
--- /dev/null
+++ b/recipes/aeolus/manifests/rhevm.pp
@@ -0,0 +1,53 @@
+class aeolus::rhevm inherits aeolus {
+ file {"/etc/rhevm.json":
+ content => template("aeolus/rhevm.json"),
+ mode => 755,
+ require => Package['aeolus-conductor-daemons'] }
+
+ file {"/etc/iwhd/conf.js":
+ content => template("aeolus/iwhd-conf.js"),
+ mode => 755,
+ require => Package['aeolus-conductor-daemons'] }
+
+ file {"$rhevm_nfs_mount_point":
+ ensure => 'directory'}
+
+ mount {"$rhevm_nfs_mount_point":
+ ensure => mounted,
+ device => "$rhevm_nfs_server:$rhevm_nfs_export",
+ fstype => "nfs",
+ options => "rw",
+ require => File["$rhevm_nfs_mount_point"]}
+
+ aeolus::conductor::hwp{"rhevm-hwp":
+ memory => "512",
+ cpu => "1",
+ storage => "1",
+ architecture => "x86_64",
+ require => Aeolus::Site_admin["admin"] }
+
+ # break up aeolus::provider into its individual steps for two reasons:
+ # 1. deltacloudd expects "rhevm", imagefactory expects "rhev-m" passed through by conductor
+ # 2. rhevm-hwp must exist before creating provider
+ aeolus::deltacloud{"rhevm":
+ provider_type => 'rhevm',
+ endpoint => "$rhevm_deltacloud_powershell_url",
+ port => $rhevm_deltacloud_port}
+
+ aeolus::conductor::provider{"rhevm":
+ type => "rhev-m",
+ url => "http://localhost:${rhevm_deltacloud_port}/api",
+ require => [Aeolus::Deltacloud["rhevm"],Aeolus::Conductor::Hwp["rhevm-hwp"]]}
+
+ # TODO:
+ # 1. since we have credentials, create provider account
+ # 2. create a realm and mappings
+}
+
+class aeolus::rhevm::disabled {
+ aeolus::deltacloud::disabled{"rhevm": }
+
+ mount {"$rhevm_nfs_mount_point":
+ ensure => unmounted,
+ device => "$rhevm_nfs_server:$rhevm_nfs_export"}
+}
diff --git a/recipes/aeolus/templates/iwhd-conf.js b/recipes/aeolus/templates/iwhd-conf.js
new file mode 100644
index 0000000..6ae1465
--- /dev/null
+++ b/recipes/aeolus/templates/iwhd-conf.js
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "rhevm",
+ "type": "fs-rhev-m",
+ "path": "<%= rhevm_nfs_mount_point %>"
+ }
+]
diff --git a/recipes/aeolus/templates/rhevm.json b/recipes/aeolus/templates/rhevm.json
new file mode 100644
index 0000000..c32a685
--- /dev/null
+++ b/recipes/aeolus/templates/rhevm.json
@@ -0,0 +1,12 @@
+{
+ "rhevm":
+ {
+ "api-key": "<%= rhevm_deltacloud_username %>",
+ "nfs-dir": "<%= rhevm_nfs_mount_point %>",
+ "nfs-path": "<%= rhevm_nfs_export %>",
+ "nfs-host": "<%= rhevm_nfs_server %>",
+ "api-url": "<%= rhevm_deltacloud_powershell_url %>",
+ "api-secret": "<%= rhevm_deltacloud_password %>",
+ "cluster": "_any_"
+ }
+}
\ No newline at end of file
--
1.7.4.4
12 years, 10 months
[PATCH conductor] Allow all users to launch a deployable in any pool
by Tomas Sedovic
From: Tomas Sedovic <tsedovic(a)redhat.com>
https://www.aeolusproject.org/redmine/issues/1844
https://bugzilla.redhat.com/show_bug.cgi?id=714790
---
src/app/controllers/deployments_controller.rb | 2 +-
.../20110623142949_pool_self_service_role.rb | 52 ++++++++++++++++++++
src/db/seeds.rb | 9 +++-
3 files changed, 61 insertions(+), 2 deletions(-)
create mode 100644 src/db/migrate/20110623142949_pool_self_service_role.rb
diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb
index 3c60506..8ad3d2c 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -21,7 +21,7 @@ class DeploymentsController < ApplicationController
# It is expected that params[:pool_id] will be set on requests into this method
def launch_new
@pool = Pool.find(params[:pool_id]) or raise "Invalid pool"
- require_privilege(Privilege::CREATE, Deployment)
+ require_privilege(Privilege::CREATE, Deployment, @pool)
@deployment = Deployment.new(:pool_id => @pool.id)
@suggested_deployables = SuggestedDeployable.list_for_user(current_user, Privilege::USE)
init_new_deployment_attrs
diff --git a/src/db/migrate/20110623142949_pool_self_service_role.rb b/src/db/migrate/20110623142949_pool_self_service_role.rb
new file mode 100644
index 0000000..e357812
--- /dev/null
+++ b/src/db/migrate/20110623142949_pool_self_service_role.rb
@@ -0,0 +1,52 @@
+class PoolSelfServiceRole < ActiveRecord::Migration
+ VIEW = "view"
+ CRE = "create"
+ ROLE_NAME = "Pool Global User"
+ ROLE_DEF = [false, {Pool => [VIEW],
+ Instance => [ CRE],
+ Deployment => [ CRE],
+ Quota => [VIEW]}]
+
+ def self.up
+ return if Role.all.empty?
+
+ Role.transaction do
+ role = Role.find_or_initialize_by_name(ROLE_NAME)
+ role.update_attributes({:name => ROLE_NAME, :scope => BasePermissionObject.name,
+ :assign_to_owner => ROLE_DEF[0]})
+ role.privileges = {}
+ role.save!
+ ROLE_DEF[1].each do |priv_type, priv_actions|
+ priv_actions.each do |action|
+ Privilege.create!(:role => role, :target_type => priv_type.name,
+ :action => action)
+ end
+ end
+
+ MetadataObject.transaction do
+ settings = {
+ "self_service_default_pool_global_user_obj" => BasePermissionObject.general_permission_scope,
+ "self_service_default_pool_global_user_role" => Role.find_by_name("Pool Global User"),
+ "self_service_perms_list" => "[self_service_default_pool,self_service_default_role], [self_service_default_suggested_deployable_obj,self_service_default_suggested_deployable_role], [self_service_default_pool_global_user_obj,self_service_default_pool_global_user_role]" }
+ settings.each_pair { |key, value| MetadataObject.set(key, value) }
+ end
+
+ Permission.transaction do
+ User.all.each do |user|
+ default_obj = MetadataObject.lookup("self_service_default_pool_global_user_obj")
+ default_role = MetadataObject.lookup("self_service_default_pool_global_user_role")
+ unless Permission.first(:conditions => {:user_id => user.id,
+ :role_id => default_role.id,
+ :permission_object_id => default_obj.id})
+ Permission.create!(:user => user,
+ :role => default_role,
+ :permission_object => default_obj)
+ end
+ end
+ end
+ end
+ end
+
+ def self.down
+ end
+end
diff --git a/src/db/seeds.rb b/src/db/seeds.rb
index eee6904..67e566c 100644
--- a/src/db/seeds.rb
+++ b/src/db/seeds.rb
@@ -58,6 +58,10 @@ roles =
PoolFamily => [VIEW, MOD,CRE,VPRM,GPRM]}],
"SuggestedDeployable Administrator" => [false, {SuggestedDeployable => [VIEW,USE,MOD,CRE,VPRM,GPRM]}],
"SuggestedDeployable Global User" => [false, {SuggestedDeployable=> [VIEW,USE]}],
+ "Pool Global User" => [false, {Pool => [VIEW],
+ Instance => [ CRE],
+ Deployment => [ CRE],
+ Quota => [VIEW]}],
"Administrator" => [false, {Provider => [VIEW, MOD,CRE,VPRM,GPRM],
ProviderAccount => [VIEW,USE,MOD,CRE,VPRM,GPRM],
HardwareProfile => [ MOD,CRE,VPRM,GPRM],
@@ -98,6 +102,7 @@ default_quota = Quota.create
default_pool = Pool.find_by_name("default_pool")
default_role = Role.find_by_name("Pool User")
default_suggested_deployable_role = Role.find_by_name("SuggestedDeployable Global User")
+default_pool_global_user_role = Role.find_by_name("Pool Global User")
settings = {"allow_self_service_logins" => "true",
"self_service_default_quota" => default_quota,
@@ -105,9 +110,11 @@ settings = {"allow_self_service_logins" => "true",
"self_service_default_role" => default_role,
"self_service_default_suggested_deployable_obj" => BasePermissionObject.general_permission_scope,
"self_service_default_suggested_deployable_role" => default_suggested_deployable_role,
+ "self_service_default_pool_global_user_obj" => BasePermissionObject.general_permission_scope,
+ "self_service_default_pool_global_user_role" => default_pool_global_user_role,
# perm list in the format:
# "[resource1_key, resource1_role], [resource2_key, resource2_role], ..."
- "self_service_perms_list" => "[self_service_default_pool,self_service_default_role], [self_service_default_suggested_deployable_obj,self_service_default_suggested_deployable_role]"}
+ "self_service_perms_list" => "[self_service_default_pool,self_service_default_role], [self_service_default_suggested_deployable_obj,self_service_default_suggested_deployable_role], [self_service_default_pool_global_user_obj,self_service_default_pool_global_user_role]"}
settings.each_pair do |key, value|
MetadataObject.set(key, value)
end
--
1.7.4.4
12 years, 10 months
[PATCH conductor] Show Account Number in Provider Account properties
by Tomas Sedovic
From: Tomas Sedovic <tsedovic(a)redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=693669
When a provider account had an account number associated with it (ec2 for
example), that number wasn't displayed in that account's Properties page. Now
it is.
---
.../controllers/provider_accounts_controller.rb | 1 +
src/app/views/provider_accounts/_properties.haml | 11 ++++++-----
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/app/controllers/provider_accounts_controller.rb b/src/app/controllers/provider_accounts_controller.rb
index fc706bb..c279996 100644
--- a/src/app/controllers/provider_accounts_controller.rb
+++ b/src/app/controllers/provider_accounts_controller.rb
@@ -29,6 +29,7 @@ class ProviderAccountsController < ApplicationController
def show
@tab_captions = ['Properties', 'Credentials', 'History', 'Permissions']
@account = ProviderAccount.find(params[:id])
+ @account_id = @account.credentials_hash['account_id']
require_privilege(Privilege::VIEW, @account)
@details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
diff --git a/src/app/views/provider_accounts/_properties.haml b/src/app/views/provider_accounts/_properties.haml
index 6cc1cc4..559bdf1 100644
--- a/src/app/views/provider_accounts/_properties.haml
+++ b/src/app/views/provider_accounts/_properties.haml
@@ -11,8 +11,9 @@
%label Running instances quota:
%td
= @account.quota.maximum_running_instances or 'unlimited'
- %tr
- %td
- %label Account ID:
- %td
- = @account.credentials_hash['account_number']
+ - if @account_id
+ %tr
+ %td
+ = label_tag "Account number:"
+ %td
+ = @account_id
--
1.7.4.4
12 years, 10 months
HWP validation fix
by Jirka Tomasek
This fixes bz685046. The error messages polishing would require more
deep changes in hardware profile and hardware profile property models.
12 years, 10 months
[PATCH conductor] Added VMWare vSphere provider in seeds.rb and created a migration
by Francesco Vollero
Signed-off-by: Francesco Vollero <fvollero(a)redhat.com>
---
.../20110617105805_add_vmware_vsphere_provider.rb | 11 +++++++++++
src/db/seeds.rb | 1 +
2 files changed, 12 insertions(+), 0 deletions(-)
create mode 100644 src/db/migrate/20110617105805_add_vmware_vsphere_provider.rb
diff --git a/src/db/migrate/20110617105805_add_vmware_vsphere_provider.rb b/src/db/migrate/20110617105805_add_vmware_vsphere_provider.rb
new file mode 100644
index 0000000..f31347f
--- /dev/null
+++ b/src/db/migrate/20110617105805_add_vmware_vsphere_provider.rb
@@ -0,0 +1,11 @@
+class AddVmwareVsphereProvider < ActiveRecord::Migration
+ def self.up
+ provider_type = ProviderType.create!(:name => "VMWare vSphere", :build_supported => true, :codename =>"vsphere")
+ CredentialDefinition.create!(:name => 'username', :label => 'Username', :input_type => 'text', :provider_type_id => provider_type.id)
+ CredentialDefinition.create!(:name => 'password', :label => 'Password', :input_type => 'password', :provider_type_id => provider_type.id)
+ end
+
+ def self.down
+ ProviderType.destroy(:name=>"VMWare vSphere", :codename=>"vsphere")
+ end
+end
diff --git a/src/db/seeds.rb b/src/db/seeds.rb
index eee6904..dee0a35 100644
--- a/src/db/seeds.rb
+++ b/src/db/seeds.rb
@@ -121,6 +121,7 @@ if ProviderType.all.empty?
ProviderType.create!(:name => "RHEV-M", :codename =>"rhev-m")
ProviderType.create!(:name => "OpenNebula", :codename =>"opennebula")
ProviderType.create!(:name => "CondorCloud", :codename =>"condorcloud", :build_supported => 'true')
+ ProviderType.create!(:name => "VMWare vSphere", :codename =>"vsphere", :build_supported => 'true')
end
# fill table CredentialDefinitions by default values
--
1.7.4.4
12 years, 10 months