Transform fetch_os_creds.sh into python Class 87/24487/4
authorjose.lausuch <jose.lausuch@ericsson.com>
Thu, 17 Nov 2016 10:35:39 +0000 (11:35 +0100)
committerjose.lausuch <jose.lausuch@ericsson.com>
Thu, 17 Nov 2016 13:06:09 +0000 (14:06 +0100)
JIRA: RELENG-168

Change-Id: Id5b1fca430c37917b554a54dd0678d9d7497dc11
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
modules/opnfv/installer_adapters/InstallerHandler.py
modules/opnfv/installer_adapters/fuel/FuelAdapter.py
modules/opnfv/installer_adapters/fuel/example.py
modules/opnfv/utils/Connection.py [new file with mode: 0644]
modules/opnfv/utils/Credentials.py [new file with mode: 0644]
modules/opnfv/utils/SSHUtils.py

index b81b806..e353ef3 100644 (file)
@@ -7,10 +7,10 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-from FuelAdapter import FuelAdapter
-from ApexAdapter import ApexAdapter
-from CompassAdapter import CompassAdapter
-from JoidAdapter import JoidAdapter
+from opnfv.installer_adapters.fuel.FuelAdapter import FuelAdapter
+from opnfv.installer_adapters.apex.ApexAdapter import ApexAdapter
+from opnfv.installer_adapters.compass.CompassAdapter import CompassAdapter
+from opnfv.installer_adapters.joid.JoidAdapter import JoidAdapter
 
 
 INSTALLERS = ["fuel", "apex", "compass", "joid"]
index 95b2ab6..6f07940 100644 (file)
@@ -8,8 +8,8 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 
-import opnfv.modules.utils.SSHUtils as ssh_utils
-import opnfv.modules.utils.OPNFVLogger as logger
+import opnfv.utils.SSHUtils as ssh_utils
+import opnfv.utils.OPNFVLogger as logger
 
 
 class FuelAdapter:
index 804d79c..7fea4df 100644 (file)
@@ -1,12 +1,12 @@
 # This is an example of usage of this Tool
 # Author: Jose Lausuch (jose.lausuch@ericsson.com)
 
-from InstallerHandler import InstallerHandler
+import opnfv.installer_adapters.InstallerHandler as ins_handler
 
-fuel_handler = InstallerHandler(installer='fuel',
-                                installer_ip='10.20.0.2',
-                                installer_user='root',
-                                installer_pwd='r00tme')
+fuel_handler = ins_handler.InstallerHandler(installer='fuel',
+                                            installer_ip='10.20.0.2',
+                                            installer_user='root',
+                                            installer_pwd='r00tme')
 print("Nodes in cluster 1:\n%s\n" %
       fuel_handler.get_nodes(options={'cluster': '1'}))
 print("Nodes in cluster 2:\n%s\n" %
diff --git a/modules/opnfv/utils/Connection.py b/modules/opnfv/utils/Connection.py
new file mode 100644 (file)
index 0000000..a3be514
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+
+
+import os
+import time
+
+
+class Connection(object):
+
+    def __init__(self):
+        pass
+
+    def verify_connectivity(self, target):
+        for x in range(0, 10):
+            ping_cmd = ("ping -c 1 -W 1 %s >/dev/null" % target)
+            response = os.system(ping_cmd)
+            if response == 0:
+                return os.EX_OK
+            time.sleep(1)
+        return os.EX_UNAVAILABLE
+
+    def check_internet_access(self, url="www.google.com"):
+        return self.verify_connectivity(url)
diff --git a/modules/opnfv/utils/Credentials.py b/modules/opnfv/utils/Credentials.py
new file mode 100644 (file)
index 0000000..1882692
--- /dev/null
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Usage example:
+#   from opnfv.utils.Credentials import Credentials as credentials
+#   credentials("fuel", "10.20.0.2", "root", "r00tme").fetch('./openrc')
+#
+
+import os
+
+import opnfv.installer_adapters.InstallerHandler as ins_handler
+import opnfv.utils.Connection as con
+import opnfv.utils.OPNFVLogger as logger
+
+
+class Credentials(object):
+
+    def __init__(self, installer, ip, user, password=None):
+        self.installer = installer
+        self.ip = ip
+        self.logger = logger.Logger("Credentials", level="DEBUG").getLogger()
+        self.connection = con.Connection()
+
+        if self.__check_installer_name(self.installer) != os.EX_OK:
+            self.logger.error("Installer %s not supported!" % self.installer)
+            return os.EX_CONFIG
+        else:
+            self.logger.debug("Installer %s supported." % self.installer)
+
+        if self.connection.verify_connectivity(self.ip) != os.EX_OK:
+            self.logger.error("Installer %s not reachable!" % self.ip)
+            return os.EX_UNAVAILABLE
+        else:
+            self.logger.debug("IP %s is reachable!" % self.ip)
+
+        self.logger.debug(
+            "Trying to stablish ssh connection to %s ..." % self.ip)
+        self.handler = ins_handler.InstallerHandler(installer,
+                                                    ip,
+                                                    user,
+                                                    password)
+
+    def __check_installer_name(self, installer):
+        if installer not in ("apex", "compass", "fuel", "joid"):
+            return os.EX_CONFIG
+        else:
+            return os.EX_OK
+
+    def __check_path(self, path):
+        try:
+            with open(path, 'a'):
+                os.utime(path, None)
+            return os.EX_OK
+        except IOError as e:
+            self.logger.error(e)
+            return os.EX_IOERR
+
+    def __fetch_creds_apex(self, target_path):
+        # TODO
+        pass
+
+    def __fetch_creds_compass(self, target_path):
+        # TODO
+        pass
+
+    def __fetch_creds_fuel(self, target_path):
+        creds_file = '/root/openrc'
+        try:
+            self.handler.get_file_from_controller(creds_file, target_path)
+        except Exception, e:
+            self.logger.error(
+                "Cannot get %s from controller. %e" % (creds_file, e))
+        pass
+
+    def __fetch_creds_joid(self, target_path):
+        # TODO
+        pass
+
+    def fetch(self, target_path):
+        if self.__check_path(target_path) != os.EX_OK:
+            self.logger.error(
+                "Target path %s does not exist!" % target_path)
+            return os.EX_IOERR
+        else:
+            self.logger.debug("Target path correct.")
+
+        self.logger.info("Fetching credentials from the deployment...")
+        if self.installer == "apex":
+            self.__fetch_creds_apex(target_path)
+        elif self.installer == "compass":
+            self.__fetch_creds_compass(target_path)
+        elif self.installer == "fuel":
+            self.__fetch_creds_fuel(target_path)
+        elif self.installer == "joid":
+            self.__fetch_creds_joid(target_path)
index 2f48add..6c794c2 100644 (file)
@@ -10,7 +10,7 @@
 
 
 import paramiko
-import opnfv.modules.utils.OPNFVLogger as OPNFVLogger
+import opnfv.utils.OPNFVLogger as OPNFVLogger
 import os
 
 logger = OPNFVLogger.Logger('SSHUtils').getLogger()
@@ -68,7 +68,7 @@ class JumpHostHopClient(paramiko.SSHClient):
     '''
 
     def __init__(self, *args, **kwargs):
-        self.logger = rl.Logger("JumpHostHopClient").getLogger()
+        self.logger = OPNFVLogger.Logger("JumpHostHopClient").getLogger()
         self.jumphost_ssh = None
         self.jumphost_transport = None
         self.jumphost_channel = None