From ff55034d089784c657385bd4a386a6132203c88d Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Wed, 11 May 2016 15:45:24 -0400 Subject: [PATCH] Implement ironic::drivers::deploy class Deploy the options defined in ironic.drivers.modules.deploy_utils in a new class: ironic::drivers::deploy. Change-Id: Iccac750ae2aeecab3fc29b4c6938d47aeca2cea9 --- manifests/drivers/deploy.pp | 36 +++++++++++++ .../drivers_deploy-7ffce6be5dc9883c.yaml | 3 ++ spec/acceptance/ironic_wsgi_apache_spec.rb | 1 + spec/classes/ironic_drivers_deploy_spec.rb | 53 +++++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100644 manifests/drivers/deploy.pp create mode 100644 releasenotes/notes/drivers_deploy-7ffce6be5dc9883c.yaml create mode 100644 spec/classes/ironic_drivers_deploy_spec.rb diff --git a/manifests/drivers/deploy.pp b/manifests/drivers/deploy.pp new file mode 100644 index 00000000..4758d671 --- /dev/null +++ b/manifests/drivers/deploy.pp @@ -0,0 +1,36 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Configure the deploy_utils in Ironic +# +# === Parameters +# +# [*http_url*] +# (optional) ironic-conductor node's HTTP server URL. +# Defaults to $::os_service_default +# +# [*http_root*] +# (optional) ironic-conductor node's HTTP root path. +# Defaults to $::os_service_default +# + +class ironic::drivers::deploy ( + $http_url = $::os_service_default, + $http_root = $::os_service_default, +) { + + ironic_config { + 'deploy/http_url': value => $http_url; + 'deploy/http_root': value => $http_root; + } + +} diff --git a/releasenotes/notes/drivers_deploy-7ffce6be5dc9883c.yaml b/releasenotes/notes/drivers_deploy-7ffce6be5dc9883c.yaml new file mode 100644 index 00000000..f93762fb --- /dev/null +++ b/releasenotes/notes/drivers_deploy-7ffce6be5dc9883c.yaml @@ -0,0 +1,3 @@ +--- +features: + - Allow to configure Ironic deploy_utils with ironic::drivers::deploy class. diff --git a/spec/acceptance/ironic_wsgi_apache_spec.rb b/spec/acceptance/ironic_wsgi_apache_spec.rb index d0c828ca..5f62ec42 100644 --- a/spec/acceptance/ironic_wsgi_apache_spec.rb +++ b/spec/acceptance/ironic_wsgi_apache_spec.rb @@ -60,6 +60,7 @@ describe 'basic ironic' do ssl => false, } class { '::ironic::drivers::ipmi': } + class { '::ironic::drivers::deploy': } # Ironic inspector resources case $::osfamily { diff --git a/spec/classes/ironic_drivers_deploy_spec.rb b/spec/classes/ironic_drivers_deploy_spec.rb new file mode 100644 index 00000000..b4262b08 --- /dev/null +++ b/spec/classes/ironic_drivers_deploy_spec.rb @@ -0,0 +1,53 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Unit tests for ironic::drivers::deploy class +# + +require 'spec_helper' + +describe 'ironic::drivers::deploy' do + + shared_examples_for 'ironic deploy utils' do + + context 'with default parameters' do + it { is_expected.to contain_ironic_config('deploy/http_url').with_value('') } + it { is_expected.to contain_ironic_config('deploy/http_root').with_value('') } + end + + context 'when overriding parameters' do + let :params do + { :http_url => 'http://foo', + :http_root => '/httpboot' } + end + + it { is_expected.to contain_ironic_config('deploy/http_url').with_value('http://foo') } + it { is_expected.to contain_ironic_config('deploy/http_root').with_value('/httpboot') } + end + + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge(OSDefaults.get_facts({ + :processorcount => 8, + :concat_basedir => '/var/lib/puppet/concat' + })) + end + it_configures 'ironic deploy utils' + end + end + +end