From 5662cac10e5d32833378e994ca2fadc231b75d4e Mon Sep 17 00:00:00 2001 From: Ryan Hallisey Date: Thu, 18 Dec 2014 12:37:14 -0500 Subject: [PATCH] Add Ironic support into nova puppet modules Ironic needs to make some additions to the nova config file in order to run. The remaining configuraitons will be added to the nova plugin in packstack. Change-Id: I34c7c8a6001b0433aee9017ac571e3bd4f2f02b2 --- manifests/compute.pp | 17 ++++++++ manifests/compute/ironic.pp | 49 ++++++++++++++++++++++++ spec/classes/nova_compute_ironic_spec.rb | 13 +++++++ spec/classes/nova_compute_spec.rb | 17 +++++--- 4 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 manifests/compute/ironic.pp create mode 100644 spec/classes/nova_compute_ironic_spec.rb diff --git a/manifests/compute.pp b/manifests/compute.pp index 975fefc50..0fcf648fc 100644 --- a/manifests/compute.pp +++ b/manifests/compute.pp @@ -73,6 +73,16 @@ # (optional) Force backing images to raw format. # Defaults to true # +# [*reserved_host_memory*] +# Reserved host memory +# The amount of memory in MB reserved for the host. +# Defaults to '512' +# +# [*compute_manager*] +# Compute manager +# The driver that will manage the running instances. +# Defaults to nova.compute.manager.ComputeManager +# class nova::compute ( $enabled = false, $manage_service = true, @@ -91,10 +101,17 @@ class nova::compute ( $instance_usage_audit = false, $instance_usage_audit_period = 'month', $force_raw_images = true, + $reserved_host_memory = '512', + $compute_manager = 'nova.compute.manager.ComputeManager', ) { include nova::params + nova_config { + 'DEFAULT/reserved_host_memory_mb': value => $reserved_host_memory; + 'DEFAULT/compute_manager': value => $compute_manager; + } + if ($vnc_enabled) { if ($vncproxy_host) { $vncproxy_base_url = "${vncproxy_protocol}://${vncproxy_host}:${vncproxy_port}${vncproxy_path}" diff --git a/manifests/compute/ironic.pp b/manifests/compute/ironic.pp new file mode 100644 index 000000000..2924a029f --- /dev/null +++ b/manifests/compute/ironic.pp @@ -0,0 +1,49 @@ +# == Class: nova::compute::ironic +# +# Configures Nova compute service to use Ironic. +# +# === Parameters: +# +# [*admin_user*] +# Admin username +# The admin username for Ironic to connect to Nova. +# Defaults to 'admin' +# +# [*admin_passwd*] +# Admin password +# The admin password for Ironic to connect to Nova. +# Defaults to 'ironic' +# +# [*admin_url*] +# Admin url +# The address of the Keystone api endpoint. +# Defaults to 'http://127.0.0.1:35357/v2.0' +# +# [*admin_tenant_name*] +# Admin tenant name +# The Ironic Keystone tenant name. +# Defaults to 'services' +# +# [*api_endpoint*] +# Api endpoint +# The url for Ironic api endpoint. +# Defaults to 'http://127.0.0.1:6385/v1' +# + +class nova::compute::ironic ( + $admin_user = 'admin', + $admin_passwd = 'ironic', + $admin_url = 'http://127.0.0.1:35357/v2.0', + $admin_tenant_name = 'services', + $api_endpoint = 'http://127.0.0.1:6385/v1', +) { + + nova_config { + 'ironic/admin_username': value => $admin_user; + 'ironic/admin_password': value => $admin_passwd; + 'ironic/admin_url': value => $admin_url; + 'ironic/admin_tenant_name': value => $admin_tenant_name; + 'ironic/api_endpoint': value => $api_endpoint; + 'DEFAULT/compute_driver': value => 'nova.virt.ironic.IronicDriver'; + } +} diff --git a/spec/classes/nova_compute_ironic_spec.rb b/spec/classes/nova_compute_ironic_spec.rb new file mode 100644 index 000000000..87e239a78 --- /dev/null +++ b/spec/classes/nova_compute_ironic_spec.rb @@ -0,0 +1,13 @@ +require 'spec_helper' +describe 'nova::compute::ironic' do + + it 'configures ironic in nova.conf' do + should contain_nova_config('ironic/admin_username').with_value('admin') + should contain_nova_config('ironic/admin_password').with_value('ironic') + should contain_nova_config('ironic/admin_url').with_value('http://127.0.0.1:35357/v2.0') + should contain_nova_config('ironic/admin_tenant_name').with_value('services') + should contain_nova_config('ironic/api_endpoint').with_value('http://127.0.0.1:6385/v1') + should contain_nova_config('DEFAULT/compute_driver').with_value('nova.virt.ironic.IronicDriver') + end + +end diff --git a/spec/classes/nova_compute_spec.rb b/spec/classes/nova_compute_spec.rb index 253f65506..0411af534 100644 --- a/spec/classes/nova_compute_spec.rb +++ b/spec/classes/nova_compute_spec.rb @@ -40,11 +40,13 @@ describe 'nova::compute' do context 'with overridden parameters' do let :params do - { :enabled => true, - :ensure_package => '2012.1-2', - :vncproxy_host => '127.0.0.1', - :network_device_mtu => 9999, - :force_raw_images => false } + { :enabled => true, + :ensure_package => '2012.1-2', + :vncproxy_host => '127.0.0.1', + :network_device_mtu => 9999, + :force_raw_images => false, + :reserved_host_memory => '0', + :compute_manager => 'ironic.nova.compute.manager.ClusteredComputeManager'} end it 'installs nova-compute package and service' do @@ -61,6 +63,11 @@ describe 'nova::compute' do }) end + it 'configures ironic in nova.conf' do + should contain_nova_config('DEFAULT/reserved_host_memory_mb').with_value('0') + should contain_nova_config('DEFAULT/compute_manager').with_value('ironic.nova.compute.manager.ClusteredComputeManager') + end + it 'configures network_device_mtu' do should contain_nova_config('DEFAULT/network_device_mtu').with_value('9999') end