#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
pub use k8s_openapi::api::core::v1::ObjectReference;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "core.openfeature.dev", version = "v1alpha2", kind = "FeatureFlagConfiguration", plural = "featureflagconfigurations")]
#[kube(namespaced)]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct FeatureFlagConfigurationSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "featureFlagSpec")]
pub feature_flag_spec: Option<FeatureFlagConfigurationFeatureFlagSpec>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "flagDSpec")]
pub flag_d_spec: Option<FeatureFlagConfigurationFlagDSpec>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resources: Option<FeatureFlagConfigurationResources>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceProvider")]
pub service_provider: Option<FeatureFlagConfigurationServiceProvider>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "syncProvider")]
pub sync_provider: Option<FeatureFlagConfigurationSyncProvider>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFeatureFlagSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "$evaluators")]
pub evaluators: Option<BTreeMap<String, serde_json::Value>>,
pub flags: BTreeMap<String, FeatureFlagConfigurationFeatureFlagSpecFlags>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFeatureFlagSpecFlags {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultVariant")]
pub default_variant: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<FeatureFlagConfigurationFeatureFlagSpecFlagsState>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub targeting: Option<BTreeMap<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub variants: Option<BTreeMap<String, serde_json::Value>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum FeatureFlagConfigurationFeatureFlagSpecFlagsState {
#[serde(rename = "ENABLED")]
Enabled,
#[serde(rename = "DISABLED")]
Disabled,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpec {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub envs: Option<Vec<FeatureFlagConfigurationFlagDSpecEnvs>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpecEnvs {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")]
pub value_from: Option<FeatureFlagConfigurationFlagDSpecEnvsValueFrom>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFrom {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")]
pub config_map_key_ref: Option<FeatureFlagConfigurationFlagDSpecEnvsValueFromConfigMapKeyRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")]
pub field_ref: Option<FeatureFlagConfigurationFlagDSpecEnvsValueFromFieldRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")]
pub resource_field_ref: Option<FeatureFlagConfigurationFlagDSpecEnvsValueFromResourceFieldRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")]
pub secret_key_ref: Option<FeatureFlagConfigurationFlagDSpecEnvsValueFromSecretKeyRef>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromConfigMapKeyRef {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromFieldRef {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")]
pub api_version: Option<String>,
#[serde(rename = "fieldPath")]
pub field_path: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromResourceFieldRef {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")]
pub container_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub divisor: Option<IntOrString>,
pub resource: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationFlagDSpecEnvsValueFromSecretKeyRef {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationResources {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub claims: Option<Vec<FeatureFlagConfigurationResourcesClaims>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limits: Option<BTreeMap<String, IntOrString>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub requests: Option<BTreeMap<String, IntOrString>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationResourcesClaims {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct FeatureFlagConfigurationServiceProvider {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub credentials: Option<ObjectReference>,
pub name: FeatureFlagConfigurationServiceProviderName,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationServiceProviderCredentials {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")]
pub api_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")]
pub field_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceVersion")]
pub resource_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uid: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum FeatureFlagConfigurationServiceProviderName {
#[serde(rename = "flagd")]
Flagd,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationSyncProvider {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "httpSyncConfiguration")]
pub http_sync_configuration: Option<FeatureFlagConfigurationSyncProviderHttpSyncConfiguration>,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationSyncProviderHttpSyncConfiguration {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "bearerToken")]
pub bearer_token: Option<String>,
pub target: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct FeatureFlagConfigurationStatus {
}