diff --git a/proxmox-apt/src/repositories/mod.rs b/proxmox-apt/src/repositories/mod.rs index 11f52dd2..b2e83a0c 100644 --- a/proxmox-apt/src/repositories/mod.rs +++ b/proxmox-apt/src/repositories/mod.rs @@ -90,7 +90,8 @@ pub fn standard_repositories( if product == "pve" { result.append(&mut vec![ - APTStandardRepository::from(APTRepositoryHandle::CephQuincy), + APTStandardRepository::from(APTRepositoryHandle::CephQuincyEnterprise), + APTStandardRepository::from(APTRepositoryHandle::CephQuincyNoSubscription), APTStandardRepository::from(APTRepositoryHandle::CephQuincyTest), ]); } diff --git a/proxmox-apt/src/repositories/repository.rs b/proxmox-apt/src/repositories/repository.rs index a5e3015f..ba4e8b1d 100644 --- a/proxmox-apt/src/repositories/repository.rs +++ b/proxmox-apt/src/repositories/repository.rs @@ -285,11 +285,19 @@ impl APTRepository { found_uri = found_uri || handle_uris.iter().any(|handle_uri| handle_uri == uri); } + // In the past it was main instead of enterprise/no-subscription, and main now maps to + // no-subscription. Note this only applies for Quincy. + let found_component = if handle == APTRepositoryHandle::CephQuincyNoSubscription { + self.components.contains(&component) || self.components.contains(&"main".to_string()) + } else { + self.components.contains(&component) + }; + self.types.contains(&package_type) && found_uri // using contains would require a &String && self.suites.iter().any(|self_suite| self_suite == suite) - && self.components.contains(&component) + && found_component } /// Guess the origin from the repository's URIs. diff --git a/proxmox-apt/src/repositories/standard.rs b/proxmox-apt/src/repositories/standard.rs index 33c48420..2cae630f 100644 --- a/proxmox-apt/src/repositories/standard.rs +++ b/proxmox-apt/src/repositories/standard.rs @@ -46,8 +46,10 @@ pub enum APTRepositoryHandle { NoSubscription, /// The test repository. Test, - /// Ceph Quincy repository. - CephQuincy, + /// Ceph Quincy enterprise repository. + CephQuincyEnterprise, + /// Ceph Quincy no-subscription repository. + CephQuincyNoSubscription, /// Ceph Quincy test repository. CephQuincyTest, } @@ -71,7 +73,8 @@ impl TryFrom<&str> for APTRepositoryHandle { "enterprise" => Ok(APTRepositoryHandle::Enterprise), "no-subscription" => Ok(APTRepositoryHandle::NoSubscription), "test" => Ok(APTRepositoryHandle::Test), - "ceph-quincy" => Ok(APTRepositoryHandle::CephQuincy), + "ceph-quincy-enterprise" => Ok(APTRepositoryHandle::CephQuincyEnterprise), + "ceph-quincy-no-subscription" => Ok(APTRepositoryHandle::CephQuincyNoSubscription), "ceph-quincy-test" => Ok(APTRepositoryHandle::CephQuincyTest), _ => bail!("unknown repository handle '{}'", string), } @@ -84,7 +87,8 @@ impl Display for APTRepositoryHandle { APTRepositoryHandle::Enterprise => write!(f, "enterprise"), APTRepositoryHandle::NoSubscription => write!(f, "no-subscription"), APTRepositoryHandle::Test => write!(f, "test"), - APTRepositoryHandle::CephQuincy => write!(f, "ceph-quincy"), + APTRepositoryHandle::CephQuincyEnterprise => write!(f, "ceph-quincy-enterprise"), + APTRepositoryHandle::CephQuincyNoSubscription => write!(f, "ceph-quincy-no-subscription"), APTRepositoryHandle::CephQuincyTest => write!(f, "ceph-quincy-test"), } } @@ -107,8 +111,13 @@ impl APTRepositoryHandle { "This repository contains the latest packages and is primarily used for test labs \ and by developers to test new features." } - APTRepositoryHandle::CephQuincy => { - "This repository holds the main Proxmox Ceph Quincy packages." + APTRepositoryHandle::CephQuincyEnterprise => { + "This repository holds the production-ready Proxmox Ceph Quincy packages." + } + APTRepositoryHandle::CephQuincyNoSubscription => { + "This repository holds the Proxmox Ceph Quincy packages intended for \ + non-production use. The deprecated 'main' repository is an alias for this in \ + Proxmox VE 8." } APTRepositoryHandle::CephQuincyTest => { "This repository contains the Ceph Quincy packages before they are moved to the \ @@ -124,7 +133,8 @@ impl APTRepositoryHandle { APTRepositoryHandle::Enterprise => "Enterprise", APTRepositoryHandle::NoSubscription => "No-Subscription", APTRepositoryHandle::Test => "Test", - APTRepositoryHandle::CephQuincy => "Ceph Quincy", + APTRepositoryHandle::CephQuincyEnterprise => "Ceph Quincy Enterprise", + APTRepositoryHandle::CephQuincyNoSubscription => "Ceph Quincy No-Subscription", APTRepositoryHandle::CephQuincyTest => "Ceph Quincy Test", } .to_string() @@ -138,7 +148,8 @@ impl APTRepositoryHandle { } APTRepositoryHandle::NoSubscription => "/etc/apt/sources.list".to_string(), APTRepositoryHandle::Test => "/etc/apt/sources.list".to_string(), - APTRepositoryHandle::CephQuincy => "/etc/apt/sources.list.d/ceph.list".to_string(), + APTRepositoryHandle::CephQuincyEnterprise => "/etc/apt/sources.list.d/ceph.list".to_string(), + APTRepositoryHandle::CephQuincyNoSubscription => "/etc/apt/sources.list.d/ceph.list".to_string(), APTRepositoryHandle::CephQuincyTest => "/etc/apt/sources.list.d/ceph.list".to_string(), } } @@ -181,10 +192,15 @@ impl APTRepositoryHandle { }, format!("{}test", product), ), - APTRepositoryHandle::CephQuincy => ( + APTRepositoryHandle::CephQuincyEnterprise => ( + APTRepositoryPackageType::Deb, + vec!["https://enterprise.proxmox.com/debian/ceph-quincy".to_string()], + "enterprise".to_string(), + ), + APTRepositoryHandle::CephQuincyNoSubscription => ( APTRepositoryPackageType::Deb, vec!["http://download.proxmox.com/debian/ceph-quincy".to_string()], - "main".to_string(), + "no-subscription".to_string(), ), APTRepositoryHandle::CephQuincyTest => ( APTRepositoryPackageType::Deb, diff --git a/proxmox-apt/tests/repositories.rs b/proxmox-apt/tests/repositories.rs index ea714e65..4b3c9de5 100644 --- a/proxmox-apt/tests/repositories.rs +++ b/proxmox-apt/tests/repositories.rs @@ -362,7 +362,8 @@ fn test_standard_repositories() -> Result<(), Error> { APTStandardRepository::from(APTRepositoryHandle::Enterprise), APTStandardRepository::from(APTRepositoryHandle::NoSubscription), APTStandardRepository::from(APTRepositoryHandle::Test), - APTStandardRepository::from(APTRepositoryHandle::CephQuincy), + APTStandardRepository::from(APTRepositoryHandle::CephQuincyEnterprise), + APTStandardRepository::from(APTRepositoryHandle::CephQuincyNoSubscription), APTStandardRepository::from(APTRepositoryHandle::CephQuincyTest), ];