]> git.proxmox.com Git - pve-manager.git/blobdiff - PVE/API2Tools.pm
api: prepare api handler module for notification config
[pve-manager.git] / PVE / API2Tools.pm
index 5ab202b499e413f8b994d01a8a1c0bbb36dddaa1..a3d7ca84cd3f9d5eee6d4bdd3f6791fb457f005c 100644 (file)
@@ -8,10 +8,13 @@ use PVE::Exception qw(raise_param_exc);
 use PVE::Tools;
 use PVE::INotify;
 use PVE::Cluster;
+use PVE::DataCenterConfig;
+use PVE::RPCEnvironment;
 use Digest::MD5 qw(md5_hex);
 use URI;
 use URI::Escape;
 use PVE::SafeSyslog;
+use PVE::Storage::Plugin;
 
 my $hwaddress;
 
@@ -118,13 +121,17 @@ sub extract_vm_stats {
 sub extract_storage_stats {
     my ($storeid, $scfg, $node, $rrd) = @_;
 
+    my $content = PVE::Storage::Plugin::content_hash_to_string($scfg->{content});
+
     my $entry = {
        id => "storage/$node/$storeid",
        storage => $storeid,
        node => $node,
        type => 'storage',
+       plugintype => $scfg->{type},
        status => 'unknown',
        shared => $scfg->{shared} || 0,
+       content => $content,
     };
 
     if (my $d = $rrd->{"pve2-storage/$node/$storeid"}) {
@@ -225,10 +232,27 @@ sub resolve_proxyto {
            if !$node;
     } else {
        $node = $uri_param->{$proxyto};
-       raise_param_exc({ $proxyto =>  "proxyto parameter does not exists"})
+       raise_param_exc({ $proxyto =>  "proxyto parameter does not exist"})
            if !$node;
     }
     return $node;
 }
 
+sub get_resource_pool_guest_members {
+    my ($pool) = @_;
+
+    my $usercfg = PVE::Cluster::cfs_read_file("user.cfg");
+
+    my $vmlist = PVE::Cluster::get_vmlist() || {};
+    my $idlist = $vmlist->{ids} || {};
+
+    my $data = $usercfg->{pools}->{$pool};
+
+    die "pool '$pool' does not exist\n" if !$data;
+
+    my $pool_members = [ grep { $idlist->{$_} } keys %{$data->{vms}} ];
+
+    return $pool_members;
+}
+
 1;