* [pve-devel] [PATCH proxmox-apt 0/2] fix detection for PVE
@ 2021-07-16 12:36 Fabian Ebner
2021-07-16 12:36 ` [pve-devel] [PATCH proxmox-apt 1/2] bump proxmox dependency Fabian Ebner
2021-07-16 12:36 ` [pve-devel] [PATCH proxmox-apt 2/2] standard repo detection: handle alternative URI for PVE repos Fabian Ebner
0 siblings, 2 replies; 3+ messages in thread
From: Fabian Ebner @ 2021-07-16 12:36 UTC (permalink / raw)
To: pve-devel
For PVE, the final "/pve" is in the URI is optional.
Fabian Ebner (2):
bump proxmox dependency
standard repo detection: handle alternative URI for PVE repos
Cargo.toml | 2 +-
debian/control | 8 ++---
src/repositories/repository.rs | 19 +++++-----
src/repositories/standard.rs | 42 ++++++++++++++++------
tests/repositories.rs | 14 ++++++++
tests/sources.list.d.expected/pve-alt.list | 8 +++++
tests/sources.list.d/pve-alt.list | 6 ++++
7 files changed, 75 insertions(+), 24 deletions(-)
create mode 100644 tests/sources.list.d.expected/pve-alt.list
create mode 100644 tests/sources.list.d/pve-alt.list
--
2.30.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH proxmox-apt 1/2] bump proxmox dependency
2021-07-16 12:36 [pve-devel] [PATCH proxmox-apt 0/2] fix detection for PVE Fabian Ebner
@ 2021-07-16 12:36 ` Fabian Ebner
2021-07-16 12:36 ` [pve-devel] [PATCH proxmox-apt 2/2] standard repo detection: handle alternative URI for PVE repos Fabian Ebner
1 sibling, 0 replies; 3+ messages in thread
From: Fabian Ebner @ 2021-07-16 12:36 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
Cargo.toml | 2 +-
debian/control | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
index d1ddccb..4bcf9c4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -20,5 +20,5 @@ path = "src/lib.rs"
anyhow = "1.0"
once_cell = "1.3.1"
openssl = "0.10"
-proxmox = { version = "0.11.5", features = [ "api-macro" ] }
+proxmox = { version = "0.11.6", features = [ "api-macro" ] }
serde = { version = "1.0", features = ["derive"] }
diff --git a/debian/control b/debian/control
index 1834918..2e6b63e 100644
--- a/debian/control
+++ b/debian/control
@@ -9,8 +9,8 @@ Build-Depends: debhelper (>= 12),
librust-anyhow-1+default-dev <!nocheck>,
librust-once-cell-1+default-dev (>= 1.3.1-~~) <!nocheck>,
librust-openssl-0.10+default-dev <!nocheck>,
- librust-proxmox-0.11+api-macro-dev (>= 0.11.5-~~) <!nocheck>,
- librust-proxmox-0.11+default-dev (>= 0.11.5-~~) <!nocheck>,
+ librust-proxmox-0.11+api-macro-dev (>= 0.11.6-~~) <!nocheck>,
+ librust-proxmox-0.11+default-dev (>= 0.11.6-~~) <!nocheck>,
librust-serde-1+default-dev <!nocheck>,
librust-serde-1+derive-dev <!nocheck>
Maintainer: Proxmox Support Team <support@proxmox.com>
@@ -28,8 +28,8 @@ Depends:
librust-anyhow-1+default-dev,
librust-once-cell-1+default-dev (>= 1.3.1-~~),
librust-openssl-0.10+default-dev,
- librust-proxmox-0.11+api-macro-dev (>= 0.11.5-~~),
- librust-proxmox-0.11+default-dev (>= 0.11.5-~~),
+ librust-proxmox-0.11+api-macro-dev (>= 0.11.6-~~),
+ librust-proxmox-0.11+default-dev (>= 0.11.6-~~),
librust-serde-1+default-dev,
librust-serde-1+derive-dev
Provides:
--
2.30.2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH proxmox-apt 2/2] standard repo detection: handle alternative URI for PVE repos
2021-07-16 12:36 [pve-devel] [PATCH proxmox-apt 0/2] fix detection for PVE Fabian Ebner
2021-07-16 12:36 ` [pve-devel] [PATCH proxmox-apt 1/2] bump proxmox dependency Fabian Ebner
@ 2021-07-16 12:36 ` Fabian Ebner
1 sibling, 0 replies; 3+ messages in thread
From: Fabian Ebner @ 2021-07-16 12:36 UTC (permalink / raw)
To: pve-devel
For PVE, URIs without the final "/pve" are also valid.
Reported in the community forum:
https://forum.proxmox.com/threads/pve-7-0-9-no-proxmox-ve-repository-enabled.92427/
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
src/repositories/repository.rs | 19 +++++-----
src/repositories/standard.rs | 42 ++++++++++++++++------
tests/repositories.rs | 14 ++++++++
tests/sources.list.d.expected/pve-alt.list | 8 +++++
tests/sources.list.d/pve-alt.list | 6 ++++
5 files changed, 70 insertions(+), 19 deletions(-)
create mode 100644 tests/sources.list.d.expected/pve-alt.list
create mode 100644 tests/sources.list.d/pve-alt.list
diff --git a/src/repositories/repository.rs b/src/repositories/repository.rs
index 4e1ea6e..b56ec47 100644
--- a/src/repositories/repository.rs
+++ b/src/repositories/repository.rs
@@ -271,14 +271,17 @@ impl APTRepository {
/// Checks if the repository is the one referenced by the handle.
pub fn is_referenced_repository(&self, handle: APTRepositoryHandle, product: &str) -> bool {
- let (package_type, uri, component) = handle.info(product);
-
- self.types.contains(&package_type)
- && self
- .uris
- .iter()
- .any(|self_uri| self_uri.trim_end_matches('/') == uri)
- && self.components.contains(&component)
+ let (package_type, handle_uris, component) = handle.info(product);
+
+ let mut found_uri = false;
+
+ for uri in self.uris.iter() {
+ let uri = uri.trim_end_matches('/');
+
+ found_uri = found_uri || handle_uris.iter().any(|handle_uri| handle_uri == uri);
+ }
+
+ self.types.contains(&package_type) && found_uri && self.components.contains(&component)
}
/// Check if a variant of the given suite is configured in this repository
diff --git a/src/repositories/standard.rs b/src/repositories/standard.rs
index 463e735..a287f91 100644
--- a/src/repositories/standard.rs
+++ b/src/repositories/standard.rs
@@ -163,42 +163,62 @@ impl APTRepositoryHandle {
}
}
- /// Get package type, URI and the component associated with the handle.
- pub fn info(self, product: &str) -> (APTRepositoryPackageType, String, String) {
+ /// Get package type, possible URIs and the component associated with the handle.
+ ///
+ /// The first URI is the preferred one.
+ pub fn info(self, product: &str) -> (APTRepositoryPackageType, Vec<String>, String) {
match self {
APTRepositoryHandle::Enterprise => (
APTRepositoryPackageType::Deb,
- format!("https://enterprise.proxmox.com/debian/{}", product),
+ match product {
+ "pve" => vec![
+ "https://enterprise.proxmox.com/debian/pve".to_string(),
+ "https://enterprise.proxmox.com/debian".to_string(),
+ ],
+ _ => vec![format!("https://enterprise.proxmox.com/debian/{}", product)],
+ },
format!("{}-enterprise", product),
),
APTRepositoryHandle::NoSubscription => (
APTRepositoryPackageType::Deb,
- format!("http://download.proxmox.com/debian/{}", product),
+ match product {
+ "pve" => vec![
+ "http://download.proxmox.com/debian/pve".to_string(),
+ "http://download.proxmox.com/debian".to_string(),
+ ],
+ _ => vec![format!("http://download.proxmox.com/debian/{}", product)],
+ },
format!("{}-no-subscription", product),
),
APTRepositoryHandle::Test => (
APTRepositoryPackageType::Deb,
- format!("http://download.proxmox.com/debian/{}", product),
+ match product {
+ "pve" => vec![
+ "http://download.proxmox.com/debian/pve".to_string(),
+ "http://download.proxmox.com/debian".to_string(),
+ ],
+ _ => vec![format!("http://download.proxmox.com/debian/{}", product)],
+ },
format!("{}test", product),
),
APTRepositoryHandle::CephPacific => (
APTRepositoryPackageType::Deb,
- "http://download.proxmox.com/debian/ceph-pacific".to_string(),
+ vec!["http://download.proxmox.com/debian/ceph-pacific".to_string()],
"main".to_string(),
),
APTRepositoryHandle::CephPacificTest => (
APTRepositoryPackageType::Deb,
- "http://download.proxmox.com/debian/ceph-pacific".to_string(),
+ vec!["http://download.proxmox.com/debian/ceph-pacific".to_string()],
"test".to_string(),
),
APTRepositoryHandle::CephOctopus => (
APTRepositoryPackageType::Deb,
- "http://download.proxmox.com/debian/ceph-octopus".to_string(),
+ vec!["http://download.proxmox.com/debian/ceph-octopus".to_string()],
"main".to_string(),
),
APTRepositoryHandle::CephOctopusTest => (
APTRepositoryPackageType::Deb,
- "http://download.proxmox.com/debian/ceph-octopus".to_string(),
+ vec!["http://download.proxmox.com/debian/ceph-octopus".to_string()],
"test".to_string(),
),
}
@@ -209,11 +229,11 @@ impl APTRepositoryHandle {
/// An URI in the result is not '/'-terminated (under the assumption that no valid
/// product name is).
pub fn to_repository(self, product: &str, suite: &str) -> APTRepository {
- let (package_type, uri, component) = self.info(product);
+ let (package_type, uris, component) = self.info(product);
APTRepository {
types: vec![package_type],
- uris: vec![uri],
+ uris: vec![uris.into_iter().next().unwrap()],
suites: vec![suite.to_string()],
components: vec![component],
options: vec![],
diff --git a/tests/repositories.rs b/tests/repositories.rs
index 67b0255..6435671 100644
--- a/tests/repositories.rs
+++ b/tests/repositories.rs
@@ -358,5 +358,19 @@ fn test_standard_repositories() -> Result<(), Error> {
assert_eq!(std_repos, expected);
+ let pve_alt_list = read_dir.join("pve-alt.list");
+ let mut file = APTRepositoryFile::new(&pve_alt_list)?.unwrap();
+ file.parse()?;
+
+ let file_vec = vec![file];
+
+ expected[0].status = Some(true);
+ expected[1].status = Some(true);
+ expected[2].status = Some(false);
+
+ let std_repos = standard_repositories("pve", &file_vec);
+
+ assert_eq!(std_repos, expected);
+
Ok(())
}
diff --git a/tests/sources.list.d.expected/pve-alt.list b/tests/sources.list.d.expected/pve-alt.list
new file mode 100644
index 0000000..f4834e7
--- /dev/null
+++ b/tests/sources.list.d.expected/pve-alt.list
@@ -0,0 +1,8 @@
+deb https://enterprise.proxmox.com/debian bullseye pve-enterprise
+
+deb http://download.proxmox.com/debian/ bullseye pve-no-subscription
+
+# deb http://download.proxmox.com/debian bullseye pvetest
+
+deb-src http://download.proxmox.com/debian bullseye pvetest
+
diff --git a/tests/sources.list.d/pve-alt.list b/tests/sources.list.d/pve-alt.list
new file mode 100644
index 0000000..0afd422
--- /dev/null
+++ b/tests/sources.list.d/pve-alt.list
@@ -0,0 +1,6 @@
+deb https://enterprise.proxmox.com/debian bullseye pve-enterprise
+
+deb http://download.proxmox.com/debian/ bullseye pve-no-subscription
+
+# deb http://download.proxmox.com/debian bullseye pvetest
+deb-src http://download.proxmox.com/debian bullseye pvetest
--
2.30.2
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-07-16 12:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-16 12:36 [pve-devel] [PATCH proxmox-apt 0/2] fix detection for PVE Fabian Ebner
2021-07-16 12:36 ` [pve-devel] [PATCH proxmox-apt 1/2] bump proxmox dependency Fabian Ebner
2021-07-16 12:36 ` [pve-devel] [PATCH proxmox-apt 2/2] standard repo detection: handle alternative URI for PVE repos Fabian Ebner
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal