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
This commit is contained in:
Emilien Macchi 2015-06-25 10:35:41 -04:00
parent 7ab1f4544a
commit 6feda8b3e9
4 changed files with 44 additions and 19 deletions

View File

@ -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<||>
}
}

View File

@ -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<||>
}
}

View File

@ -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

View File

@ -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