]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
Introduce crm-command to CLI and add stop as a subcommand
authorFabian Ebner <f.ebner@proxmox.com>
Thu, 10 Oct 2019 10:25:08 +0000 (12:25 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Mon, 11 Nov 2019 14:56:19 +0000 (15:56 +0100)
This should reduce confusion between the old 'set <sid> --state stopped' and
the new 'stop' command by making explicit that it is sent as a crm command.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
src/PVE/CLI/ha_manager.pm

index 5ce4c3078ba8499ce641371b3a490351f586a7d4..b087319ee91e84bef3c895e09f34f508e3816449 100644 (file)
@@ -9,6 +9,7 @@ use JSON;
 use PVE::JSONSchema qw(get_standard_option);
 use PVE::CLIHandler;
 use PVE::Cluster;
+use PVE::Tools qw(extract_param);
 use PVE::RPCEnvironment;
 
 use PVE::HA::Config; # needed for bash completion in PVE::HA::Tools!
@@ -73,6 +74,41 @@ __PACKAGE__->register_method ({
        return undef;
     }});
 
+__PACKAGE__->register_method ({
+    name => 'stop',
+    path => 'stop',
+    method => 'POST',
+    description => "Request the service to be stopped.",
+    permissions => {
+       check => ['perm', '/', [ 'Sys.Console' ]],
+    },
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           sid => get_standard_option('pve-ha-resource-or-vm-id',
+                                     { completion => \&PVE::HA::Tools::complete_sid }),
+           timeout => {
+               description => "Timeout in seconds. If set to 0 a hard stop will be performed.",
+               type => 'integer',
+               minimum => 0,
+           },
+       },
+    },
+    returns => { type => 'null' },
+    code => sub {
+       my ($param) = @_;
+
+       my $sid = PVE::HA::Config::parse_sid(extract_param($param, 'sid'));
+
+       PVE::HA::Config::service_is_ha_managed($sid);
+
+       PVE::API2::HA::Resources::check_service_state($sid);
+
+       PVE::HA::Config::queue_crm_commands("stop $sid $param->{timeout}");
+
+       return undef;
+    }});
+
 our $cmddef = {
     status => [ __PACKAGE__, 'status'],
     config => [ 'PVE::API2::HA::Resources', 'index', [], {}, sub {
@@ -111,8 +147,14 @@ our $cmddef = {
     remove => [ "PVE::API2::HA::Resources", 'delete', ['sid'] ],
     set => [ "PVE::API2::HA::Resources", 'update', ['sid'] ],
 
-    migrate => [ "PVE::API2::HA::Resources", 'migrate', ['sid', 'node'] ],
-    relocate => [ "PVE::API2::HA::Resources", 'relocate', ['sid', 'node'] ],
+    migrate => { alias => 'crm-command migrate' },
+    relocate => { alias => 'crm-command relocate' },
+
+    'crm-command' => {
+       migrate => [ "PVE::API2::HA::Resources", 'migrate', ['sid', 'node'] ],
+       relocate => [ "PVE::API2::HA::Resources", 'relocate', ['sid', 'node'] ],
+       stop => [ __PACKAGE__, 'stop', ['sid', 'timeout'] ],
+    }
 
 };