summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJose Lausuch <jose.lausuch@ericsson.com>2016-11-18 11:39:01 +0000
committerGerrit Code Review <gerrit@opnfv.org>2016-11-18 11:39:01 +0000
commit4b7eec61896662e456bc185852c0fdcf961e04c8 (patch)
tree3856f3b86b0eb43f6a6771a4e68c2c6027d899fa
parentc34fbacd2405643f85d2c69aa0fed67459ad2e8c (diff)
parent6feca8823b63573d0ba5e67a3098c7745a068649 (diff)
Merge "Transform fetch_os_creds.sh into python Class"
-rw-r--r--modules/opnfv/installer_adapters/InstallerHandler.py8
-rw-r--r--modules/opnfv/installer_adapters/fuel/FuelAdapter.py4
-rw-r--r--modules/opnfv/installer_adapters/fuel/example.py10
-rw-r--r--modules/opnfv/utils/Connection.py30
-rw-r--r--modules/opnfv/utils/Credentials.py101
-rw-r--r--modules/opnfv/utils/SSHUtils.py4
6 files changed, 144 insertions, 13 deletions
diff --git a/modules/opnfv/installer_adapters/InstallerHandler.py b/modules/opnfv/installer_adapters/InstallerHandler.py
index b81b806ca..e353ef3f4 100644
--- a/modules/opnfv/installer_adapters/InstallerHandler.py
+++ b/modules/opnfv/installer_adapters/InstallerHandler.py
@@ -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"]
diff --git a/modules/opnfv/installer_adapters/fuel/FuelAdapter.py b/modules/opnfv/installer_adapters/fuel/FuelAdapter.py
index 95b2ab673..6f079404c 100644
--- a/modules/opnfv/installer_adapters/fuel/FuelAdapter.py
+++ b/modules/opnfv/installer_adapters/fuel/FuelAdapter.py
@@ -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:
diff --git a/modules/opnfv/installer_adapters/fuel/example.py b/modules/opnfv/installer_adapters/fuel/example.py
index 804d79c3d..7fea4dfd7 100644
--- a/modules/opnfv/installer_adapters/fuel/example.py
+++ b/modules/opnfv/installer_adapters/fuel/example.py
@@ -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
index 000000000..a3be51409
--- /dev/null
+++ b/modules/opnfv/utils/Connection.py
@@ -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
index 000000000..1882692b3
--- /dev/null
+++ b/modules/opnfv/utils/Credentials.py
@@ -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)
diff --git a/modules/opnfv/utils/SSHUtils.py b/modules/opnfv/utils/SSHUtils.py
index 2f48addbf..6c794c274 100644
--- a/modules/opnfv/utils/SSHUtils.py
+++ b/modules/opnfv/utils/SSHUtils.py
@@ -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