Upgrade all packages after puppet managed ones

This updates tripleo::packages so that when enable_upgrade
is used it will:

 1) upgrade puppet managed packages (will trigger puppet dependencies)
 2) then upgrade all packages via exec
 3) then restart services

NOTE: the intention here is that the Exec['update-packages'] will
always execute if enable_upgrade is set. It is not idempotent
in this regard because I think we always want to execute it
if enable_upgrade is set.

Change-Id: I02f7cf07792765359f19fdf357024d9e48690e42
Related-bug: #1522943
This commit is contained in:
Dan Prince 2015-12-23 10:20:44 -05:00
parent d20f87fd07
commit 62e74d9663
2 changed files with 72 additions and 1 deletions

View File

@ -45,7 +45,26 @@ class tripleo::packages (
if $enable_upgrade {
Package <| |> { ensure => 'latest' }
case $::osfamily {
'RedHat': {
$pkg_upgrade_cmd = 'yum -y update'
}
default: {
warning('Please specify a package upgrade command for distribution.')
}
}
exec { 'package-upgrade':
command => $pkg_upgrade_cmd,
path => '/usr/bin',
}
# A resource chain to ensure the upgrade ordering we want:
# 1) upgrade puppet managed packages (will trigger puppet dependencies)
# 2) then upgrade all packages via exec
# 3) then restart services
Package <| |> -> Exec['package-upgrade'] -> Service <| |>
}
}

View File

@ -0,0 +1,52 @@
#
# Copyright (C) 2015 Red Hat Inc.
#
# 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.
require 'spec_helper'
describe 'tripleo::packages' do
shared_examples_for 'Red Hat distributions' do
let :pre_condition do
"
package{'nova-compute': ensure => present}
service{'nova-compute': ensure => 'running'}
"
end
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemmajrelease => 7,
}
end
let :params do
{
:enable_upgrade => true
}
end
it 'should contain correct upgrade ordering' do
is_expected.to contain_package('nova-compute').that_comes_before('Exec[package-upgrade]')
is_expected.to contain_exec('package-upgrade').that_comes_before('Service[nova-compute]')
is_expected.to contain_exec('package-upgrade').with(:command => 'yum -y update')
end
end
it_configures 'Red Hat distributions'
end