5 from robot.libraries.BuiltIn import BuiltIn
7 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
10 class stack_infos: # pylint: disable=old-style-class
12 INVENTORY_PATH = "/opt/cmframework/scripts/inventory.sh"
15 self._floating_ip = BuiltIn().get_variable_value("${floating_ip}")
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())
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")
35 def get_floating_ip(self):
36 return self._floating_ip
38 def get_crf_nodes(self):
39 return self._crf_nodes
41 def get_storage_nodes(self):
42 return self._storage_nodes
44 def get_worker_nodes(self):
45 return self._worker_nodes
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)
53 def get_inventory(self):
54 return self._inventory
56 def get_node_ip_based_on_caas_profile(self, caas_profile): # pylint: disable=invalid-name
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"]
63 def get_infra_int_if(self):
64 interface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_internal"]["interface"]
67 def get_infra_ext_if(self):
68 iface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_external"]["interface"]
71 def get_infra_storage_if(self):
72 iface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_storage_cluster"]["interface"]
75 def get_virtual_env(self):
76 virtual_env = self._inventory["all"]["vars"]["virtual_env"]