aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjose.lausuch <jose.lausuch@ericsson.com>2017-02-15 22:35:21 +0100
committerJose Lausuch <jose.lausuch@ericsson.com>2017-02-16 15:10:43 +0000
commit5a7477662f677e8e6691b835e598951e24cb780e (patch)
tree616062c6ef005b86bd63b27616e0ce7d4d7eba5c
parentabb0ec563a18ba91439a58aa76b166c8bcf0946d (diff)
[deployment_handler] Add memory and cpu info to the nodes
output: http://pastebin.com/raw/KtuvGPs1 Change-Id: Ie4eb33b041e9ac0ac992a615a29dd7aeab7d857f Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
-rw-r--r--opnfv/deployment/manager.py80
1 files changed, 58 insertions, 22 deletions
diff --git a/opnfv/deployment/manager.py b/opnfv/deployment/manager.py
index 43a7948..e1fd949 100644
--- a/opnfv/deployment/manager.py
+++ b/opnfv/deployment/manager.py
@@ -27,7 +27,7 @@ class Deployment(object):
status,
openstack_version,
sdn_controller,
- nodes=[]):
+ nodes=None):
self.deployment_info = {
'installer': installer,
@@ -116,9 +116,9 @@ class Node(object):
ip,
name,
status,
- roles=[],
+ roles=None,
ssh_client=None,
- info={}):
+ info=None):
self.id = id
self.ip = ip
self.name = name
@@ -127,6 +127,16 @@ class Node(object):
self.roles = roles
self.info = info
+ self.cpu_info = 'unknown'
+ self.memory = 'unknown'
+ self.ovs = 'unknown'
+
+ if ssh_client:
+ sys_info = self.get_system_info()
+ self.cpu_info = sys_info['cpu_info']
+ self.memory = sys_info['memory']
+ self.ovs = self.get_ovs_info()
+
def get_file(self, src, dest):
'''
SCP file from a node
@@ -184,15 +194,12 @@ class Node(object):
'name': self.name,
'status': self.status,
'roles': self.roles,
+ 'cpu_info': self.cpu_info,
+ 'memory': self.memory,
+ 'ovs': self.ovs,
'info': self.info
}
- def get_attribute(self, attribute):
- '''
- Returns an attribute given the name
- '''
- return self.get_dict()[attribute]
-
def is_controller(self):
'''
Returns if the node is a controller
@@ -216,21 +223,50 @@ class Node(object):
cmd = "ovs-vsctl --version|head -1| sed 's/^.*) //'"
return self.run_cmd(cmd)
+ def get_system_info(self):
+ '''
+ Returns the ovs version installed
+ '''
+ cmd = 'grep MemTotal /proc/meminfo'
+ memory = self.run_cmd(cmd).partition('MemTotal:')[-1].strip().encode()
+
+ cpu_info = {}
+ cmd = 'lscpu'
+ result = self.run_cmd(cmd)
+ for line in result.splitlines():
+ if line.startswith('CPU(s)'):
+ cpu_info['num_cpus'] = line.split(' ')[-1].encode()
+ elif line.startswith('Thread(s) per core'):
+ cpu_info['threads/core'] = line.split(' ')[-1].encode()
+ elif line.startswith('Core(s) per socket'):
+ cpu_info['cores/socket'] = line.split(' ')[-1].encode()
+ elif line.startswith('Model name'):
+ cpu_info['model'] = line.partition(
+ 'Model name:')[-1].strip().encode()
+ elif line.startswith('Architecture'):
+ cpu_info['arch'] = line.split(' ')[-1].encode()
+
+ return {'memory': memory, 'cpu_info': cpu_info}
+
def __str__(self):
return '''
- name: {name}
- id: {id}
- ip: {ip}
- status: {status}
- roles: {roles}
- ovs: {ovs}
- info: {info}'''.format(name=self.name,
- id=self.id,
- ip=self.ip,
- status=self.status,
- roles=self.roles,
- ovs=self.get_ovs_info(),
- info=self.info)
+ name: {name}
+ id: {id}
+ ip: {ip}
+ status: {status}
+ roles: {roles}
+ cpu: {cpu_info}
+ memory: {memory}
+ ovs: {ovs}
+ info: {info}'''.format(name=self.name,
+ id=self.id,
+ ip=self.ip,
+ status=self.status,
+ roles=self.roles,
+ cpu_info=self.cpu_info,
+ memory=self.memory,
+ ovs=self.ovs,
+ info=self.info)
class DeploymentHandler(object):