Change in vdsm[master]: virt: Only filter guest agent data, only on XMLRPC
vfeenstr at redhat.com
vfeenstr at redhat.com
Thu Jan 15 12:05:22 UTC 2015
Vinzenz Feenstra has uploaded a new change for review.
Change subject: virt: Only filter guest agent data, only on XMLRPC
......................................................................
virt: Only filter guest agent data, only on XMLRPC
Change-Id: Ia9ee2a8f1cc6784c619ce68da3cb9342b0d72cfc
Bug-Url: https://bugzilla.redhat.com/1179696
Signed-off-by: Vinzenz Feenstra <vfeenstr at redhat.com>
---
M vdsm/API.py
M vdsm/rpc/BindingXMLRPC.py
M vdsm/virt/guestagent.py
M vdsm/virt/vm.py
4 files changed, 24 insertions(+), 19 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/49/36949/1
diff --git a/vdsm/API.py b/vdsm/API.py
index 7b02278..5cdbd4a 100644
--- a/vdsm/API.py
+++ b/vdsm/API.py
@@ -354,20 +354,20 @@
return errCode['noVM']
return v.migrateStatus()
- def getStats(self):
+ def getStats(self, viaXMLRPC=False):
"""
Obtain statistics of the specified VM
"""
- return self._getStats()
+ return self._getStats(viaXMLRPC=viaXMLRPC)
- def _getStats(self, runHooks=True):
+ def _getStats(self, runHooks=True, viaXMLRPC=False):
v = self._cif.vmContainer.get(self._UUID)
if not v:
return errCode['noVM']
if runHooks:
hooks.before_get_vm_stats()
- stats = v.getStats().copy()
+ stats = v.getStats(viaXMLRPC=viaXMLRPC).copy()
stats['vmId'] = self._UUID
if runHooks:
stats = hooks.after_get_vm_stats([stats])[0]
@@ -1301,7 +1301,7 @@
self.log.error("failed to retrieve hardware info", exc_info=True)
return errCode['hwInfoErr']
- def getAllVmStats(self):
+ def getAllVmStats(self, viaXMLRPC=False):
"""
Get statistics of all running VMs.
"""
@@ -1309,7 +1309,8 @@
vms = self.getVMList()
statsList = []
for s in vms['vmList']:
- response = VM(s['vmId'])._getStats(runHooks=False)
+ response = VM(s['vmId'])._getStats(runHooks=False,
+ viaXMLRPC=viaXMLRPC)
if response:
statsList.append(response['statsList'][0])
statsList = hooks.after_get_all_vm_stats(statsList)
diff --git a/vdsm/rpc/BindingXMLRPC.py b/vdsm/rpc/BindingXMLRPC.py
index a6b75f3..94060f3 100644
--- a/vdsm/rpc/BindingXMLRPC.py
+++ b/vdsm/rpc/BindingXMLRPC.py
@@ -484,11 +484,11 @@
def vmGetStats(self, vmId):
vm = API.VM(vmId)
- return vm.getStats()
+ return vm.getStats(viaXMLRPC=True)
def getAllVmStats(self):
api = API.Global()
- return api.getAllVmStats()
+ return api.getAllVmStats(viaXMLRPC=True)
def hostdevListByCaps(self, caps=None):
api = API.Global()
diff --git a/vdsm/virt/guestagent.py b/vdsm/virt/guestagent.py
index 12f244c..d725bd7 100644
--- a/vdsm/virt/guestagent.py
+++ b/vdsm/virt/guestagent.py
@@ -334,18 +334,22 @@
def getStatus(self):
return self.guestStatus
- def getGuestInfo(self):
+ def getGuestInfo(self, viaXMLRPC=False):
+ def filter(o):
+ if viaXMLRPC:
+ return _filterObject(o)
+ return o
if self.isResponsive():
- return self.guestInfo
+ return filter(self.guestInfo)
else:
return {
'username': 'Unknown',
'session': 'Unknown',
'memUsage': 0,
'guestCPUCount': -1,
- 'appsList': self.guestInfo['appsList'],
- 'guestIPs': self.guestInfo['guestIPs'],
- 'guestFQDN': self.guestInfo['guestFQDN']}
+ 'appsList': filter(self.guestInfo['appsList']),
+ 'guestIPs': filter(self.guestInfo['guestIPs']),
+ 'guestFQDN': filter(self.guestInfo['guestFQDN'])}
def onReboot(self):
self.guestStatus = vmstatus.REBOOT_IN_PROGRESS
@@ -460,12 +464,12 @@
return result
- def _parseLine(self, line):
+ @staticmethod
+ def _parseLine(line):
# Deal with any bad UTF8 encoding from the (untrusted) guest,
# by replacing them with the Unicode replacement character
uniline = line.decode('utf8', 'replace')
args = json.loads(uniline)
- args = _filterObject(args)
name = args['__name__']
del args['__name__']
return (name, args)
diff --git a/vdsm/virt/vm.py b/vdsm/virt/vm.py
index 20d526e..39d86d3 100644
--- a/vdsm/virt/vm.py
+++ b/vdsm/virt/vm.py
@@ -2275,7 +2275,7 @@
status['guestDiskMapping'] = self.guestAgent.guestDiskMapping
return utils.picklecopy(status)
- def getStats(self):
+ def getStats(self, viaXMLRPC=False):
"""
used by API.Vm.getStats
@@ -2290,7 +2290,7 @@
stats = self._getConfigVmStats()
stats.update(self._getRunningVmStats())
stats.update(self._getVmStatus())
- stats.update(self._getGuestStats())
+ stats.update(self._getGuestStats(viaXMLRPC=viaXMLRPC))
return stats
def _getExitedVmStats(self):
@@ -2420,8 +2420,8 @@
'displaySecurePort': self.conf['displaySecurePort'],
'displayIp': self.conf['displayIp']}
- def _getGuestStats(self):
- stats = self.guestAgent.getGuestInfo()
+ def _getGuestStats(self, viaXMLRPC=False):
+ stats = self.guestAgent.getGuestInfo(viaXMLRPC=viaXMLRPC)
realMemUsage = int(stats['memUsage'])
if realMemUsage != 0:
memUsage = (100 - float(realMemUsage) /
--
To view, visit http://gerrit.ovirt.org/36949
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia9ee2a8f1cc6784c619ce68da3cb9342b0d72cfc
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Vinzenz Feenstra <vfeenstr at redhat.com>
More information about the vdsm-patches
mailing list