public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v2 proxmox 2/5] apt: split Ceph main repository into no-subscription and enterprise
Date: Fri,  2 Jun 2023 10:48:21 +0200	[thread overview]
Message-ID: <20230602084824.54967-2-f.ebner@proxmox.com> (raw)
In-Reply-To: <20230602084824.54967-1-f.ebner@proxmox.com>

The old 'main' component stays valid, pointing to no-subscription,
which means the is_referenced_repository() check needs a special case
for it. It will eventually go away, together with the handles for
Quincy.

Alternatively, the standard repository's info() could've been changed
to return multiple possible components, similar to URLs, but as
opposed to URLs, there could be a standard repository that wants to
have multiple components and it feels a bit unnatural, because
multiple components are usually not aliases of the same. And adapting
is_referenced_repository() would be needed here too. So overall, the
above alternative just felt better.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---

Changes in v2:
    * mention that 'main' component now maps to no-subscription

 proxmox-apt/src/repositories/mod.rs        |  3 +-
 proxmox-apt/src/repositories/repository.rs | 10 +++++-
 proxmox-apt/src/repositories/standard.rs   | 36 ++++++++++++++++------
 proxmox-apt/tests/repositories.rs          |  3 +-
 4 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/proxmox-apt/src/repositories/mod.rs b/proxmox-apt/src/repositories/mod.rs
index 11f52dd..b2e83a0 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 a5e3015..ba4e8b1 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 33c4842..2cae630 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 ea714e6..4b3c9de 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),
     ];
 
-- 
2.39.2





  reply	other threads:[~2023-06-02  8:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-02  8:48 [pve-devel] [PATCH v2 proxmox 1/5] apt: drop older Ceph standard repositories Fiona Ebner
2023-06-02  8:48 ` Fiona Ebner [this message]
2023-06-02  8:48 ` [pve-devel] [PATCH v2 proxmox 3/5] apt: tests: create temporary test directories in CARGO_TARGET_TMPDIR Fiona Ebner
2023-06-02  8:48 ` [pve-devel] [PATCH v2 proxmox 4/5] apt: tests: code cleanup to avoid useless vector Fiona Ebner
2023-06-02  8:48 ` [pve-devel] [PATCH v2 proxmox 5/5] apt: tests: add tests for Ceph Quincy repository detection on Bookworm Fiona Ebner
2023-06-04 16:54 ` [pve-devel] applied: [PATCH v2 proxmox 1/5] apt: drop older Ceph standard repositories Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230602084824.54967-2-f.ebner@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal