Compare commits

..

No commits in common. "main" and "v0.4.0" have entirely different histories.
main ... v0.4.0

18 changed files with 87 additions and 226 deletions

2
.github/CODEOWNERS vendored
View File

@ -1,2 +0,0 @@
# wasmCloud operator maintainers
* @wasmCloud/operator-maintainers

View File

@ -86,15 +86,6 @@ jobs:
type=sha,prefix= type=sha,prefix=
type=semver,pattern={{version}} type=semver,pattern={{version}}
- name: Extract metadata (tags, labels) for Docker
id: meta_wolfi
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,prefix=,suffix=-wolfi
type=semver,pattern={{version}},suffix=-wolfi
- name: Load artifacts - name: Load artifacts
uses: actions/download-artifact@v4 uses: actions/download-artifact@v4
with: with:
@ -115,14 +106,3 @@ jobs:
labels: ${{ steps.meta.outputs.labels }} labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
build-args: "BIN_PATH=artifacts/wasmcloud-operator" build-args: "BIN_PATH=artifacts/wasmcloud-operator"
- name: Build and push Docker image (wolfi)
uses: docker/build-push-action@v6
with:
push: true
context: .
file: './Dockerfile.wolfi'
tags: ${{ steps.meta_wolfi.outputs.tags }}
labels: ${{ steps.meta_wolfi.outputs.labels }}
platforms: linux/amd64,linux/arm64
build-args: "BIN_PATH=artifacts/wasmcloud-operator"

View File

@ -32,12 +32,12 @@ jobs:
# Used by helm chart-testing below # Used by helm chart-testing below
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5.6.0 uses: actions/setup-python@v5.1.1
with: with:
python-version: '3.12.2' python-version: '3.12.2'
- name: Set up chart-testing - name: Set up chart-testing
uses: helm/chart-testing-action@v2.7.0 uses: helm/chart-testing-action@v2.6.1
with: with:
version: v3.10.1 version: v3.10.1
yamllint_version: 1.35.1 yamllint_version: 1.35.1
@ -48,7 +48,7 @@ jobs:
ct lint --config charts/wasmcloud-operator/ct.yaml ct lint --config charts/wasmcloud-operator/ct.yaml
- name: Create kind cluster - name: Create kind cluster
uses: helm/kind-action@v1.12.0 uses: helm/kind-action@v1.10.0
with: with:
version: "v0.22.0" version: "v0.22.0"

66
Cargo.lock generated
View File

@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo. # This file is automatically @generated by Cargo.
# It is not intended for manual editing. # It is not intended for manual editing.
version = 4 version = 3
[[package]] [[package]]
name = "addr2line" name = "addr2line"
@ -974,9 +974,9 @@ dependencies = [
[[package]] [[package]]
name = "handlebars" name = "handlebars"
version = "5.1.2" version = "5.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d08485b96a0e6393e9e4d1b8d48cf74ad6c063cd905eb33f42c1ce3f0377539b" checksum = "ab283476b99e66691dee3f1640fea91487a8d81f50fb5ecc75538f8f8879a1e4"
dependencies = [ dependencies = [
"log", "log",
"pest", "pest",
@ -1037,9 +1037,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]] [[package]]
name = "hermit-abi" name = "hermit-abi"
version = "0.3.9" version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
[[package]] [[package]]
name = "hex" name = "hex"
@ -1580,14 +1580,13 @@ dependencies = [
[[package]] [[package]]
name = "mio" name = "mio"
version = "1.0.2" version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
dependencies = [ dependencies = [
"hermit-abi",
"libc", "libc",
"wasi", "wasi",
"windows-sys 0.52.0", "windows-sys 0.48.0",
] ]
[[package]] [[package]]
@ -1760,6 +1759,16 @@ dependencies = [
"autocfg", "autocfg",
] ]
[[package]]
name = "num_cpus"
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
dependencies = [
"hermit-abi",
"libc",
]
[[package]] [[package]]
name = "object" name = "object"
version = "0.32.1" version = "0.32.1"
@ -2459,9 +2468,9 @@ dependencies = [
[[package]] [[package]]
name = "schemars" name = "schemars"
version = "0.8.22" version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c"
dependencies = [ dependencies = [
"dyn-clone", "dyn-clone",
"schemars_derive", "schemars_derive",
@ -2471,14 +2480,14 @@ dependencies = [
[[package]] [[package]]
name = "schemars_derive" name = "schemars_derive"
version = "0.8.22" version = "0.8.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"serde_derive_internals", "serde_derive_internals",
"syn 2.0.38", "syn 1.0.109",
] ]
[[package]] [[package]]
@ -2580,13 +2589,13 @@ dependencies = [
[[package]] [[package]]
name = "serde_derive_internals" name = "serde_derive_internals"
version = "0.29.0" version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.38", "syn 1.0.109",
] ]
[[package]] [[package]]
@ -2644,9 +2653,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_yaml" name = "serde_yaml"
version = "0.9.29" version = "0.9.25"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a15e0ef66bf939a7c890a0bf6d5a733c70202225f9888a89ed5c62298b019129" checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574"
dependencies = [ dependencies = [
"indexmap 2.0.2", "indexmap 2.0.2",
"itoa", "itoa",
@ -2939,20 +2948,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.42.1" version = "1.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2209a14885b74764cce87ffa777ffa1b8ce81a3f3166c6f886b83337fe7e077f" checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"bytes", "bytes",
"libc", "libc",
"mio", "mio",
"num_cpus",
"parking_lot", "parking_lot",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"socket2 0.5.6", "socket2 0.5.6",
"tokio-macros", "tokio-macros",
"windows-sys 0.52.0", "windows-sys 0.48.0",
] ]
[[package]] [[package]]
@ -2967,9 +2977,9 @@ dependencies = [
[[package]] [[package]]
name = "tokio-macros" name = "tokio-macros"
version = "2.4.0" version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -3381,9 +3391,9 @@ dependencies = [
[[package]] [[package]]
name = "uuid" name = "uuid"
version = "1.12.1" version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
dependencies = [ dependencies = [
"getrandom", "getrandom",
"serde", "serde",
@ -3707,7 +3717,7 @@ dependencies = [
[[package]] [[package]]
name = "wasmcloud-operator" name = "wasmcloud-operator"
version = "0.5.0" version = "0.4.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-nats", "async-nats",
@ -3747,7 +3757,7 @@ dependencies = [
[[package]] [[package]]
name = "wasmcloud-operator-types" name = "wasmcloud-operator-types"
version = "0.1.9" version = "0.1.7"
dependencies = [ dependencies = [
"k8s-openapi", "k8s-openapi",
"kube", "kube",

View File

@ -1,6 +1,6 @@
[package] [package]
name = "wasmcloud-operator" name = "wasmcloud-operator"
version = "0.5.0" version = "0.4.0"
edition = "2021" edition = "2021"
[[bin]] [[bin]]
@ -77,7 +77,7 @@ opentelemetry_sdk = { version = "0.21", features = [
"metrics", "metrics",
"trace", "trace",
"rt-tokio", "rt-tokio",
] } ]}
opentelemetry-otlp = { version = "0.14", features = ["tokio"] } opentelemetry-otlp = { version = "0.14", features = ["tokio"] }
rcgen = "0.11" rcgen = "0.11"
schemars = "0.8" schemars = "0.8"

View File

@ -1,7 +0,0 @@
# syntax=docker/dockerfile:1
FROM chainguard/wolfi-base:latest
ARG BIN_PATH
ARG TARGETARCH
COPY ${BIN_PATH}-${TARGETARCH} /usr/local/bin/wasmcloud-operator
ENTRYPOINT ["/usr/local/bin/wasmcloud-operator"]

View File

@ -1,22 +0,0 @@
# MAINTAINERS
The following individuals are responsible for reviewing code, managing issues, and ensuring the overall quality of `wasmcloud-operator`.
## @wasmCloud/operator-maintainers
Name: Joonas Bergius
GitHub: @joonas
Organization: Cosmonic
Name: Dan Norris
GitHub: @protochron
Organization: Cosmonic
Name: Taylor Thomas
GitHub: @thomastaylor312
Organization: Cosmonic
Name: Lucas Fontes
GitHub: @lxfontes
Organization: Cosmonic

View File

@ -1,3 +0,0 @@
# Reporting a security issue
Please refer to the [wasmCloud Security Process and Policy](https://github.com/wasmCloud/wasmCloud/blob/main/SECURITY.md) for details on how to report security issues and vulnerabilities.

View File

@ -7,10 +7,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes # This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version. # to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/) # Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.6 version: 0.1.4
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes. # It is recommended to use it with quotes.
appVersion: "0.4.0" appVersion: "0.3.2"

View File

@ -43,15 +43,10 @@ Common labels
{{- define "wasmcloud-operator.labels" -}} {{- define "wasmcloud-operator.labels" -}}
helm.sh/chart: {{ include "wasmcloud-operator.chart" . }} helm.sh/chart: {{ include "wasmcloud-operator.chart" . }}
{{ include "wasmcloud-operator.selectorLabels" . }} {{ include "wasmcloud-operator.selectorLabels" . }}
app.kubernetes.io/component: operator
{{- if .Chart.AppVersion }} {{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }} {{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/part-of: wasmcloud-operator
{{- with .Values.additionalLabels }}
{{ . | toYaml }}
{{- end }}
{{- end }} {{- end }}
{{/* {{/*

View File

@ -12,9 +12,6 @@ imagePullSecrets: []
nameOverride: "" nameOverride: ""
fullnameOverride: "" fullnameOverride: ""
additionalLabels: {}
# app: wasmcloud-operator
serviceAccount: serviceAccount:
# Specifies whether a service account should be created # Specifies whether a service account should be created
create: true create: true

View File

@ -1,16 +1,11 @@
[package] [package]
name = "wasmcloud-operator-types" name = "wasmcloud-operator-types"
version = "0.1.9" version = "0.1.7"
edition = "2021" edition = "2021"
[package.metadata.cargo-machete]
# NOTE: This exists because kube-derive needs it, and for reasons I don't
# fully understand, it's not coming through kube-derive's own depedendencies.
ignored = ["serde_json"]
[dependencies] [dependencies]
k8s-openapi = { workspace = true } k8s-openapi = {workspace = true}
kube = { workspace = true, features = ["derive"] } kube = {workspace = true, features = ["derive"]}
schemars = { workspace = true } schemars = {workspace = true}
serde = { workspace = true } serde = {workspace = true}
serde_json = { workspace = true } serde_json = {workspace = true}

View File

@ -1,4 +1,4 @@
use k8s_openapi::api::core::v1::{Container, PodSpec, ResourceRequirements, Volume}; use k8s_openapi::api::core::v1::{PodSpec, ResourceRequirements, Volume};
use kube::CustomResource; use kube::CustomResource;
use schemars::{gen::SchemaGenerator, schema::Schema, JsonSchema}; use schemars::{gen::SchemaGenerator, schema::Schema, JsonSchema};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
@ -82,8 +82,6 @@ pub struct WasmCloudHostConfigSpec {
pub certificates: Option<WasmCloudHostCertificates>, pub certificates: Option<WasmCloudHostCertificates>,
/// wasmCloud secrets topic prefix, must not be empty if set. /// wasmCloud secrets topic prefix, must not be empty if set.
pub secrets_topic_prefix: Option<String>, pub secrets_topic_prefix: Option<String>,
/// Maximum memory in bytes that components can use.
pub max_linear_memory_bytes: Option<u32>,
} }
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
@ -104,23 +102,9 @@ pub struct KubernetesSchedulingOptions {
/// https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for valid /// https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ for valid
/// values to use here. /// values to use here.
pub resources: Option<WasmCloudHostConfigResources>, pub resources: Option<WasmCloudHostConfigResources>,
/// Any other pod template spec options to set for the underlying wasmCloud host pods.
#[schemars(schema_with = "pod_schema")] #[schemars(schema_with = "pod_schema")]
#[serde(default, skip_serializing_if = "Option::is_none")] /// Any other pod template spec options to set for the underlying wasmCloud host pods.
pub pod_template_additions: Option<PodSpec>, pub pod_template_additions: Option<PodSpec>,
/// Allow for customization of either the wasmcloud or nats leaf container inside of the wasmCloud host pod.
pub container_template_additions: Option<ContainerTemplateAdditions>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct ContainerTemplateAdditions {
#[schemars(schema_with = "container_schema")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub nats: Option<Container>,
#[schemars(schema_with = "container_schema")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub wasmcloud: Option<Container>,
} }
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)] #[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
@ -179,24 +163,6 @@ fn pod_schema(_gen: &mut SchemaGenerator) -> Schema {
val.schema.into() val.schema.into()
} }
/// This is a workaround for the fact that we can't override the Container schema to make name
/// an optional field. It generates the OpenAPI schema for the Container type the same way that
/// kube.rs does while dropping any required fields.
fn container_schema(_gen: &mut SchemaGenerator) -> Schema {
let gen = schemars::gen::SchemaSettings::openapi3()
.with(|s| {
s.inline_subschemas = true;
s.meta_schema = None;
})
.with_visitor(kube::core::schema::StructuralSchemaRewriter)
.into_generator();
let mut val = gen.into_root_schema_for::<Container>();
// Drop `name` as a required field as it will be filled in from container
// definition coming the controller that this configuration gets merged into.
val.schema.object.as_mut().unwrap().required = BTreeSet::new();
val.schema.into()
}
fn default_host_replicas() -> u32 { fn default_host_replicas() -> u32 {
1 1
} }

View File

@ -15,7 +15,7 @@ spec:
spec: spec:
serviceAccountName: wasmcloud-operator serviceAccountName: wasmcloud-operator
containers: containers:
- image: ghcr.io/wasmcloud/wasmcloud-operator:0.5.0 - image: ghcr.io/wasmcloud/wasmcloud-operator:0.3.2
imagePullPolicy: Always imagePullPolicy: Always
name: wasmcloud-operator name: wasmcloud-operator
ports: ports:

View File

@ -71,8 +71,6 @@ spec:
# Optional: Subject prefix that will be used by the host to query for wasmCloud Secrets. # Optional: Subject prefix that will be used by the host to query for wasmCloud Secrets.
# See https://wasmcloud.com/docs/concepts/secrets for more context # See https://wasmcloud.com/docs/concepts/secrets for more context
secretsTopicPrefix: "wasmcloud.secrets" secretsTopicPrefix: "wasmcloud.secrets"
# Optional: The maximum amount of memory bytes that a component can allocate.
maxLinearMemoryBytes: 20000000
# Optional: Additional options to control how the underlying wasmCloud hosts are scheduled in Kubernetes. # Optional: Additional options to control how the underlying wasmCloud hosts are scheduled in Kubernetes.
# This includes setting resource requirements for the nats and wasmCloud host # This includes setting resource requirements for the nats and wasmCloud host
# containers along with any additional pot template settings. # containers along with any additional pot template settings.

View File

@ -19,9 +19,9 @@ spec:
image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0 image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0
traits: traits:
# Govern the spread/scheduling of the component # Govern the spread/scheduling of the component
- type: daemonscaler - type: spreadscaler
properties: properties:
replicas: 100 replicas: 1
# Add a capability provider that enables HTTP access # Add a capability provider that enables HTTP access
- name: httpserver - name: httpserver
@ -30,11 +30,9 @@ spec:
image: ghcr.io/wasmcloud/http-server:0.21.0 image: ghcr.io/wasmcloud/http-server:0.21.0
traits: traits:
# Establish a unidirectional link from this http server provider (the "source") # Establish a unidirectional link from this http server provider (the "source")
# to the `http-component` component (the "target") so the component can handle incoming HTTP requests. # to the `http-component` component (the "target") so the component can handle incoming HTTP requests,
# #
# The source (this provider) is configured such that the HTTP server listens on 0.0.0.0:8000. # The source (this provider) is configured such that the HTTP server listens on 127.0.0.1:8080
# When running the application on Kubernetes with the wasmCloud operator, you can change the
# port but the address must be 0.0.0.0.
- type: link - type: link
properties: properties:
target: http-component target: http-component
@ -44,10 +42,4 @@ spec:
source_config: source_config:
- name: default-http - name: default-http
properties: properties:
address: 0.0.0.0:8000 address: 127.0.0.1:8080
# When running the application on Kubernetes with the wasmCloud operator,
# the operator automatically creates a Kubernetes service for applications that use
# the httpserver provider with a daemonscaler.
- type: daemonscaler
properties:
replicas: 1

View File

@ -13,7 +13,6 @@ use k8s_openapi::api::core::v1::{
}; };
use k8s_openapi::api::rbac::v1::{PolicyRule, Role, RoleBinding, RoleRef, Subject}; use k8s_openapi::api::rbac::v1::{PolicyRule, Role, RoleBinding, RoleRef, Subject};
use k8s_openapi::apimachinery::pkg::apis::meta::v1::LabelSelector; use k8s_openapi::apimachinery::pkg::apis::meta::v1::LabelSelector;
use k8s_openapi::DeepMerge;
use kube::{ use kube::{
api::{Api, ObjectMeta, Patch, PatchParams}, api::{Api, ObjectMeta, Patch, PatchParams},
client::Client as KubeClient, client::Client as KubeClient,
@ -382,14 +381,6 @@ async fn pod_template(config: &WasmCloudHostConfig, ctx: Arc<Context>) -> Result
}) })
} }
if let Some(max_linear_memory_bytes) = &config.spec.max_linear_memory_bytes {
wasmcloud_env.push(EnvVar {
name: "WASMCLOUD_MAX_LINEAR_MEMORY".to_string(),
value: Some(max_linear_memory_bytes.to_string()),
..Default::default()
})
}
let mut wasmcloud_args = configure_observability(&config.spec); let mut wasmcloud_args = configure_observability(&config.spec);
let mut nats_resources: Option<k8s_openapi::api::core::v1::ResourceRequirements> = None; let mut nats_resources: Option<k8s_openapi::api::core::v1::ResourceRequirements> = None;
@ -547,7 +538,7 @@ async fn pod_template(config: &WasmCloudHostConfig, ctx: Arc<Context>) -> Result
}); });
} }
let mut containers = vec![ let containers = vec![
Container { Container {
name: "nats-leaf".to_string(), name: "nats-leaf".to_string(),
image: Some(leaf_image), image: Some(leaf_image),
@ -587,22 +578,6 @@ async fn pod_template(config: &WasmCloudHostConfig, ctx: Arc<Context>) -> Result
}, },
]; ];
if let Some(cta) = &config
.spec
.scheduling_options
.as_ref()
.and_then(|so| so.container_template_additions.clone())
{
if let Some(mut nats_container) = cta.nats.clone() {
nats_container.merge_from(containers[0].clone());
containers[0] = nats_container;
}
if let Some(mut wasmcloud_container) = cta.wasmcloud.clone() {
wasmcloud_container.merge_from(containers[1].clone());
containers[1] = wasmcloud_container;
}
}
let service_account = config.name_any(); let service_account = config.name_any();
let mut template = PodTemplateSpec { let mut template = PodTemplateSpec {
metadata: Some(ObjectMeta { metadata: Some(ObjectMeta {
@ -847,37 +822,35 @@ async fn configure_hosts(config: &WasmCloudHostConfig, ctx: Arc<Context>) -> Res
]; ];
} }
if config if let Some(scheduling_options) = &config.spec.scheduling_options {
.spec if scheduling_options.daemonset {
.scheduling_options let mut spec = daemonset_spec(config, ctx.clone()).await?;
.as_ref() spec.template.spec.as_mut().unwrap().containers[1]
.is_some_and(|so| so.daemonset) .env
{ .as_mut()
let mut spec = daemonset_spec(config, ctx.clone()).await?; .unwrap()
spec.template.spec.as_mut().unwrap().containers[1] .append(&mut env_vars);
.env let ds = DaemonSet {
.as_mut() metadata: ObjectMeta {
.unwrap() name: Some(config.name_any()),
.append(&mut env_vars); namespace: Some(config.namespace().unwrap()),
let ds = DaemonSet { owner_references: Some(vec![config.controller_owner_ref(&()).unwrap()]),
metadata: ObjectMeta { labels: Some(common_labels()),
name: Some(config.name_any()), ..Default::default()
namespace: Some(config.namespace().unwrap()), },
owner_references: Some(vec![config.controller_owner_ref(&()).unwrap()]), spec: Some(spec),
labels: Some(common_labels()),
..Default::default() ..Default::default()
}, };
spec: Some(spec),
..Default::default()
};
let api = Api::<DaemonSet>::namespaced(ctx.client.clone(), &config.namespace().unwrap()); let api =
api.patch( Api::<DaemonSet>::namespaced(ctx.client.clone(), &config.namespace().unwrap());
&config.name_any(), api.patch(
&PatchParams::apply(CLUSTER_CONFIG_FINALIZER), &config.name_any(),
&Patch::Apply(ds), &PatchParams::apply(CLUSTER_CONFIG_FINALIZER),
) &Patch::Apply(ds),
.await?; )
.await?;
}
} else { } else {
let mut spec = deployment_spec(config, ctx.clone()).await?; let mut spec = deployment_spec(config, ctx.clone()).await?;
spec.template.spec.as_mut().unwrap().containers[1] spec.template.spec.as_mut().unwrap().containers[1]

View File

@ -28,13 +28,6 @@ use wasmcloud_operator_types::v1alpha1::WasmCloudHostConfig;
#[tokio::main] #[tokio::main]
async fn main() -> Result<()> { async fn main() -> Result<()> {
let args = std::env::args().collect::<Vec<_>>();
if args.iter().any(|arg| arg == "-V" || arg == "--version") {
let version = version();
println!("{} {version}", env!("CARGO_BIN_NAME"));
std::process::exit(0);
}
let tracing_enabled = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT").is_ok(); let tracing_enabled = std::env::var("OTEL_EXPORTER_OTLP_ENDPOINT").is_ok();
configure_tracing(tracing_enabled).map_err(|e| { configure_tracing(tracing_enabled).map_err(|e| {
error!("Failed to configure tracing: {}", e); error!("Failed to configure tracing: {}", e);
@ -199,7 +192,3 @@ async fn install_crd(client: &Client) -> anyhow::Result<()> {
Ok(()) Ok(())
} }
fn version() -> &'static str {
option_env!("CARGO_VERSION_INFO").unwrap_or(env!("CARGO_PKG_VERSION"))
}