twc_rs/cli/firewall.rs
1// SPDX-FileCopyrightText: 2026 RAprogramm <andrey.rozanov.vl@gmail.com>
2// SPDX-License-Identifier: MIT
3
4//! Firewall group and rule subcommands.
5
6use clap::Subcommand;
7
8/// Firewall management subcommands.
9#[derive(Subcommand, Debug)]
10pub enum FirewallCommands {
11 /// List all firewall groups.
12 List {
13 /// Maximum number of groups to return.
14 #[arg(long)]
15 limit: Option<i32>,
16
17 /// Number of groups to skip.
18 #[arg(long)]
19 offset: Option<i32>
20 },
21 /// Show detailed info for a firewall group.
22 Info {
23 /// Firewall group ID.
24 #[arg(long)]
25 id: String
26 },
27 /// Create a new firewall group.
28 Create {
29 /// Group name.
30 #[arg(long)]
31 name: String
32 },
33 /// Delete a firewall group by ID.
34 Delete {
35 /// Firewall group ID.
36 #[arg(long)]
37 id: String
38 },
39 /// Update firewall group settings.
40 Update {
41 /// Firewall group ID.
42 #[arg(long)]
43 id: String,
44
45 /// New group name.
46 #[arg(long)]
47 name: Option<String>
48 },
49 /// List rules for a firewall group.
50 RuleList {
51 /// Firewall group ID.
52 #[arg(long)]
53 id: String
54 },
55 /// Create a rule for a firewall group.
56 RuleCreate {
57 /// Firewall group ID.
58 #[arg(long)]
59 id: String
60 },
61 /// Delete a rule from a firewall group.
62 RuleDelete {
63 /// Firewall group ID.
64 #[arg(long)]
65 id: String,
66
67 /// Rule ID to delete.
68 #[arg(long)]
69 rule_id: String
70 },
71 /// List resources for a firewall group.
72 ResourceList {
73 /// Firewall group ID.
74 #[arg(long)]
75 id: String
76 },
77 /// Add a resource to a firewall group.
78 ResourceAdd {
79 /// Firewall group ID.
80 #[arg(long)]
81 id: String,
82
83 /// Resource ID to add.
84 #[arg(long)]
85 resource_id: String
86 },
87 /// Remove a resource from a firewall group.
88 ResourceRemove {
89 /// Firewall group ID.
90 #[arg(long)]
91 id: String,
92
93 /// Resource ID to remove.
94 #[arg(long)]
95 resource_id: String
96 }
97}