[pve-devel] [pve-container] vmstatus: define return propertries

Dietmar Maurer dietmar at proxmox.com
Wed Aug 1 12:17:08 CEST 2018


We can use the same properties in vmlist and vmstatus.

Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---
 src/PVE/API2/LXC.pm        | 44 +----------------------------------------
 src/PVE/API2/LXC/Status.pm | 11 ++++++++++-
 src/PVE/LXC.pm             | 49 ++++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 58 insertions(+), 46 deletions(-)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index b65143e..cbcc393 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -74,48 +74,7 @@ __PACKAGE__->register_method({
 	type => 'array',
 	items => {
 	    type => "object",
-	    properties => {
-		vmid => get_standard_option('pve-vmid'),
-		status => {
-		    description => "LXC Container status.",
-		    type => 'string',
-		    enum => ['stopped', 'running'],
-		},
-		maxmem => {
-		    description => "Maximum memory in bytes.",
-		    type => 'integer',
-		    optional => 1,
-		    renderer => 'bytes',
-		},
-		maxswap => {
-		    description => "Maximum SWAP memory in bytes.",
-		    type => 'integer',
-		    optional => 1,
-		    renderer => 'bytes',
-		},
-		maxdisk => {
-		    description => "Root disk size in bytes.",
-		    type => 'integer',
-		    optional => 1,
-		    renderer => 'bytes',
-		},
-		name => {
-		    description => "Container name.",
-		    type => 'string',
-		    optional => 1,
-		},
-		uptime => {
-		    description => "Uptime.",
-		    type => 'integer',
-		    optional => 1,
-		    renderer => 'duration',
-		},
-		cpus => {
-		    description => "Maximum usable CPUs.",
-		    type => 'number',
-		    optional => 1,
-		},
-	    },
+	    properties => $PVE::LXC::vmstatus_return_properties,
 	},
 	links => [ { rel => 'child', href => "{vmid}" } ],
     },
@@ -132,7 +91,6 @@ __PACKAGE__->register_method({
 	    next if !$rpcenv->check($authuser, "/vms/$vmid", [ 'VM.Audit' ], 1);
 
 	    my $data = $vmstatus->{$vmid};
-	    $data->{vmid} = $vmid;
 	    push @$res, $data;
 	}
 
diff --git a/src/PVE/API2/LXC/Status.pm b/src/PVE/API2/LXC/Status.pm
index b98dc24..95775fe 100644
--- a/src/PVE/API2/LXC/Status.pm
+++ b/src/PVE/API2/LXC/Status.pm
@@ -87,7 +87,16 @@ __PACKAGE__->register_method({
 	    vmid => get_standard_option('pve-vmid'),
 	},
     },
-    returns => { type => 'object' },
+    returns => {
+	type => 'object',
+	properties => {
+	    %$PVE::LXC::vmstatus_return_properties,
+	    ha => {
+		description => "HA manager service status.",
+		type => 'object',
+	    },
+	},
+    },
     code => sub {
 	my ($param) = @_;
 
diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index bc03792..1504bd0 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -18,6 +18,7 @@ use PVE::Exception qw(raise_perm_exc);
 use PVE::Storage;
 use PVE::SafeSyslog;
 use PVE::INotify;
+use PVE::JSONSchema qw(get_standard_option);
 use PVE::Tools qw($IPV6RE $IPV4RE dir_glob_foreach lock_file lock_file_full O_PATH);
 use PVE::CpuSet;
 use PVE::Network;
@@ -25,6 +26,7 @@ use PVE::AccessControl;
 use PVE::ProcFSTools;
 use PVE::Syscall;
 use PVE::LXC::Config;
+
 use Time::HiRes qw (gettimeofday);
 
 my $nodename = PVE::INotify::nodename();
@@ -42,7 +44,7 @@ sub config_list {
 	my $d = $ids->{$vmid};
 	next if !$d->{node} || $d->{node} ne $nodename;
 	next if !$d->{type} || $d->{type} ne 'lxc';
-	$res->{$vmid}->{type} = 'lxc';
+	$res->{$vmid} = { type => 'lxc', vmid => $vmid };
     }
     return $res;
 }
@@ -115,10 +117,53 @@ my $parse_cpuacct_stat = sub {
     return $stat;
 };
 
+our $vmstatus_return_properties = {
+    vmid => get_standard_option('pve-vmid'),
+    status => {
+	description => "LXC Container status.",
+	type => 'string',
+	enum => ['stopped', 'running'],
+    },
+    maxmem => {
+	description => "Maximum memory in bytes.",
+	type => 'integer',
+	optional => 1,
+	renderer => 'bytes',
+    },
+    maxswap => {
+	description => "Maximum SWAP memory in bytes.",
+	type => 'integer',
+	optional => 1,
+	renderer => 'bytes',
+    },
+    maxdisk => {
+	description => "Root disk size in bytes.",
+	type => 'integer',
+	optional => 1,
+	renderer => 'bytes',
+    },
+    name => {
+	description => "Container name.",
+	type => 'string',
+	optional => 1,
+    },
+    uptime => {
+	description => "Uptime.",
+	type => 'integer',
+	optional => 1,
+	renderer => 'duration',
+    },
+    cpus => {
+	description => "Maximum usable CPUs.",
+	type => 'number',
+	optional => 1,
+    },
+};
+
 sub vmstatus {
     my ($opt_vmid) = @_;
 
-    my $list = $opt_vmid ? { $opt_vmid => { type => 'lxc' }} : config_list();
+    my $list = $opt_vmid ? { $opt_vmid => { type => 'lxc', vmid => $opt_vmid }} : config_list();
 
     my $active_hash = list_active_containers();
 
-- 
2.11.0




More information about the pve-devel mailing list