Skip to main content

twc_rs/cli/
kubernetes.rs

1// SPDX-FileCopyrightText: 2026 RAprogramm <andrey.rozanov.vl@gmail.com>
2// SPDX-License-Identifier: MIT
3
4//! Kubernetes cluster subcommands.
5
6use clap::Subcommand;
7
8/// Kubernetes subcommands.
9#[derive(Subcommand, Debug)]
10pub enum KubernetesCommands {
11    /// List all Kubernetes clusters.
12    List {
13        /// Maximum number of clusters to return.
14        #[arg(long)]
15        limit: Option<i32>,
16
17        /// Number of clusters to skip.
18        #[arg(long)]
19        offset: Option<i32>
20    },
21    /// Show detailed info for a cluster.
22    Info {
23        /// Cluster ID.
24        #[arg(long)]
25        id: i32
26    },
27    /// Create a new Kubernetes cluster.
28    Create {
29        /// Cluster name.
30        #[arg(long)]
31        name: String,
32
33        /// Kubernetes version (e.g., 1.30).
34        #[arg(long)]
35        type_: String
36    },
37    /// Delete a cluster by ID.
38    Delete {
39        /// Cluster ID.
40        #[arg(long)]
41        id: i32
42    },
43    /// Update cluster settings.
44    Update {
45        /// Cluster ID.
46        #[arg(long)]
47        id: i32,
48
49        /// New cluster name.
50        #[arg(long)]
51        name: Option<String>
52    },
53    /// List node groups for a cluster.
54    NodegroupList {
55        /// Cluster ID.
56        #[arg(long)]
57        id: i32
58    },
59    /// Create a node group for a cluster.
60    NodegroupCreate {
61        /// Cluster ID.
62        #[arg(long)]
63        id: i32,
64
65        /// Node group name.
66        #[arg(long)]
67        name: String
68    },
69    /// Delete a node group from a cluster.
70    NodegroupDelete {
71        /// Cluster ID.
72        #[arg(long)]
73        id: i32,
74
75        /// Node group ID.
76        #[arg(long)]
77        group_id: i32
78    },
79    /// List nodes for a cluster.
80    NodeList {
81        /// Cluster ID.
82        #[arg(long)]
83        id: i32
84    },
85    /// List installed addons for a cluster.
86    AddonList {
87        /// Cluster ID.
88        #[arg(long)]
89        id: i32
90    },
91    /// Install an addon on a cluster.
92    AddonInstall {
93        /// Cluster ID.
94        #[arg(long)]
95        id: i32,
96
97        /// Addon name (e.g., calico, metrics-server).
98        #[arg(long)]
99        addon_name: String
100    },
101    /// Delete an addon from a cluster.
102    AddonDelete {
103        /// Cluster ID.
104        #[arg(long)]
105        id: i32,
106
107        /// Addon name to delete.
108        #[arg(long)]
109        addon_name: String
110    },
111    /// List available Kubernetes presets.
112    PresetList,
113
114    /// List available Kubernetes versions.
115    VersionList,
116
117    /// List available Kubernetes network drivers.
118    NetworkDrivers,
119
120    /// Get kubeconfig for a cluster.
121    Kubeconfig {
122        /// Cluster ID.
123        #[arg(long)]
124        id: i32
125    },
126
127    /// Show cluster resources (deprecated).
128    #[command(hide = true)]
129    Resources {
130        /// Cluster ID.
131        #[arg(long)]
132        id: i32
133    }
134}