robot tcs, test charts, robot container added
[ta/cloudtaf.git] / libraries / common / stack_infos.py
1 import sys
2 import os
3 import json
4 import paramiko
5 from robot.libraries.BuiltIn import BuiltIn
6 from users import *
7 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
8
9
10 class stack_infos:  # pylint: disable=old-style-class
11
12     INVENTORY_PATH = "/opt/cmframework/scripts/inventory.sh"
13
14     def __init__(self):
15         self._floating_ip = BuiltIn().get_variable_value("${floating_ip}")
16
17         try:
18             client = paramiko.SSHClient()
19             client.load_system_host_keys()
20             client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
21             client.connect(self._floating_ip,
22                            username=cloudadmin['username'],
23                            password=cloudadmin['password'])
24             _, stdout, _ = client.exec_command(self.INVENTORY_PATH)
25             self._inventory = json.loads(stdout.read())
26         finally:
27             client.close()
28
29         self._crf_nodes = self.get_node_ip_based_on_caas_profile("caas_master")
30         if not self._crf_nodes:
31             raise Exception("crf_nodes dictionary is empty!")
32         self._storage_nodes = self.get_node_ip_based_on_caas_profile("caas_storage")
33         self._worker_nodes = self.get_node_ip_based_on_caas_profile("caas_worker")
34
35     def get_floating_ip(self):
36         return self._floating_ip
37
38     def get_crf_nodes(self):
39         return self._crf_nodes
40
41     def get_storage_nodes(self):
42         return self._storage_nodes
43
44     def get_worker_nodes(self):
45         return self._worker_nodes
46
47     def get_all_nodes(self):
48         all_nodes = self._crf_nodes.copy()
49         all_nodes.update(self._storage_nodes)
50         all_nodes.update(self._worker_nodes)
51         return all_nodes
52
53     def get_inventory(self):
54         return self._inventory
55
56     def get_node_ip_based_on_caas_profile(self, caas_profile):  # pylint: disable=invalid-name
57         node_ip = {}
58         if caas_profile in self._inventory:
59             for node in self._inventory[caas_profile]:
60                 node_ip[node] = self._inventory["_meta"]["hostvars"][node]["networking"]["infra_internal"]["ip"]
61         return node_ip
62
63     def get_infra_int_if(self):
64         interface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_internal"]["interface"]
65         return interface
66
67     def get_infra_ext_if(self):
68         iface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_external"]["interface"]
69         return iface
70
71     def get_infra_storage_if(self):
72         iface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_storage_cluster"]["interface"]
73         return iface
74
75     def get_virtual_env(self):
76         virtual_env = self._inventory["all"]["vars"]["virtual_env"]
77         return virtual_env