diff --git a/sdk_container/src/third_party/coreos-overlay/coreos/user-patches/coreos-base/afterburn/tormath1-proxmox.patch b/sdk_container/src/third_party/coreos-overlay/coreos/user-patches/coreos-base/afterburn/tormath1-proxmox.patch new file mode 100644 index 00000000000..a9791f1bca6 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/coreos/user-patches/coreos-base/afterburn/tormath1-proxmox.patch @@ -0,0 +1,126 @@ +From e6824a223057ca1379d3890ec58773f7549f6ec2 Mon Sep 17 00:00:00 2001 +From: Mathieu Tortuyaux +Date: Wed, 6 Nov 2024 14:51:42 +0100 +Subject: [PATCH 1/2] add noop provider + +Signed-off-by: Mathieu Tortuyaux +--- + src/providers/noop/mod.rs | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + create mode 100644 src/providers/noop/mod.rs + +diff --git a/src/providers/noop/mod.rs b/src/providers/noop/mod.rs +new file mode 100644 +index 0000000..c722297 +--- /dev/null ++++ b/src/providers/noop/mod.rs +@@ -0,0 +1,28 @@ ++// Copyright 2023 CoreOS, Inc. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++use anyhow::Result; ++ ++use crate::providers::MetadataProvider; ++ ++/// Noop provider ++pub struct NoopProvider {} ++ ++impl NoopProvider { ++ pub fn try_new() -> Result { ++ Ok(Self { }) ++ } ++} ++ ++impl MetadataProvider for NoopProvider {} +-- +2.44.2 + +From fce6d962436fad9c0700174c7fab99ba35d653fd Mon Sep 17 00:00:00 2001 +From: Mathieu Tortuyaux +Date: Wed, 6 Nov 2024 15:14:26 +0100 +Subject: [PATCH 2/2] proxmox: use noop provider if no configdrive + +Signed-off-by: Mathieu Tortuyaux +--- + src/metadata.rs | 4 ++-- + src/providers/mod.rs | 1 + + src/providers/proxmoxve/mod.rs | 14 ++++++++++++++ + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/src/metadata.rs b/src/metadata.rs +index 94f9238..bd311f7 100644 +--- a/src/metadata.rs ++++ b/src/metadata.rs +@@ -33,7 +33,7 @@ use crate::providers::openstack; + use crate::providers::openstack::network::OpenstackProviderNetwork; + use crate::providers::packet::PacketProvider; + use crate::providers::powervs::PowerVSProvider; +-use crate::providers::proxmoxve::ProxmoxVEConfigDrive; ++use crate::providers::proxmoxve; + use crate::providers::scaleway::ScalewayProvider; + use crate::providers::vmware::VmwareProvider; + use crate::providers::vultr::VultrProvider; +@@ -71,7 +71,7 @@ pub fn fetch_metadata(provider: &str) -> Result box_result!(OpenstackProviderNetwork::try_new()?), + "packet" => box_result!(PacketProvider::try_new()?), + "powervs" => box_result!(PowerVSProvider::try_new()?), +- "proxmoxve" => box_result!(ProxmoxVEConfigDrive::try_new()?), ++ "proxmoxve" => proxmoxve::try_config_drive_else_leave(), + "scaleway" => box_result!(ScalewayProvider::try_new()?), + "vmware" => box_result!(VmwareProvider::try_new()?), + "vultr" => box_result!(VultrProvider::try_new()?), +diff --git a/src/providers/mod.rs b/src/providers/mod.rs +index e17d551..dab07e1 100644 +--- a/src/providers/mod.rs ++++ b/src/providers/mod.rs +@@ -35,6 +35,7 @@ pub mod ibmcloud; + pub mod ibmcloud_classic; + pub mod kubevirt; + pub mod microsoft; ++pub mod noop; + pub mod openstack; + pub mod packet; + pub mod powervs; +diff --git a/src/providers/proxmoxve/mod.rs b/src/providers/proxmoxve/mod.rs +index 14146b0..a965162 100644 +--- a/src/providers/proxmoxve/mod.rs ++++ b/src/providers/proxmoxve/mod.rs +@@ -12,6 +12,11 @@ + // See the License for the specific language governing permissions and + // limitations under the License. + ++use anyhow::Result; ++use crate::providers; ++use crate::providers::noop::NoopProvider; ++use slog_scope::warn; ++ + mod configdrive; + pub use configdrive::*; + +@@ -20,3 +25,12 @@ pub use cloudconfig::*; + + #[cfg(test)] + mod tests; ++ ++pub fn try_config_drive_else_leave() -> Result> { ++ if let Ok(config_drive) = ProxmoxVEConfigDrive::try_new() { ++ Ok(Box::new(config_drive)) ++ } else { ++ warn!("failed to locate config-drive - aborting ProxmoxVE provider"); ++ Ok(Box::new(NoopProvider::try_new()?)) ++ } ++} +-- +2.44.2 +