Update Vagrantfile for tern
[integration.git] / test / s3p / collector / get_resource_stats.py
1 #!/usr/bin/python
2 import subprocess
3 import sys
4 import json
5 import datetime
6 import collections
7 import re
8 import tzlocal
9
10 sys.path.append('../util')
11 import docker_util
12
13 AAI1_NAME = "AAI1"
14 AAI2_NAME = "AAI2"
15 SO_NAME = "SO"
16 SDNC_NAME = "SDNC"
17 AAI1_IP = "10.0.1.1"
18 AAI2_IP = "10.0.1.2"
19 SO_IP = "10.0.5.1"
20 SDNC_IP = "10.0.7.1"
21
22 def aai1():
23     containers = docker_util.get_container_list(AAI1_IP)
24     run(AAI1_NAME, AAI1_IP, containers)
25
26 def aai2():
27     containers = docker_util.get_container_list(AAI2_IP)
28     run(AAI2_NAME, AAI2_IP, containers)
29
30 def so():
31     containers = docker_util.get_container_list(SO_IP)
32     run(SO_NAME, SO_IP, containers)
33
34 def sdnc():
35     containers = docker_util.get_container_list(SDNC_IP)
36     run(SDNC_NAME, SDNC_IP, containers)
37
38 def run(component, ip, containers):
39     cmd = ["ssh", "-i", "onap_dev"]
40     cmd.append("ubuntu@" + ip)
41     cmd.append("sudo docker stats --no-stream")
42     for c in containers:
43         cmd.append(c)
44     ssh = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
45
46     result = ssh.stdout.readlines()
47     if result == []:
48         error = ssh.stderr.readlines()
49         print(error)
50     else:
51         result.pop(0)
52         for line in result:
53             token = line.decode('ascii').strip().split()
54             data = collections.OrderedDict()
55             data['datetime'] = datetime.datetime.now(tzlocal.get_localzone()).strftime("%Y-%m-%dT%H:%M:%S%Z")
56             data['component'] = component
57             data['container'] = token[0]
58             data['cpu'] = get_percent_number(token[1])
59             data['memory'] = get_memory_number(token[2])
60             data['physical'] = get_memory_number(token[4])
61             data['mem_percent'] = get_percent_number(token[5])
62             size = docker_util.get_container_volume_size(ip, data['container'])
63             if size is not None:
64                 data['volume'] = size
65             file.write(json.dumps(data, default = myconverter) + "\n")
66             file.flush()
67
68 def myconverter(o):
69     if isinstance(o, datetime.datetime):
70         return o.__str__()
71
72 def get_percent_number(s):
73     return float(re.sub('[^0-9\.]', '', s))
74
75 def get_memory_number(s):
76     f = float(re.sub('[^0-9\.]', '', s))
77     if s.endswith("GiB"):
78         f = f*1000
79     return f
80
81 file = open("resource.log", "w+")
82 while True:
83     so()
84     sdnc()
85     aai1()
86     aai2()