diff --git a/REFERENCE.md b/REFERENCE.md index 2f929fb..c3aca4c 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -128,11 +128,13 @@ The following parameters are available in the `cvmfs` class: * [`cvmfs_max_ttl`](#-cvmfs--cvmfs_max_ttl) * [`cvmfs_version`](#-cvmfs--cvmfs_version) * [`repo_base`](#-cvmfs--repo_base) +* [`repo_base_alt`](#-cvmfs--repo_base_alt) * [`repo_includepkgs`](#-cvmfs--repo_includepkgs) * [`repo_priority`](#-cvmfs--repo_priority) * [`repo_proxy`](#-cvmfs--repo_proxy) * [`repo_config_enabled`](#-cvmfs--repo_config_enabled) * [`repo_testing_enabled`](#-cvmfs--repo_testing_enabled) +* [`repo_future_enabled`](#-cvmfs--repo_future_enabled) * [`repo_gpgcheck`](#-cvmfs--repo_gpgcheck) * [`repo_gpgkey`](#-cvmfs--repo_gpgkey) * [`repo_manage`](#-cvmfs--repo_manage) @@ -394,7 +396,13 @@ Default value: `'present'` Data type: `Stdlib::Httpurl` -URL containting stable, testing and config apt or yum repositories. Default in hiera data. +URL containing stable, testing and config apt or yum repositories. Default in hiera data. + +##### `repo_base_alt` + +Data type: `Stdlib::Httpurl` + +URL containing stable, Same as repo_base, hosted on a different backend. Default in hiera data. ##### `repo_includepkgs` @@ -434,6 +442,14 @@ Should the testing repository be enabled. Default value: `false` +##### `repo_future_enabled` + +Data type: `Boolean` + +Should the future (pre-release) repository be enabled. + +Default value: `false` + ##### `repo_gpgcheck` Data type: `Boolean` diff --git a/data/family/Debian.yaml b/data/family/Debian.yaml index 25ca591..c075efb 100644 --- a/data/family/Debian.yaml +++ b/data/family/Debian.yaml @@ -1,4 +1,5 @@ --- cvmfs::repo_base: https://cvmrepo.s3.cern.ch/cvmrepo/apt +cvmfs::repo_base_alt: https://cvmrepo.web.cern.ch/cvmrepo/apt cvmfs::repo_gpgkey: https://cvmrepo.s3.cern.ch/cvmrepo/apt/cernvm.gpg diff --git a/data/family/RedHat.yaml b/data/family/RedHat.yaml index 5966007..f079907 100644 --- a/data/family/RedHat.yaml +++ b/data/family/RedHat.yaml @@ -1,6 +1,7 @@ --- cvmfs::repo_base: https://cvmrepo.s3.cern.ch/cvmrepo/yum +cvmfs::repo_base_alt: https://cvmrepo.web.cern.ch/cvmrepo/yum cvmfs::repo_gpgkey: https://cvmrepo.s3.cern.ch/cvmrepo/yum/RPM-GPG-KEY-CernVM-2048 cvmfs::repo_includepkgs: - cvmfs-keys diff --git a/manifests/apt.pp b/manifests/apt.pp index 14d6050..8e4400b 100644 --- a/manifests/apt.pp +++ b/manifests/apt.pp @@ -5,6 +5,7 @@ Stdlib::Httpurl $repo_base = $cvmfs::repo_base, Stdlib::Httpurl $repo_gpgkey = $cvmfs::repo_gpgkey, Boolean $repo_testing_enabled = $cvmfs::repo_testing_enabled, + Boolean $repo_future_enabled = $cvmfs::repo_future_enabled, Optional[Stdlib::Httpurl] $repo_proxy = $cvmfs::repo_proxy, Boolean $repo_gpgcheck = $cvmfs::repo_gpgcheck, @@ -31,4 +32,8 @@ ensure => bool2str($repo_testing_enabled,'present','absent'), release => "${facts['os']['distro']['codename']}-testing", } + apt::source { 'cvmfs-future': + ensure => bool2str($repo_future_enabled,'present','absent'), + release => "${facts['os']['distro']['codename']}-future", + } } diff --git a/manifests/init.pp b/manifests/init.pp index 7e04d14..9e989c0 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -82,12 +82,14 @@ # @param cvmfs_debuglog Create a debug log file at this location. # @param cvmfs_max_ttl Max ttl. # @param cvmfs_version Version of cvmfs to install. -# @param repo_base URL containting stable, testing and config apt or yum repositories. Default in hiera data. +# @param repo_base URL containing stable, testing and config apt or yum repositories. Default in hiera data. +# @param repo_base_alt URL containing stable, Same as repo_base, hosted on a different backend. Default in hiera data. # @param repo_includepkgs Specify an includepkgs to the yum repos to ignore other packages. # @param repo_priority Yum priority of repositories # @param repo_proxy http proxy for cvmfs yum package repository # @param repo_config_enabled Should the config yum repository be enabled # @param repo_testing_enabled Should the testing repository be enabled. +# @param repo_future_enabled Should the future (pre-release) repository be enabled. # @param repo_gpgcheck set to false to disable GPG checking # @param repo_gpgkey Set a custom GPG key for yum repos. Default in hiera data. # @param repo_manage Set to false to disable yum or apt repositories management. @@ -135,6 +137,7 @@ # class cvmfs ( Stdlib::Httpurl $repo_base, + Stdlib::Httpurl $repo_base_alt, Stdlib::Httpurl $repo_gpgkey, Variant[Undef,String] $cvmfs_http_proxy, Optional[Variant[Enum['absent'], Array[String[1]]]] $repo_includepkgs, @@ -168,6 +171,7 @@ Integer $repo_priority = 80, Boolean $repo_config_enabled = false, Boolean $repo_testing_enabled = false, + Boolean $repo_future_enabled = false, Optional[Stdlib::Httpurl] $repo_proxy = undef, Boolean $repo_gpgcheck = true, Optional[Enum['yes','no']] $cvmfs_use_geoapi = undef, diff --git a/manifests/yum.pp b/manifests/yum.pp index 30eda8b..1c8c5e6 100644 --- a/manifests/yum.pp +++ b/manifests/yum.pp @@ -3,10 +3,12 @@ # class cvmfs::yum ( Stdlib::Httpurl $repo_base = $cvmfs::repo_base, + Stdlib::Httpurl $repo_base_alt = $cvmfs::repo_base_alt, Stdlib::Httpurl $repo_gpgkey = $cvmfs::repo_gpgkey, Integer $repo_priority = $cvmfs::repo_priority, Boolean $repo_config_enabled = $cvmfs::repo_config_enabled, Boolean $repo_testing_enabled = $cvmfs::repo_testing_enabled, + Boolean $repo_future_enabled = $cvmfs::repo_future_enabled, Optional[Stdlib::Httpurl] $repo_proxy = $cvmfs::repo_proxy, Boolean $repo_gpgcheck = $cvmfs::repo_gpgcheck, Optional[Variant[Enum['absent'], Array[String[1]]]] $repo_includepkgs = $cvmfs::repo_includepkgs, @@ -38,11 +40,18 @@ } yumrepo { 'cvmfs-testing': - descr => "CVMFS yum testing repository for ${_dir}${facts['os']['release']['major']}", + descr => "CVMFS-testing yum repository for ${_dir}${facts['os']['release']['major']}. Same binaries as production repo, released earlier. Very stable.", baseurl => "${repo_base}/cvmfs-testing/${_dir}/${facts['os']['release']['major']}/${facts['os']['architecture']}", enabled => $repo_testing_enabled, } + yumrepo { 'cvmfs-future': + descr => "CVMFS-future yum repository for ${_dir}${facts['os']['release']['major']}. Tagged pre-releases. Stable.", + # note the use of repo_base_alt - this is in principle a mirror of repo_base, but prereleases are published there first + baseurl => "${repo_base_alt}/cvmfs-future/${_dir}/${facts['os']['release']['major']}/${facts['os']['architecture']}", + enabled => $repo_future_enabled, + } + yumrepo { 'cvmfs-config': descr => "CVMFS config yum repository for ${_dir}${facts['os']['release']['major']}", baseurl => "${repo_base}/cvmfs-config/${_dir}/${facts['os']['release']['major']}/${facts['os']['architecture']}", diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index 3f1ddd1..1c98244 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -120,6 +120,13 @@ ) end + it do + is_expected.to contain_yumrepo('cvmfs-future').with( + 'enabled' => false, + 'gpgcheck' => true + ) + end + it do is_expected.to contain_yumrepo('cvmfs-config').with( 'enabled' => false, @@ -165,6 +172,31 @@ end end + context 'with repo_future_enabled true' do + let(:params) do + { repo_future_enabled: true, + cvmfs_http_proxy: :undef } + end + + case facts[:os]['family'] + when 'RedHat' + it do + is_expected.to contain_yumrepo('cvmfs-future').with( + 'enabled' => true, + 'gpgcheck' => true + ) + end + else + it { + is_expected.to contain_apt__source('cvmfs-future').with( + { + 'ensure' => 'present', + } + ) + } + end + end + context 'with mount method setto autofs' do let(:params) do { mount_method: 'autofs',