From 8bfd02003e44d25eb6d55a7fb3365ea23648dfe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ionu=C8=9B=20Ar=C8=9B=C4=83ri=C8=99i?= Date: Wed, 26 Jun 2013 11:01:09 +0200 Subject: [PATCH] SUSE support Change-Id: Ibd83dbe0206ac0b63e19112e8520b5ce6bf4dfd4 --- Gemfile | 2 +- Gemfile.lock | 6 +++--- README.md | 8 +------- attributes/default.rb | 30 +++++++++++++++++++++++++++--- metadata.rb | 5 +++-- recipes/bigswitch.rb | 4 ++-- recipes/brocade.rb | 4 ++-- recipes/cisco.rb | 4 ++-- recipes/dhcp_agent.rb | 12 ++++++------ recipes/hyperv.rb | 4 ++-- recipes/l3_agent.rb | 12 ++++++------ recipes/linuxbridge.rb | 4 ++-- recipes/metaplugin.rb | 4 ++-- recipes/midonet.rb | 4 ++-- recipes/nec.rb | 4 ++-- recipes/nicira.rb | 4 ++-- recipes/openvswitch.rb | 4 ++-- recipes/plumgrid.rb | 4 ++-- recipes/ryu.rb | 4 ++-- recipes/server.rb | 35 +++++++++++++++++++---------------- spec/server-opensuse_spec.rb | 29 +++++++++++++++++++++++++++++ spec/spec_helper.rb | 6 ++++++ 22 files changed, 125 insertions(+), 68 deletions(-) create mode 100644 spec/server-opensuse_spec.rb diff --git a/Gemfile b/Gemfile index 6b23266e..dad93c88 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,7 @@ source "https://rubygems.org" gem "chef", "~> 11.4.4" gem "json", "<= 1.7.7" # chef dependency gem "berkshelf", "~> 1.4.5" -gem "chefspec", "~> 1.2.0" +gem "chefspec", "~> 1.3.0" gem "foodcritic" gem "strainer" gem "webmock", "~> 1.11.0" diff --git a/Gemfile.lock b/Gemfile.lock index d4f3dd20..a22169de 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -42,7 +42,7 @@ GEM ohai (>= 0.6.0) rest-client (>= 1.0.4, < 1.7.0) yajl-ruby (~> 1.1) - chefspec (1.2.0) + chefspec (1.3.1) chef (>= 10.0) erubis fauxhai (>= 0.1.1, < 2.0) @@ -94,7 +94,7 @@ GEM little-plugger (>= 1.1.3) mime-types (1.23) minitar (0.5.4) - minitest (4.7.4) + minitest (4.7.5) minitest-chef-handler (1.0.1) chef ci_reporter @@ -196,7 +196,7 @@ PLATFORMS DEPENDENCIES berkshelf (~> 1.4.5) chef (~> 11.4.4) - chefspec (~> 1.2.0) + chefspec (~> 1.3.0) foodcritic json (<= 1.7.7) strainer diff --git a/README.md b/README.md index aeeff9ed..0a49a0c0 100644 --- a/README.md +++ b/README.md @@ -18,12 +18,6 @@ Requirements Chef 11.4.4 or higher required (for Chef environment use) -Platform --------- - -* Ubuntu-12.04+ -* Fedora-17+ - Cookbooks --------- @@ -31,7 +25,7 @@ The following cookbooks are dependencies: * database * identity -* mysql +* mysql or postgresql * openstack-common `>= 2.0.0` Recipes diff --git a/attributes/default.rb b/attributes/default.rb index 6f818650..4baccef8 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -27,9 +27,6 @@ default["openstack"]["network"]["custom_template_banner"] = " default["openstack"]["network"]["verbose"] = "False" default["openstack"]["network"]["debug"] = "False" -default["openstack"]["network"]["user"] = "quantum" -default["openstack"]["network"]["group"] = "quantum" - # Gets set in the Network Endpoint when registering with Keystone default["openstack"]["network"]["region"] = "RegionOne" @@ -60,6 +57,8 @@ default["openstack"]["network"]["syslog"]["config_facility"] = "local2" # the plugins to install on the server. this will be # quantum-plugin-%plugin% and the first plugin in the # list should match the core plugin below +# N.B. this will be ignored on SUSE as all plugins are installed by +# default by the main openstack-quantum package default["openstack"]["network"]["plugins"] = ['openvswitch', 'openvswitch-agent' ] # the core plugin to use for quantum @@ -588,7 +587,10 @@ default["openstack"]["network"]["ryu"]["polling_interval"] = 2 case platform when "fedora", "redhat", "centos" # :pragma-foodcritic: ~FC024 - won't fix this default["openstack"]["network"]["platform"] = { + "user" => "quantum", + "group" => "quantum", "mysql_python_packages" => [ "MySQL-python" ], + "postgresql_python_packages" => ["python-psycopg2"], "nova_network_packages" => [ "openstack-nova-network" ], "quantum_packages" => [ "openstack-quantum" ], "quantum_dhcp_packages" => [ "openstack-quantum" ], @@ -601,9 +603,31 @@ when "fedora", "redhat", "centos" # :pragma-foodcritic: ~FC024 - won't fix this "quantum_metadata_agent_service" => "quantum-metadata-agent", "package_overrides" => "" } +when "suse" + default["openstack"]["network"]["platform"] = { + "user" => "openstack-quantum", + "group" => "openstack-quantum", + "mysql_python_packages" => ["python-mysql"], + "postgresql_python_packages" => ["python-psycopg2"], + "nova_network_packages" => ["openstack-nova-network"], + "quantum_packages" => ["openstack-quantum"], + "quantum_dhcp_packages" => ["openstack-quantum-dhcp-agent"], + "quantum_l3_packages" => ["openstack-quantum-l3-agent"], + "quantum_plugin_package" => "openstack-quantum-%plugin%", + "quantum_openvswitch_packages" => ["openstack-quantum-openvswitch-agent"], + "quantum_metadata_agent_packages" => ["openstack-quantum-metadata-agent"], + "quantum_server_service" => "openstack-quantum", + "quantum_openvswitch_service" => "openstack-quantum-openvswitch-agent", + "quantum_dhcp_agent_service" => "openstack-quantum-dhcp-agent", + "quantum_l3_agent_service" => "openstack-quantum-l3-agent", + "quantum_metadata_agent_service" => "openstack-quantum-metadata-agent" + } when "ubuntu" default["openstack"]["network"]["platform"] = { + "user" => "quantum", + "group" => "quantum", "mysql_python_packages" => [ "python-mysqldb" ], + "postgresql_python_packages" => [ "python-psycopg2" ], "nova_network_packages" => [ "nova-network" ], "quantum_packages" => [ "quantum-server", "python-quantumclient", "python-pyparsing", "python-cliff" ], "quantum_dhcp_packages" => [ "quantum-dhcp-agent" ], diff --git a/metadata.rb b/metadata.rb index f0ae0734..d00705c3 100644 --- a/metadata.rb +++ b/metadata.rb @@ -8,11 +8,12 @@ recipe "openstack-network::server", "Installs packages required for a recipe "openstack-network::db", "Creates the OpenStack Network database" recipe "openstack-network::identity_registration", "Registers OpenStack Network endpoints and service user with Keystone" -%w{ ubuntu fedora redhat centos }.each do |os| +%w{ ubuntu fedora redhat centos suse }.each do |os| supports os end depends "database" depends "openstack-identity", "~> 7.0" -depends "mysql" depends "openstack-common", "~> 0.3.0" +depends "mysql" +depends "postgresql" diff --git a/recipes/bigswitch.rb b/recipes/bigswitch.rb index 149486be..bda4f498 100644 --- a/recipes/bigswitch.rb +++ b/recipes/bigswitch.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/bigswitch/restproxy.ini" do source "plugins/bigswitch/restproxy.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/brocade.rb b/recipes/brocade.rb index 4c38e3f1..f873dcc0 100644 --- a/recipes/brocade.rb +++ b/recipes/brocade.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/brocade/brocade.ini" do source "plugins/brocade/brocade.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/cisco.rb b/recipes/cisco.rb index 45c2a2c7..55207a08 100644 --- a/recipes/cisco.rb +++ b/recipes/cisco.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/cisco/cisco_plugins.ini" do source "plugins/cisco/cisco_plugins.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/dhcp_agent.rb b/recipes/dhcp_agent.rb index 37a0347d..c38d91d4 100644 --- a/recipes/dhcp_agent.rb +++ b/recipes/dhcp_agent.rb @@ -20,14 +20,14 @@ # This will copy recursively all the files in # /files/default/etc/quantum/rootwrap.d remote_directory "/etc/quantum/rootwrap.d" do - files_owner node["openstack"]["network"]["user"] - files_group node["openstack"]["network"]["group"] + files_owner node["openstack"]["network"]["platform"]["user"] + files_group node["openstack"]["network"]["platform"]["group"] files_mode 00700 end directory "/etc/quantum/plugins" do - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00700 end @@ -60,8 +60,8 @@ end template "/etc/quantum/dhcp_agent.ini" do source "dhcp_agent.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 notifies :restart, "service[quantum-dhcp-agent]", :immediately diff --git a/recipes/hyperv.rb b/recipes/hyperv.rb index cdd3735d..05a4bc6c 100644 --- a/recipes/hyperv.rb +++ b/recipes/hyperv.rb @@ -21,8 +21,8 @@ #FC033: Missing template: .cookbooks/openstack-network/recipes/hyperv.rb:20 #template "/etc/quantum/plugins/hyperv/hyperv_quantum_plugin.ini" do # source "plugins/hyperv/hyperv_quantum__plugin.ini.erb" -# owner node["openstack"]["network"]["user"] -# group node["openstack"]["network"]["group"] +# owner node["openstack"]["network"]["platform"]["user"] +# group node["openstack"]["network"]["platform"]["group"] # mode 00644 # variables( # :sql_connection => sql_connection diff --git a/recipes/l3_agent.rb b/recipes/l3_agent.rb index f53d56f7..d843978e 100644 --- a/recipes/l3_agent.rb +++ b/recipes/l3_agent.rb @@ -24,14 +24,14 @@ main_plugin = node["openstack"]["network"]["interface_driver"].split('.').last.d # This will copy recursively all the files in # /files/default/etc/quantum/rootwrap.d remote_directory "/etc/quantum/rootwrap.d" do - files_owner node["openstack"]["network"]["user"] - files_group node["openstack"]["network"]["group"] + files_owner node["openstack"]["network"]["platform"]["user"] + files_group node["openstack"]["network"]["platform"]["group"] files_mode 00700 end directory "/etc/quantum/plugins" do - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00700 end @@ -65,8 +65,8 @@ end template "/etc/quantum/l3_agent.ini" do source "l3_agent.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 notifies :restart, "service[quantum-l3-agent]", :immediately diff --git a/recipes/linuxbridge.rb b/recipes/linuxbridge.rb index 86477576..baad2203 100644 --- a/recipes/linuxbridge.rb +++ b/recipes/linuxbridge.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/linuxbridge/linuxbridge_conf.ini" do source "plugins/linuxbridge/linuxbridge_conf.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/metaplugin.rb b/recipes/metaplugin.rb index 73758c18..bda3d525 100644 --- a/recipes/metaplugin.rb +++ b/recipes/metaplugin.rb @@ -21,8 +21,8 @@ # FC033: Missing template: .cookbooks/openstack-network/recipes/metaplugin.rb:20 # template "/etc/quantum/plugins/metaplugin/metaplugin_plugins.ini" do # source "plugins/metaplugin/metaplugin_plugins.ini.erb" -# owner node["openstack"]["network"]["user"] -# group node["openstack"]["network"]["group"] +# owner node["openstack"]["network"]["platform"]["user"] +# group node["openstack"]["network"]["platform"]["group"] # mode 00644 # variables( # :sql_connection => sql_connection diff --git a/recipes/midonet.rb b/recipes/midonet.rb index 8cf1c897..41c627b5 100644 --- a/recipes/midonet.rb +++ b/recipes/midonet.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/midonet/midonet.ini" do source "plugins/midonet/midonet.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/nec.rb b/recipes/nec.rb index 06683912..f964b7d2 100644 --- a/recipes/nec.rb +++ b/recipes/nec.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/nec/nec.ini" do source "plugins/nec/nec.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/nicira.rb b/recipes/nicira.rb index 63909b23..e21f6928 100644 --- a/recipes/nicira.rb +++ b/recipes/nicira.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/nicira/nvp.ini" do source "plugins/nicira/nvp.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/openvswitch.rb b/recipes/openvswitch.rb index 2861550d..84ce236d 100644 --- a/recipes/openvswitch.rb +++ b/recipes/openvswitch.rb @@ -42,8 +42,8 @@ end template "/etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini" do source "plugins/openvswitch/ovs_quantum_plugin.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/plumgrid.rb b/recipes/plumgrid.rb index 5b672da6..f64c2210 100644 --- a/recipes/plumgrid.rb +++ b/recipes/plumgrid.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/plumgrid/plumgrid.ini" do source "plugins/plumgrid/plumgrid.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/ryu.rb b/recipes/ryu.rb index 6b3437e1..feaa881f 100644 --- a/recipes/ryu.rb +++ b/recipes/ryu.rb @@ -19,8 +19,8 @@ template "/etc/quantum/plugins/ryu/ryu.ini" do source "plugins/ryu/ryu.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :sql_connection => sql_connection diff --git a/recipes/server.rb b/recipes/server.rb index 962181e2..2f41a3a3 100644 --- a/recipes/server.rb +++ b/recipes/server.rb @@ -39,7 +39,8 @@ platform_options["nova_network_packages"].each do |pkg| end end -platform_options["mysql_python_packages"].each do |pkg| +db_type = node["openstack"]["db"]["network"]["db_type"] +platform_options["#{db_type}_python_packages"].each do |pkg| package pkg do action :install end @@ -102,20 +103,20 @@ end # /files/default/etc/quantum/rootwrap.d remote_directory "/etc/quantum/rootwrap.d" do source "etc/quantum/rootwrap.d" - files_owner node["openstack"]["network"]["user"] - files_group node["openstack"]["network"]["group"] + files_owner node["openstack"]["network"]["platform"]["user"] + files_group node["openstack"]["network"]["platform"]["group"] files_mode 00700 end directory "/etc/quantum/plugins" do - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00700 end directory ::File.dirname node["openstack"]["network"]["api"]["auth"]["cache_dir"] do - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00700 only_if { node["openstack"]["auth"]["strategy"] == "pki" } @@ -123,8 +124,8 @@ end template "/etc/quantum/policy.json" do source "policy.json.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 notifies :restart, "service[quantum-server]", :immediately @@ -163,6 +164,9 @@ node["openstack"]["network"]["plugins"].each do |pkg| pkg = plugin_fmt.gsub("%plugin%", pkg) package pkg do action :install + # on SUSE, all plugins get installed by default with the main + # openstack-quantum package + not_if { platform_family? "suse" } end end @@ -174,8 +178,8 @@ end template "/etc/quantum/quantum.conf" do source "quantum.conf.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( :bind_address => bind_address, @@ -193,8 +197,8 @@ end template "/etc/quantum/api-paste.ini" do source "api-paste.ini.erb" - owner node["openstack"]["network"]["user"] - group node["openstack"]["network"]["group"] + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00644 variables( "identity_endpoint" => identity_endpoint, @@ -205,8 +209,7 @@ template "/etc/quantum/api-paste.ini" do end directory "/var/cache/quantum" do - owner "quantum" - group "quantum" + owner node["openstack"]["network"]["platform"]["user"] + group node["openstack"]["network"]["platform"]["group"] mode 00700 end - diff --git a/spec/server-opensuse_spec.rb b/spec/server-opensuse_spec.rb new file mode 100644 index 00000000..681986d9 --- /dev/null +++ b/spec/server-opensuse_spec.rb @@ -0,0 +1,29 @@ +require_relative "spec_helper" + +describe 'openstack-network::server' do + describe "opensuse" do + before do + quantum_stubs + @chef_run = ::ChefSpec::ChefRunner.new ::OPENSUSE_OPTS + @node = @chef_run.node + + @chef_run.converge "openstack-network::server" + end + + it "installs openstack-quantum packages" do + expect(@chef_run).to install_package "openstack-quantum" + end + + it "enables openstack-quantum service" do + expect(@chef_run).to enable_service "openstack-quantum" + end + + it "does not install openvswitch package" do + opts = ::OPENSUSE_OPTS.merge(:evaluate_guards => true) + chef_run = ::ChefSpec::ChefRunner.new opts + chef_run.converge "openstack-network::server" + + expect(chef_run).not_to install_package "openstack-quantum-openvswitch" + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a7791dc6..ccb408b8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,8 +1,14 @@ require "chefspec" ::LOG_LEVEL = :fatal +::OPENSUSE_OPTS = { + :platform => "opensuse", + :version => "12.3", + :log_level => ::LOG_LEVEL +} ::REDHAT_OPTS = { :platform => "redhat", + :version => "6.3", :log_level => ::LOG_LEVEL } ::UBUNTU_OPTS = {