use super::*;
pub use template::{KubeadmConfigTemplate, KubeadmConfigTemplateSpec};
mod template;
#[skip_serializing_none]
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct KubeadmConfigSpec {
pub cluster_configuration: Option<ClusterConfiguration>,
pub init_configuration: Option<InitConfiguration>,
pub join_configuration: Option<JoinConfiguration>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub files: Vec<File>,
pub disk_setup: Option<DiskSetup>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub mounts: Vec<MountPoints>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub pre_kubeadm_commands: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub post_kubeadm_commands: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub users: Vec<User>,
pub ntp: Option<Ntp>,
pub format: Option<Format>,
pub verbosity: Option<i32>,
pub use_experimental_retry_join: Option<bool>, }
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct File {
pub path: String,
pub owner: Option<String>,
pub permissions: Option<String>,
pub encoding: Option<Encoding>,
pub content: Option<String>,
pub content_from: Option<FileSource>, }
#[skip_serializing_none]
#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DiskSetup {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub partitions: Vec<Partition>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub filesystems: Vec<Filesystem>, }
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MountPoints(Vec<String>);
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct User {
pub name: String,
pub gecos: Option<String>,
pub groups: Option<String>,
pub home_dir: Option<String>,
pub inactive: Option<bool>,
pub shell: Option<String>,
pub passwd: Option<String>,
pub primary_group: Option<String>,
pub lock_password: Option<bool>,
pub sudo: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub ssh_authorized_keys: Vec<String>, }
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ntp {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub servers: Vec<String>,
pub enabled: Option<bool>, }
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
pub enum Format {
#[serde(rename = "cloud-config")]
CloudConfig,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
pub enum Encoding {
#[serde(rename = "base64")]
Base64,
#[serde(rename = "gzip")]
Gzip,
#[serde(rename = "gzip+base64")]
GzipBase64,
}
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FileSource {
pub secret: SecretFileSource, }
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SecretFileSource {
pub name: String,
pub key: String, }
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Partition {
pub device: String, pub layout: bool, pub overwrite: Option<bool>, pub table_type: Option<String>, }
#[skip_serializing_none]
#[derive(Clone, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Filesystem {
pub device: String, pub filesystem: String, pub label: String, pub partition: Option<String>, pub overwrite: Option<bool>, #[serde(rename = "replaceFS")]
pub replace_fs: Option<String>, #[serde(default, skip_serializing_if = "Vec::is_empty")]
pub extra_opts: Vec<String>, }