--- /dev/null
+import sys
+import os
+import json
+import paramiko
+from robot.libraries.BuiltIn import BuiltIn
+from users import *
+sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
+
+
+class stack_infos: # pylint: disable=old-style-class
+
+ INVENTORY_PATH = "/opt/cmframework/scripts/inventory.sh"
+
+ def __init__(self):
+ self._floating_ip = BuiltIn().get_variable_value("${floating_ip}")
+
+ try:
+ client = paramiko.SSHClient()
+ client.load_system_host_keys()
+ client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
+ client.connect(self._floating_ip,
+ username=cloudadmin['username'],
+ password=cloudadmin['password'])
+ _, stdout, _ = client.exec_command(self.INVENTORY_PATH)
+ self._inventory = json.loads(stdout.read())
+ finally:
+ client.close()
+
+ self._crf_nodes = self.get_node_ip_based_on_caas_profile("caas_master")
+ if not self._crf_nodes:
+ raise Exception("crf_nodes dictionary is empty!")
+ self._storage_nodes = self.get_node_ip_based_on_caas_profile("caas_storage")
+ self._worker_nodes = self.get_node_ip_based_on_caas_profile("caas_worker")
+
+ def get_floating_ip(self):
+ return self._floating_ip
+
+ def get_crf_nodes(self):
+ return self._crf_nodes
+
+ def get_storage_nodes(self):
+ return self._storage_nodes
+
+ def get_worker_nodes(self):
+ return self._worker_nodes
+
+ def get_all_nodes(self):
+ all_nodes = self._crf_nodes.copy()
+ all_nodes.update(self._storage_nodes)
+ all_nodes.update(self._worker_nodes)
+ return all_nodes
+
+ def get_inventory(self):
+ return self._inventory
+
+ def get_node_ip_based_on_caas_profile(self, caas_profile): # pylint: disable=invalid-name
+ node_ip = {}
+ if caas_profile in self._inventory:
+ for node in self._inventory[caas_profile]:
+ node_ip[node] = self._inventory["_meta"]["hostvars"][node]["networking"]["infra_internal"]["ip"]
+ return node_ip
+
+ def get_infra_int_if(self):
+ interface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_internal"]["interface"]
+ return interface
+
+ def get_infra_ext_if(self):
+ iface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_external"]["interface"]
+ return iface
+
+ def get_infra_storage_if(self):
+ iface = self._inventory["_meta"]["hostvars"]["controller-1"]["networking"]["infra_storage_cluster"]["interface"]
+ return iface
+
+ def get_virtual_env(self):
+ virtual_env = self._inventory["all"]["vars"]["virtual_env"]
+ return virtual_env