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',