}
};
+__PACKAGE__->register_method ({
+ name => 'index',
+ path => '',
+ method => 'GET',
+ permissions => { user => 'all' },
+ description => "Directory index.",
+ parameters => {
+ additionalProperties => 0,
+ properties => {},
+ },
+ returns => {
+ type => 'array',
+ items => {
+ type => "object",
+ properties => {},
+ },
+ links => [ { rel => 'child', href => "{name}" } ],
+ },
+ code => sub {
+ my ($param) = @_;
+
+ my $result = [
+ { name => 'current' },
+ { name => 'manager_status' },
+ ];
+
+ return $result;
+ }});
+
__PACKAGE__->register_method ({
name => 'status',
- path => '',
+ path => 'current',
method => 'GET',
description => "Get HA manger status.",
parameters => {
return $res;
}});
+__PACKAGE__->register_method ({
+ name => 'manager_status',
+ path => 'manager_status',
+ method => 'GET',
+ description => "Get full HA manger status, including LRM status.",
+ parameters => {
+ additionalProperties => 0,
+ properties => {},
+ },
+ returns => { type => 'object' },
+ code => sub {
+ my ($param) = @_;
+ my $haenv = PVE::HA::Env::PVE2->new($nodename);
+
+ my $status = $haenv->read_manager_status();
+
+ my $data = { manager_status => $status };
+
+ $data->{quorum} = {
+ node => $nodename,
+ quorate => PVE::Cluster::check_cfs_quorum(1),
+ };
+
+ foreach my $node (sort keys %{$status->{node_status}}) {
+ my $lrm_status = $haenv->read_lrm_status($node);
+ $data->{lrm_status}->{$node} = $lrm_status;
+ }
+
+ return $data;
+ }});
1;
use PVE::HA::Tools;
use PVE::API2::HA::Resources;
use PVE::API2::HA::Groups;
+use PVE::API2::HA::Status;
use PVE::HA::Env::PVE2;
use base qw(PVE::CLIHandler);
code => sub {
my ($param) = @_;
- PVE::Cluster::check_cfs_quorum();
-
- my $haenv = PVE::HA::Env::PVE2->new($nodename);
-
- my $status = $haenv->read_manager_status();
- my $verbose_data = { manager_status => $status };
-
- my $ctime = $haenv->get_time();
-
- if (defined($status->{master_node}) && defined($status->{timestamp})) {
- my $master = $status->{master_node};
- my $status_str = &$timestamp_to_status($ctime, $status->{timestamp});
-
- my $time_str = localtime($status->{timestamp});
- print "master_node: $master ($status_str, $time_str)\n";
- } else {
- print "master_node: -\n";
+ my $res = PVE::API2::HA::Status->status({});
+ foreach my $e (@$res) {
+ print "$e->{type} $e->{status}\n";
}
-
- foreach my $node (sort keys %{$status->{node_status}}) {
- my $lrm_status = $haenv->read_lrm_status($node);
- $verbose_data->{lrm_status}->{$node} = $lrm_status;
- if (!$lrm_status->{timestamp}) {
- print "lrm_status: $node (unable to read lrm status)\n";
- } else {
- my $status_str = &$timestamp_to_status($ctime, $lrm_status->{timestamp});
- my $time_str = localtime($lrm_status->{timestamp});
- print "lrm_status: $node ($status_str, $time_str)\n";
- }
- }
-
- foreach my $sid (sort keys %{$status->{service_status}}) {
- my $d = $status->{service_status}->{$sid};
- print "service_state: $sid (node $d->{node}, $d->{state})\n";
- }
-
+
if ($param->{verbose}) {
print "full cluster state:\n";
- print to_json($verbose_data, { pretty => 1, canonical => 1} );
+ my $data = PVE::API2::HA::Status->manager_status({});
+ print to_json($data, { pretty => 1, canonical => 1} );
}
return undef;