Merge "implement SUSE platform support"
This commit is contained in:
		| @@ -51,11 +51,6 @@ default["openstack"]["block-storage"]["keystone_service_chef_role"] = "keystone" | ||||
| # of the api-paste.ini when node["openstack"]["auth"]["strategy"] == "pki" | ||||
| default["openstack"]["block-storage"]["api"]["auth"]["cache_dir"] = "/var/cache/cinder/api" | ||||
|  | ||||
| # operating system group name | ||||
| default["openstack"]["block-storage"]["group"] = "cinder" | ||||
| # operating system user that services will run under | ||||
| default["openstack"]["block-storage"]["user"] = "cinder" | ||||
|  | ||||
| # Maximum allocatable gigabytes | ||||
| # Should equal total backend storage, default is 10TB | ||||
| default["openstack"]["block-storage"]["max_gigabytes"] = "10000" | ||||
| @@ -129,6 +124,10 @@ default["openstack"]["block-storage"]["policy"]["admin_api"] = '["is_admin:True" | ||||
|  | ||||
| case platform | ||||
| when "fedora", "redhat", "centos" # :pragma-foodcritic: ~FC024 - won't fix this | ||||
|   # operating system user and group names | ||||
|   default["openstack"]["block-storage"]["user"] = "cinder" | ||||
|   default["openstack"]["block-storage"]["group"] = "cinder" | ||||
|  | ||||
|   default["openstack"]["block-storage"]["platform"] = { | ||||
|     "mysql_python_packages" => ["MySQL-python"], | ||||
|     "postgresql_python_packages" => ["python-psycopg2"], | ||||
| @@ -143,7 +142,27 @@ when "fedora", "redhat", "centos" # :pragma-foodcritic: ~FC024 - won't fix this | ||||
|     "cinder_nfs_packages" => ["nfs-utils", "nfs-utils-lib"], | ||||
|     "package_overrides" => "" | ||||
|   } | ||||
| when "suse" | ||||
|   # operating system user and group names | ||||
|   default["openstack"]["block-storage"]["user"] = "openstack-cinder" | ||||
|   default["openstack"]["block-storage"]["group"] = "openstack-cinder" | ||||
|   default["openstack"]["block-storage"]["platform"] = { | ||||
|     "mysql_python_packages" => ["python-mysql"], | ||||
|     "postgresql_python_packages" => ["python-psycopg2"], | ||||
|     "cinder_api_packages" => ["openstack-cinder-api"], | ||||
|     "cinder_api_service" => "openstack-cinder-api", | ||||
|     "cinder_scheduler_packages" => ["openstack-cinder-scheduler"], | ||||
|     "cinder_scheduler_service" => "openstack-cinder-scheduler", | ||||
|     "cinder_volume_packages" => ["openstack-cinder"], | ||||
|     "cinder_volume_service" => "openstack-cinder-volume", | ||||
|     "cinder_iscsitarget_packages" => ["tgt"], | ||||
|     "cinder_iscsitarget_service" => "tgtd", | ||||
|     "cinder_nfs_packages" => ["nfs-utils"] | ||||
|   } | ||||
| when "ubuntu" | ||||
|   # operating system user and group names | ||||
|   default["openstack"]["block-storage"]["user"] = "cinder" | ||||
|   default["openstack"]["block-storage"]["group"] = "cinder" | ||||
|   default["openstack"]["block-storage"]["platform"] = { | ||||
|     "mysql_python_packages" => ["python-mysqldb"], | ||||
|     "postgresql_python_packages" => ["python-psycopg2"], | ||||
|   | ||||
| @@ -12,7 +12,7 @@ recipe           "openstack-block-storage::keystone_registration", "Registers ci | ||||
| recipe           "openstack-block-storage::scheduler", "Installs the cinder-scheduler service" | ||||
| recipe           "openstack-block-storage::volume", "Installs the cinder-volume service and sets up the iscsi helper" | ||||
|  | ||||
| %w{ ubuntu fedora redhat centos }.each do |os| | ||||
| %w{ ubuntu fedora redhat centos suse }.each do |os| | ||||
|   supports os | ||||
| end | ||||
|  | ||||
|   | ||||
							
								
								
									
										38
									
								
								spec/api-opensuse_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								spec/api-opensuse_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| require_relative "spec_helper" | ||||
|  | ||||
| describe "openstack-block-storage::api" do | ||||
|   before { block_storage_stubs } | ||||
|   describe "opensuse" do | ||||
|     before do | ||||
|       @chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS | ||||
|       @chef_run.converge "openstack-block-storage::api" | ||||
|     end | ||||
|  | ||||
|     it "installs cinder api packages" do | ||||
|       expect(@chef_run).to upgrade_package "openstack-cinder-api" | ||||
|     end | ||||
|  | ||||
|     it "installs mysql python packages by default" do | ||||
|       expect(@chef_run).to upgrade_package "python-mysql" | ||||
|     end | ||||
|  | ||||
|     it "installs postgresql python packages if explicitly told" do | ||||
|       chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS | ||||
|       node = chef_run.node | ||||
|       node.set["openstack"]["db"]["volume"]["db_type"] = "postgresql" | ||||
|       chef_run.converge "openstack-block-storage::api" | ||||
|  | ||||
|       expect(chef_run).to upgrade_package "python-psycopg2" | ||||
|       expect(chef_run).not_to upgrade_package "python-mysql" | ||||
|     end | ||||
|  | ||||
|     it "starts cinder api on boot" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "openstack-cinder-api" | ||||
|     end | ||||
|  | ||||
|     expect_creates_policy_json( | ||||
|       "service[cinder-api]", "openstack-cinder", "openstack-cinder") | ||||
|     expect_creates_cinder_conf( | ||||
|       "service[cinder-api]", "openstack-cinder", "openstack-cinder") | ||||
|   end | ||||
| end | ||||
| @@ -57,7 +57,7 @@ describe "openstack-block-storage::api" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "cinder-api" | ||||
|     end | ||||
|  | ||||
|     expect_creates_cinder_conf "service[cinder-api]" | ||||
|     expect_creates_cinder_conf "service[cinder-api]", "cinder", "cinder" | ||||
|  | ||||
|     describe "cinder.conf" do | ||||
|       before do | ||||
| @@ -112,7 +112,7 @@ describe "openstack-block-storage::api" do | ||||
|       expect(@chef_run).to execute_command cmd | ||||
|     end | ||||
|  | ||||
|     expect_creates_policy_json "service[cinder-api]" | ||||
|     expect_creates_policy_json "service[cinder-api]", "cinder", "cinder" | ||||
|  | ||||
|     describe "api-paste.ini" do | ||||
|       before do | ||||
|   | ||||
							
								
								
									
										37
									
								
								spec/scheduler-opensuse_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								spec/scheduler-opensuse_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| require_relative "spec_helper" | ||||
|  | ||||
| describe "openstack-block-storage::scheduler" do | ||||
|   before { block_storage_stubs } | ||||
|   describe "opensuse" do | ||||
|     before do | ||||
|       @chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS | ||||
|       @chef_run.converge "openstack-block-storage::scheduler" | ||||
|     end | ||||
|  | ||||
|     it "installs cinder api packages" do | ||||
|       expect(@chef_run).to upgrade_package "openstack-cinder-scheduler" | ||||
|     end | ||||
|  | ||||
|     it "installs mysql python packages by default" do | ||||
|       expect(@chef_run).to upgrade_package "python-mysql" | ||||
|     end | ||||
|  | ||||
|     it "installs postgresql python packages if explicitly told" do | ||||
|       chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS | ||||
|       node = chef_run.node | ||||
|       node.set["openstack"]["db"]["volume"]["db_type"] = "postgresql" | ||||
|       chef_run.converge "openstack-block-storage::scheduler" | ||||
|  | ||||
|       expect(chef_run).to upgrade_package "python-psycopg2" | ||||
|       expect(chef_run).not_to upgrade_package "python-mysql" | ||||
|     end | ||||
|  | ||||
|     it "starts cinder scheduler" do | ||||
|       expect(@chef_run).to start_service "openstack-cinder-scheduler" | ||||
|     end | ||||
|  | ||||
|     it "starts cinder scheduler on boot" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "openstack-cinder-scheduler" | ||||
|     end | ||||
|   end | ||||
| end | ||||
| @@ -45,6 +45,6 @@ describe "openstack-block-storage::scheduler" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "cinder-scheduler" | ||||
|     end | ||||
|  | ||||
|     expect_creates_cinder_conf "service[cinder-scheduler]" | ||||
|     expect_creates_cinder_conf "service[cinder-scheduler]", "cinder", "cinder" | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -1,6 +1,11 @@ | ||||
| require "chefspec" | ||||
|  | ||||
| ::LOG_LEVEL = :fatal | ||||
| ::OPENSUSE_OPTS = { | ||||
|   :platform  => "opensuse", | ||||
|   :version   => "12.3", | ||||
|   :log_level => ::LOG_LEVEL | ||||
| } | ||||
| ::REDHAT_OPTS = { | ||||
|   :platform => "redhat", | ||||
|   :version => "6.3", | ||||
| @@ -34,14 +39,14 @@ def expect_runs_openstack_common_logging_recipe | ||||
|   end | ||||
| end | ||||
|  | ||||
| def expect_creates_cinder_conf service, action=:restart | ||||
| def expect_creates_cinder_conf service, user, group, action=:restart | ||||
|   describe "cinder.conf" do | ||||
|     before do | ||||
|       @file = @chef_run.template "/etc/cinder/cinder.conf" | ||||
|     end | ||||
|  | ||||
|     it "has proper owner" do | ||||
|       expect(@file).to be_owned_by "cinder", "cinder" | ||||
|       expect(@file).to be_owned_by user, group | ||||
|     end | ||||
|  | ||||
|     it "has proper modes" do | ||||
| @@ -54,14 +59,14 @@ def expect_creates_cinder_conf service, action=:restart | ||||
|   end | ||||
| end | ||||
|  | ||||
| def expect_creates_policy_json service, action=:restart | ||||
| def expect_creates_policy_json service, user, group, action=:restart | ||||
|   describe "policy.json" do | ||||
|     before do | ||||
|       @file = @chef_run.template "/etc/cinder/policy.json" | ||||
|     end | ||||
|  | ||||
|     it "has proper owner" do | ||||
|       expect(@file).to be_owned_by "cinder", "cinder" | ||||
|       expect(@file).to be_owned_by user, group | ||||
|     end | ||||
|  | ||||
|     it "has proper modes" do | ||||
|   | ||||
							
								
								
									
										65
									
								
								spec/volume-opensuse_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								spec/volume-opensuse_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| require_relative "spec_helper" | ||||
|  | ||||
| describe "openstack-block-storage::volume" do | ||||
|   before { block_storage_stubs } | ||||
|   describe "opensuse" do | ||||
|     before do | ||||
|       @chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS | ||||
|       @chef_run.converge "openstack-block-storage::volume" | ||||
|     end | ||||
|  | ||||
|     it "installs cinder volume packages" do | ||||
|       expect(@chef_run).to upgrade_package "openstack-cinder" | ||||
|     end | ||||
|  | ||||
|     it "installs mysql python packages by default" do | ||||
|       expect(@chef_run).to upgrade_package "python-mysql" | ||||
|     end | ||||
|  | ||||
|     it "installs postgresql python packages if explicitly told" do | ||||
|       chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS | ||||
|       node = chef_run.node | ||||
|       node.set["openstack"]["db"]["volume"]["db_type"] = "postgresql" | ||||
|       chef_run.converge "openstack-block-storage::volume" | ||||
|  | ||||
|       expect(chef_run).to upgrade_package "python-psycopg2" | ||||
|       expect(chef_run).not_to upgrade_package "python-mysql" | ||||
|     end | ||||
|  | ||||
|     it "installs cinder iscsi packages" do | ||||
|       expect(@chef_run).to upgrade_package "tgt" | ||||
|     end | ||||
|  | ||||
|     it "starts cinder volume" do | ||||
|       expect(@chef_run).to start_service "openstack-cinder-volume" | ||||
|     end | ||||
|  | ||||
|     it "starts cinder volume on boot" do | ||||
|       expected = "openstack-cinder-volume" | ||||
|       expect(@chef_run).to set_service_to_start_on_boot expected | ||||
|     end | ||||
|  | ||||
|     it "starts iscsi target on boot" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "tgtd" | ||||
|     end | ||||
|  | ||||
|     it "installs nfs packages" do | ||||
|       chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS do |n| | ||||
|         n.set["openstack"]["block-storage"]["volume"]["driver"] = "cinder.volume.drivers.netapp.nfs.NetAppDirect7modeNfsDriver" | ||||
|       end | ||||
|       chef_run.converge "openstack-block-storage::volume" | ||||
|  | ||||
|       expect(chef_run).to upgrade_package "nfs-utils" | ||||
|       expect(chef_run).not_to upgrade_package "nfs-utils-lib" | ||||
|     end | ||||
|  | ||||
|     it "has opensuse include" do | ||||
|       file = "/etc/tgt/targets.conf" | ||||
|  | ||||
|       expect(@chef_run).to create_file_with_content file, | ||||
|         "include /var/lib/cinder/volumes/*" | ||||
|       expect(@chef_run).not_to create_file_with_content file, | ||||
|         "include /etc/tgt/conf.d/*.conf" | ||||
|     end | ||||
|   end | ||||
| end | ||||
| @@ -91,7 +91,7 @@ describe "openstack-block-storage::volume" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "cinder-volume" | ||||
|     end | ||||
|  | ||||
|     expect_creates_cinder_conf "service[cinder-volume]" | ||||
|     expect_creates_cinder_conf "service[cinder-volume]", "cinder", "cinder" | ||||
|  | ||||
|     it "starts iscsi target on boot" do | ||||
|       expect(@chef_run).to set_service_to_start_on_boot "tgt" | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| <%= node["openstack"]["block-storage"]["custom_template_banner"] %> | ||||
|  | ||||
| <% if %w{redhat centos fedora}.include?(node["platform"]) %> | ||||
| <% if %w{redhat centos fedora suse}.include?(node["platform"]) %> | ||||
| include /var/lib/cinder/volumes/* | ||||
| <% end %> | ||||
| <% if %w{debian ubuntu}.include?(node["platform"]) %> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jenkins
					Jenkins