mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-28 09:01:55 +02:00
coreos-base/afterburn: fix instance boots
Without configdrive the instance is failing to boot - this patch is currently under review on PR#1128 (coreos/afterburn) Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
This commit is contained in:
parent
6e674b26d3
commit
c1cd33684b
@ -0,0 +1,126 @@
|
|||||||
|
From e6824a223057ca1379d3890ec58773f7549f6ec2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
|
||||||
|
Date: Wed, 6 Nov 2024 14:51:42 +0100
|
||||||
|
Subject: [PATCH 1/2] add noop provider
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
|
||||||
|
---
|
||||||
|
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<NoopProvider> {
|
||||||
|
+ Ok(Self { })
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+impl MetadataProvider for NoopProvider {}
|
||||||
|
--
|
||||||
|
2.44.2
|
||||||
|
|
||||||
|
From fce6d962436fad9c0700174c7fab99ba35d653fd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
|
||||||
|
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 <mtortuyaux@microsoft.com>
|
||||||
|
---
|
||||||
|
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<dyn providers::MetadataProvi
|
||||||
|
"openstack-metadata" => 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<Box<dyn providers::MetadataProvider>> {
|
||||||
|
+ 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
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user