From 2b88d9219eb75c1bec1dd3301c147c562bde0834 Mon Sep 17 00:00:00 2001 From: Dmitry Tantsur Date: Fri, 24 Nov 2017 13:23:14 +0100 Subject: [PATCH] Add ironic::drivers::staging to install ironic-staging-drivers Change-Id: Ibef8f33f306b9d3b598698345ce3b0978f62a2ad Partially-Implements: blueprint ovirt-driver --- manifests/drivers/staging.pp | 24 ++++++++ manifests/params.pp | 3 + .../staging-drivers-a44cc0fbec155897.yaml | 5 ++ spec/classes/ironic_drivers_staging_spec.rb | 59 +++++++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 manifests/drivers/staging.pp create mode 100644 releasenotes/notes/staging-drivers-a44cc0fbec155897.yaml create mode 100644 spec/classes/ironic_drivers_staging_spec.rb diff --git a/manifests/drivers/staging.pp b/manifests/drivers/staging.pp new file mode 100644 index 00000000..b8abbc0d --- /dev/null +++ b/manifests/drivers/staging.pp @@ -0,0 +1,24 @@ +# Class ironic::drivers::staging +# +# Manages the ironic-staging-drivers package on systems +# +# === Parameters: +# +# [*package_ensure*] +# (optional) The state of the package +# Defaults to present +# +class ironic::drivers::staging ( + $package_ensure = present +) { + + include ::ironic::deps + include ::ironic::params + + package { 'ironic-staging-drivers': + ensure => $package_ensure, + name => $::ironic::params::staging_drivers_package, + tag => ['openstack', 'ironic-support-package'], + } + +} diff --git a/manifests/params.pp b/manifests/params.pp index e1b2c172..76f09364 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -40,6 +40,7 @@ class ironic::params { $inspector_package = 'openstack-ironic-inspector' $inspector_service = 'openstack-ironic-inspector' $inspector_dnsmasq_service = 'openstack-ironic-inspector-dnsmasq' + $staging_drivers_package = 'openstack-ironic-staging-drivers' $ipxe_rom_dir = '/usr/share/ipxe' $ironic_wsgi_script_path = '/var/www/cgi-bin/ironic' $ironic_wsgi_script_source = '/usr/lib/python2.7/site-packages/ironic/api/app.wsgi' @@ -61,6 +62,8 @@ class ironic::params { # https://packages.debian.org/source/experimental/ironic-inspector # this should be changed to whatever debian will use for dnsmasq $inspector_dnsmasq_service = 'ironic-inspector-dnsmasq' + # guessing the name, ironic-staging-drivers is not packaged in debian yet + $staging_drivers_package = 'ironic-staging-drivers' $ipxe_rom_dir = '/usr/lib/ipxe' $ironic_wsgi_script_path = '/usr/lib/cgi-bin/ironic' $ironic_wsgi_script_source = '/usr/lib/python2.7/dist-packages/ironic/api/app.wsgi' diff --git a/releasenotes/notes/staging-drivers-a44cc0fbec155897.yaml b/releasenotes/notes/staging-drivers-a44cc0fbec155897.yaml new file mode 100644 index 00000000..9b49dba5 --- /dev/null +++ b/releasenotes/notes/staging-drivers-a44cc0fbec155897.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Add support for installing the ``ironic-staging-drivers`` package via + the new ``ironic::drivers::staging`` manifest. diff --git a/spec/classes/ironic_drivers_staging_spec.rb b/spec/classes/ironic_drivers_staging_spec.rb new file mode 100644 index 00000000..1aa239ef --- /dev/null +++ b/spec/classes/ironic_drivers_staging_spec.rb @@ -0,0 +1,59 @@ +# 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::staging +# +require 'spec_helper' + +describe 'ironic::drivers::staging' do + + let :params do + {} + end + + let :default_params do + { :package_ensure => 'present' } + end + + shared_examples_for 'ironic-staging-drivers' do + let :p do + default_params.merge(params) + end + + it { is_expected.to contain_class('ironic::deps') } + it { is_expected.to contain_class('ironic::params') } + + it 'installs ironic-staging-drivers package' do + is_expected.to contain_package('ironic-staging-drivers').with( + :ensure => 'present', + :name => 'openstack-ironic-staging-drivers', + :tag => ['openstack', 'ironic-support-package'], + ) + end + end + + # TODO: use OSDefaults.get_supported_os when ironic-staging-drivers is + # packaged for Debian and Ubuntu + on_supported_os({ + :supported_os => [ { 'operatingsystem' => 'CentOS', + 'operatingsystemrelease' => [ '7' ] } ] + }).each do |os,facts| + context "on #{os}" do + let (:facts) do + facts.merge!(OSDefaults.get_facts()) + end + + it_configures 'ironic-staging-drivers' + end + end + +end