diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-07-01 08:01:52 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-07-01 08:01:52 +0000 |
| commit | d376043bef1477a9aaab5037e8a38429cf5a6926 (patch) | |
| tree | 32f9c92714bce966817ccba6706ccbb812d66f9d /nova/virt | |
| parent | 52c8539e2dc6d055d4e5bdedffa5d05fec258eb7 (diff) | |
| parent | 0946017e289cc865913980dbe199106d9b152cf3 (diff) | |
| download | nova-d376043bef1477a9aaab5037e8a38429cf5a6926.tar.gz nova-d376043bef1477a9aaab5037e8a38429cf5a6926.tar.xz nova-d376043bef1477a9aaab5037e8a38429cf5a6926.zip | |
Merge "Implement get_host_uptime for powervm driver"
Diffstat (limited to 'nova/virt')
| -rw-r--r-- | nova/virt/powervm/command.py | 14 | ||||
| -rwxr-xr-x | nova/virt/powervm/driver.py | 4 | ||||
| -rw-r--r-- | nova/virt/powervm/operator.py | 17 |
3 files changed, 34 insertions, 1 deletions
diff --git a/nova/virt/powervm/command.py b/nova/virt/powervm/command.py index eec7fc2d3..aa82650cc 100644 --- a/nova/virt/powervm/command.py +++ b/nova/virt/powervm/command.py @@ -1,6 +1,6 @@ # vim: tabstop=4 shiftwidth=4 softtabstop=4 -# Copyright 2012 IBM Corp. +# Copyright 2013 IBM Corp. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain @@ -68,6 +68,15 @@ class BaseCommand(object): def chsyscfg(self, args=''): return 'chsyscfg %s' % args + def sysstat(self, args=''): + """ + Returns a string of the formatted sysstat command to run. + Typically this command should be run with the -short option + and a User operand should be provided to narrow the results. + :returns: string - formatted sysstat command + """ + return 'sysstat %s' % args + class IVMCommand(BaseCommand): @@ -97,3 +106,6 @@ class IVMCommand(BaseCommand): def hostname(self, args=''): return 'ioscli ' + BaseCommand.hostname(self, args=args) + + def sysstat(self, args=''): + return 'ioscli ' + BaseCommand.sysstat(self, args=args) diff --git a/nova/virt/powervm/driver.py b/nova/virt/powervm/driver.py index e49bbb209..a97f7d011 100755 --- a/nova/virt/powervm/driver.py +++ b/nova/virt/powervm/driver.py @@ -90,6 +90,10 @@ class PowerVMDriver(driver.ComputeDriver): """Return currently known host stats.""" return self._powervm.get_host_stats(refresh=refresh) + def get_host_uptime(self, host): + """Returns the result of calling "uptime" on the target host.""" + return self._powervm.get_host_uptime(host) + def plug_vifs(self, instance, network_info): pass diff --git a/nova/virt/powervm/operator.py b/nova/virt/powervm/operator.py index fffb77fc9..9d59e7ce4 100644 --- a/nova/virt/powervm/operator.py +++ b/nova/virt/powervm/operator.py @@ -169,6 +169,10 @@ class PowerVMOperator(object): self._host_stats = data + def get_host_uptime(self, host): + """Returns the result of calling "uptime" on the target host.""" + return self._operator.get_host_uptime(host) + def spawn(self, context, instance, image_id, network_info): def _create_image(context, instance, image_id): """Fetch image from glance and copy it to the remote system.""" @@ -626,6 +630,19 @@ class BaseOperator(object): return {'total_mem': int(total_mem), 'avail_mem': int(avail_mem)} + def get_host_uptime(self, host): + """ + Get host uptime. + :returns: string - amount of time since last system startup + """ + # The output of the command is like this: + # "02:54PM up 24 days, 5:41, 1 user, load average: 0.06, 0.03, 0.02" + cmd = self.command.sysstat('-short %s' % self.connection_data.username) + output = self.run_vios_command(cmd) + # parse the sysstat output so we just return the uptime + system_time, uptime = output[0].split(',')[0:2] + return system_time + uptime + def get_cpu_info(self): """Get CPU info. |
