Expose the HA rules API endpoints through the CLI in its own subcommand.

The names of the subsubcommands are chosen to be consistent with the
other commands provided by the ha-manager CLI for HA resources and
groups, but grouped into a subcommand.

The properties specified for the 'rules config' command are chosen to
reflect the columns from the WebGUI for the HA rules.

Signed-off-by: Daniel Kral <d.k...@proxmox.com>
---
 src/PVE/CLI/ha_manager.pm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/PVE/CLI/ha_manager.pm b/src/PVE/CLI/ha_manager.pm
index ca230f2..ef936cd 100644
--- a/src/PVE/CLI/ha_manager.pm
+++ b/src/PVE/CLI/ha_manager.pm
@@ -17,6 +17,7 @@ use PVE::HA::Env::PVE2;
 use PVE::HA::Tools;
 use PVE::API2::HA::Resources;
 use PVE::API2::HA::Groups;
+use PVE::API2::HA::Rules;
 use PVE::API2::HA::Status;
 
 use base qw(PVE::CLIHandler);
@@ -199,6 +200,37 @@ our $cmddef = {
     groupremove => ["PVE::API2::HA::Groups", 'delete', ['group']],
     groupset => ["PVE::API2::HA::Groups", 'update', ['group']],
 
+    rules => {
+        list => [
+            'PVE::API2::HA::Rules',
+            'index',
+            [],
+            {},
+            sub {
+                my ($data, $schema, $options) = @_;
+                PVE::CLIFormatter::print_api_result($data, $schema, undef, 
$options);
+            },
+            $PVE::RESTHandler::standard_output_options,
+        ],
+        config => [
+            'PVE::API2::HA::Rules',
+            'index',
+            ['rule'],
+            {},
+            sub {
+                my ($data, $schema, $options) = @_;
+                my $props_to_print = [
+                    'rule', 'type', 'state', 'affinity', 'strict', 
'resources', 'nodes',
+                ];
+                PVE::CLIFormatter::print_api_result($data, $schema, 
$props_to_print, $options);
+            },
+            $PVE::RESTHandler::standard_output_options,
+        ],
+        add => ['PVE::API2::HA::Rules', 'create_rule', ['type', 'rule']],
+        remove => ['PVE::API2::HA::Rules', 'delete_rule', ['rule']],
+        set => ['PVE::API2::HA::Rules', 'update_rule', ['type', 'rule']],
+    },
+
     add => ["PVE::API2::HA::Resources", 'create', ['sid']],
     remove => ["PVE::API2::HA::Resources", 'delete', ['sid']],
     set => ["PVE::API2::HA::Resources", 'update', ['sid']],
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to