Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 PVE/API2/Ceph/MGR.pm | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/PVE/API2/Ceph/MGR.pm b/PVE/API2/Ceph/MGR.pm
index c1d38d7a..d8f5427d 100644
--- a/PVE/API2/Ceph/MGR.pm
+++ b/PVE/API2/Ceph/MGR.pm
@@ -16,6 +16,70 @@ use PVE::Tools qw(run_command);
 use base qw(PVE::RESTHandler);
 
 __PACKAGE__->register_method ({
+    name => 'index',
+    path => '',
+    method => 'GET',
+    description => "MGR directory index.",
+    permissions => {
+       check => ['perm', '/', [ 'Sys.Audit', 'Datastore.Audit' ], any => 1],
+    },
+    proxyto => 'node',
+    protected => 1,
+    parameters => {
+       additionalProperties => 0,
+       properties => {
+           node => get_standard_option('pve-node'),
+       },
+    },
+    returns => {
+       type => 'array',
+       items => {
+           type => "object",
+           properties => {
+               name => {
+                   description => "The name (ID) for the MGR",
+               },
+               addr => {
+                   type => 'string',
+                   optional => 1,
+               },
+               host => {
+                   type => 'string',
+                   optional => 1,
+               },
+               state => {
+                   type => 'string',
+                   description => 'State of the MGR',
+               },
+           },
+       },
+       links => [ { rel => 'child', href => "{name}" } ],
+    },
+    code => sub {
+       my ($param) = @_;
+
+       PVE::Ceph::Tools::check_ceph_inited();
+
+       my $res = [];
+
+       my $cfg = cfs_read_file('ceph.conf');
+       my $rados = PVE::RADOS->new();
+
+       my $mgr_hash = PVE::Ceph::Services::get_services_info("mgr", $cfg, 
$rados);
+
+       my $mgr_dump = $rados->mon_command({ prefix => 'mgr dump' });
+
+       $mgr_hash->{$mgr_dump->{active_name}}->{state} = 'active';
+
+       foreach my $mgr (@{$mgr_dump->{standbys}}) {
+           $mgr_hash->{$mgr->{name}}->{state} = 'standby';
+       }
+
+       return PVE::RESTHandler::hash_to_array($mgr_hash, 'name');
+    }
+});
+
+__PACKAGE__->register_method ({
     name => 'createmgr',
     path => '',
     method => 'POST',
-- 
2.11.0


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

Reply via email to