implement SUSE platform support

Change-Id: Ief3e20dd27f262d742db04549b5ac2213dc725fe
This commit is contained in:
Ionuț Arțăriși 2013-07-17 18:22:06 +02:00
parent 4949b57572
commit 10765fd76e
10 changed files with 179 additions and 15 deletions

View File

@ -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"],

View File

@ -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
View 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

View File

@ -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

View 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

View File

@ -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

View File

@ -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

View 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

View File

@ -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"

View File

@ -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"]) %>