aboutsummaryrefslogtreecommitdiffstats
path: root/opnfv/utils/Credentials.py
diff options
context:
space:
mode:
Diffstat (limited to 'opnfv/utils/Credentials.py')
-rw-r--r--opnfv/utils/Credentials.py101
1 files changed, 101 insertions, 0 deletions
diff --git a/opnfv/utils/Credentials.py b/opnfv/utils/Credentials.py
new file mode 100644
index 0000000..1882692
--- /dev/null
+++ b/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)