From 6feda8b3e978a3b588d9f84d3e3776f0993c2623 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Thu, 25 Jun 2015 10:35:41 -0400 Subject: [PATCH] repo/apt: update to support apt 2.1.0 module This patcha affects how we use puppetlabs-apt on Debian & Ubuntu systems. It: * Drops 'required_packages' deprecated parameter * Installs UCA keyring package *before* adding the new repo and run apt-get update * For backward compatibility when package_require is True, make sure to not run `apt-get update` before the Package resource when manage_uca is True; because it would lead to a Circular issue. Change-Id: I772d9929bcc379a7d1515a7a76658811720897dd Closes-bug: #1468761 --- manifests/repo/debian/debian.pp | 19 +++++++++++-------- manifests/repo/debian/ubuntu.pp | 13 ++++++++----- ...penstack_extras_repo_debian_debian_spec.rb | 15 ++++++++++++--- ...penstack_extras_repo_debian_ubuntu_spec.rb | 16 +++++++++++++--- 4 files changed, 44 insertions(+), 19 deletions(-) diff --git a/manifests/repo/debian/debian.pp b/manifests/repo/debian/debian.pp index 2938519..ffd1914 100644 --- a/manifests/repo/debian/debian.pp +++ b/manifests/repo/debian/debian.pp @@ -38,22 +38,25 @@ class openstack_extras::repo::debian::debian( $package_require = false ) inherits openstack_extras::repo::debian::params { if $manage_whz { + package { 'gplhost-archive-keyring': + ensure => 'present', + name => $::openstack_extras::repo::debian::params::whz_required_packages, + } -> apt::source { $::openstack_extras::repo::debian::params::whz_name: - location => $::openstack_extras::repo::debian::params::whz_location, - release => $release, - repos => $::openstack_extras::repo::debian::params::whz_repos, - required_packages => $::openstack_extras::repo::debian::params::whz_required_packages + location => $::openstack_extras::repo::debian::params::whz_location, + release => $release, + repos => $::openstack_extras::repo::debian::params::whz_repos, } -> apt::source { "${::openstack_extras::repo::debian::params::whz_name}_backports": - location => $::openstack_extras::repo::debian::params::whz_location, - release => "${release}-backports", - repos => $::openstack_extras::repo::debian::params::whz_repos, + location => $::openstack_extras::repo::debian::params::whz_location, + release => "${release}-backports", + repos => $::openstack_extras::repo::debian::params::whz_repos, } } create_resources('apt::source', $source_hash, $source_defaults) - if $package_require { + if $package_require and ! $manage_whz { Exec['apt_update'] -> Package<||> } } diff --git a/manifests/repo/debian/ubuntu.pp b/manifests/repo/debian/ubuntu.pp index 3036be0..c50d2b7 100644 --- a/manifests/repo/debian/ubuntu.pp +++ b/manifests/repo/debian/ubuntu.pp @@ -38,17 +38,20 @@ class openstack_extras::repo::debian::ubuntu( $package_require = false ) inherits openstack_extras::repo::debian::params { if $manage_uca { + package { 'ubuntu-cloud-keyring': + ensure => 'present', + name => $::openstack_extras::repo::debian::params::uca_required_packages, + } -> apt::source { $::openstack_extras::repo::debian::params::uca_name: - location => $::openstack_extras::repo::debian::params::uca_location, - release => "${::lsbdistcodename}-updates/${release}", - repos => $::openstack_extras::repo::debian::params::uca_repos, - required_packages => $::openstack_extras::repo::debian::params::uca_required_packages + location => $::openstack_extras::repo::debian::params::uca_location, + release => "${::lsbdistcodename}-updates/${release}", + repos => $::openstack_extras::repo::debian::params::uca_repos, } } create_resources('apt::source', $source_hash, $source_defaults) - if $package_require { + if $package_require and ! $manage_uca { Exec['apt_update'] -> Package<||> } } diff --git a/spec/classes/openstack_extras_repo_debian_debian_spec.rb b/spec/classes/openstack_extras_repo_debian_debian_spec.rb index 2275b76..a9422ae 100644 --- a/spec/classes/openstack_extras_repo_debian_debian_spec.rb +++ b/spec/classes/openstack_extras_repo_debian_debian_spec.rb @@ -38,7 +38,6 @@ describe 'openstack_extras::repo::debian::debian' do :location => 'http://archive.gplhost.com/debian', :release => 'kilo', :repos => 'main', - :required_packages => 'gplhost-archive-keyring' )} it { should contain_apt__source('debian_wheezy_backports').with( @@ -47,6 +46,7 @@ describe 'openstack_extras::repo::debian::debian' do :repos => 'main' )} + it { should contain_package('gplhost-archive-keyring') } end describe 'with overridden release' do @@ -58,7 +58,6 @@ describe 'openstack_extras::repo::debian::debian' do :location => 'http://archive.gplhost.com/debian', :release => 'juno', :repos => 'main', - :required_packages => 'gplhost-archive-keyring' )} it { should contain_apt__source('debian_wheezy_backports').with( @@ -67,6 +66,15 @@ describe 'openstack_extras::repo::debian::debian' do :repos => 'main' )} + it { should contain_package('gplhost-archive-keyring') } + end + + describe 'when not managing wheezy repo' do + let :params do + default_params.merge!({ :manage_whz => false }) + end + + it { should_not contain_package('gplhost-archive-keyring') } end describe 'with overridden source hash' do @@ -102,6 +110,7 @@ describe 'openstack_extras::repo::debian::debian' do :key_server => 'pgp.mit.edu' )} + it { should contain_package('gplhost-archive-keyring') } end describe 'with overridden source default' do @@ -116,7 +125,6 @@ describe 'openstack_extras::repo::debian::debian' do :location => 'http://archive.gplhost.com/debian', :release => 'kilo', :repos => 'main', - :required_packages => 'gplhost-archive-keyring', :include_src => 'true' )} @@ -127,6 +135,7 @@ describe 'openstack_extras::repo::debian::debian' do :include_src => 'true' )} + it { should contain_package('gplhost-archive-keyring') } end end end diff --git a/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb b/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb index 5d07fde..4dff63d 100644 --- a/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb +++ b/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb @@ -39,9 +39,10 @@ describe 'openstack_extras::repo::debian::ubuntu' do :location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu', :release => 'trusty-updates/kilo', :repos => 'main', - :required_packages => 'ubuntu-cloud-keyring' )} + it { should contain_package('ubuntu-cloud-keyring') } + end describe 'with overridden release' do @@ -53,9 +54,17 @@ describe 'openstack_extras::repo::debian::ubuntu' do :location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu', :release => 'trusty-updates/juno', :repos => 'main', - :required_packages => 'ubuntu-cloud-keyring' )} + it { should contain_package('ubuntu-cloud-keyring') } + end + + describe 'when not managing UCA' do + let :params do + default_params.merge!({ :manage_uca => false }) + end + + it { should_not contain_package('ubuntu-cloud-keyring') } end describe 'with overridden source hash' do @@ -91,6 +100,7 @@ describe 'openstack_extras::repo::debian::ubuntu' do :key_server => 'pgp.mit.edu' )} + it { should contain_package('ubuntu-cloud-keyring') } end describe 'with overridden source default' do @@ -106,9 +116,9 @@ describe 'openstack_extras::repo::debian::ubuntu' do :location => 'http://ubuntu-cloud.archive.canonical.com/ubuntu', :release => 'trusty-updates/kilo', :repos => 'main', - :required_packages => 'ubuntu-cloud-keyring' )} + it { should contain_package('ubuntu-cloud-keyring') } end end end