From 5fddec359dbf6106fd72fcc469d37fd432c85cf3 Mon Sep 17 00:00:00 2001
From: lin-hua-cheng <os.lcheng@gmail.com>
Date: Fri, 20 Feb 2015 22:23:30 -0800
Subject: [PATCH] Add 'uptime' in 'hypervisor show'

Fetch the 'uptime' by making a call to hypervisor-uptime.

Update the help for 'hypervisor show' to mention that it
supports by Name or Id.

Change-Id: I31060d203e87749cfc05810c2d9db42f2416051d
Partial-Bug: #1423748
---
 openstackclient/compute/v2/hypervisor.py | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/openstackclient/compute/v2/hypervisor.py b/openstackclient/compute/v2/hypervisor.py
index 355ffbb315..65035d0431 100644
--- a/openstackclient/compute/v2/hypervisor.py
+++ b/openstackclient/compute/v2/hypervisor.py
@@ -16,6 +16,7 @@
 """Hypervisor action implementations"""
 
 import logging
+import re
 import six
 
 from cliff import lister
@@ -76,6 +77,18 @@ class ShowHypervisor(show.ShowOne):
         hypervisor = utils.find_resource(compute_client.hypervisors,
                                          parsed_args.hypervisor)._info.copy()
 
+        uptime = compute_client.hypervisors.uptime(hypervisor['id'])._info
+        # Extract data from uptime value
+        # format: 0 up 0,  0 users,  load average: 0, 0, 0
+        # example: 17:37:14 up  2:33,  3 users,  load average: 0.33, 0.36, 0.34
+        m = re.match("(.+)\sup\s+(.+),\s+(.+)\susers,\s+load average:\s(.+)",
+                     uptime['uptime'])
+        if m:
+            hypervisor["host_time"] = m.group(1)
+            hypervisor["uptime"] = m.group(2)
+            hypervisor["users"] = m.group(3)
+            hypervisor["load_average"] = m.group(4)
+
         hypervisor["service_id"] = hypervisor["service"]["id"]
         hypervisor["service_host"] = hypervisor["service"]["host"]
         del hypervisor["service"]