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}