Skip to content

Commit

Permalink
Merge pull request #1783 from flatcar/kai/proxmox-support
Browse files Browse the repository at this point in the history
OEM: Provide Proxmox images
  • Loading branch information
tormath1 authored Nov 12, 2024
2 parents f708975 + c1cd336 commit c80760c
Show file tree
Hide file tree
Showing 13 changed files with 162 additions and 3 deletions.
9 changes: 9 additions & 0 deletions build_library/vm_image_util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ VALID_IMG_TYPES=(
openstack_mini
packet
parallels
proxmoxve
pxe
qemu_uefi
rackspace
Expand Down Expand Up @@ -57,6 +58,7 @@ VALID_OEM_PACKAGES=(
kubevirt
openstack
packet
proxmoxve
qemu
rackspace
rackspace-onmetal
Expand Down Expand Up @@ -332,6 +334,13 @@ IMG_akamai_OEM_PACKAGE=common-oem-files
IMG_akamai_OEM_USE=akamai
IMG_akamai_OEM_SYSEXT=oem-akamai

# proxmoxve
IMG_proxmoxve_DISK_FORMAT=qcow2
IMG_proxmoxve_DISK_LAYOUT=vm
IMG_proxmoxve_OEM_PACKAGE=common-oem-files
IMG_proxmoxve_OEM_USE=proxmoxve
IMG_proxmoxve_OEM_SYSEXT=oem-proxmoxve

###########################################################

# Print the default vm type for the specified board
Expand Down
1 change: 1 addition & 0 deletions changelog/changes/2024-10-24-proxmoxve.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Added Proxmox Virtual Environment images ([scripts#1783](https://github.com/flatcar/scripts/pull/1783))
2 changes: 1 addition & 1 deletion ci-automation/vms.sh
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ function _vm_build_impl() {
COMPRESSION_FORMAT="bz2,none"
elif [[ "${format}" =~ ^(hyperv|hyperv_vhdx)$ ]];then
COMPRESSION_FORMAT="zip"
elif [[ "${format}" =~ ^(scaleway|kubevirt)$ ]];then
elif [[ "${format}" =~ ^(scaleway|kubevirt|proxmoxve)$ ]];then
COMPRESSION_FORMAT="none"
elif [[ "${format}" =~ ^(akamai)$ ]];then
COMPRESSION_FORMAT="gz"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ ConditionKernelCommandLine=|flatcar.oem.id=kubevirt

ConditionKernelCommandLine=|flatcar.oem.id=akamai

ConditionKernelCommandLine=|flatcar.oem.id=proxmoxve

Description=Flatcar Metadata Agent

[Service]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ COMMON_OEMIDS=(
hetzner
openstack
packet
proxmoxve
qemu
scaleway
kubevirt
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
set linux_append="flatcar.autologin"
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ EGIT_REPO_URI="https://github.com/flatcar/init.git"
if [[ "${PV}" == 9999 ]]; then
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
else
EGIT_COMMIT="05b4b2aafbe706bdd65265c7a7103ed75fee14d2" # flatcar-master
EGIT_COMMIT="b5a6cbcfaabe605e28e075b8ac674edaf576a0eb" # flatcar-master
KEYWORDS="amd64 arm arm64 x86"
fi

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Copyright (c) 2013 CoreOS, Inc.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI=8

DESCRIPTION="OEM suite for Proxmox VE"
HOMEPAGE="https://www.proxmox.com/en/proxmox-virtual-environment/"
SRC_URI=""

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 arm64"
IUSE=""

OEM_NAME="Proxmox VE"
Original file line number Diff line number Diff line change
@@ -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

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ EGIT_REPO_URI="https://github.com/flatcar/bootengine.git"
if [[ "${PV}" == 9999 ]]; then
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
else
EGIT_COMMIT="f3c80fb02fe65dd3be2b0bb4727fc10985acfa9d" # flatcar-master
EGIT_COMMIT="c9de038b73621165f81573c77ca0d0c2f9e886db" # flatcar-master
KEYWORDS="amd64 arm arm64 x86"
fi

Expand Down

0 comments on commit c80760c

Please sign in to comment.