diff options
Diffstat (limited to 'fuel/deploy/hardware_adapters/hp/run_oa_command.py')
-rw-r--r-- | fuel/deploy/hardware_adapters/hp/run_oa_command.py | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/fuel/deploy/hardware_adapters/hp/run_oa_command.py b/fuel/deploy/hardware_adapters/hp/run_oa_command.py deleted file mode 100644 index 32135c3..0000000 --- a/fuel/deploy/hardware_adapters/hp/run_oa_command.py +++ /dev/null @@ -1,113 +0,0 @@ -import socket -import paramiko -import logging - -LOG = logging.getLogger(__name__) -out_hdlr = logging.FileHandler(__file__.split('.')[0] + '.log', mode='w') -out_hdlr.setFormatter(logging.Formatter('%(levelname)s: %(message)s')) -LOG.addHandler(out_hdlr) -LOG.setLevel(logging.DEBUG) - -class RunOACommand: - - def __init__(self, mgmt_ip, username, password): - self.ssh = None - self.mgmt_ip = mgmt_ip - self.username = username - self.password = password - self.error_message = "" - - def connected(self): - return self.ssh is not None - - def close(self): - if self.connected(): - self.ssh.close() - self.ssh = None - self.error_message = "" - - def connect(self): - LOG.info("Trying to connect to OA at %s" % self.mgmt_ip) - try: - self.ssh.connect(self.mgmt_ip, - username=self.username, - password=self.password, - look_for_keys=False, - allow_agent=False) - return True - except socket.error, (err, message): - self.error_message += ("Can not talk to OA %s: %s\n" % - (self.mgmt_ip, message)) - except Exception as e: - self.error_message += ("Can not talk to OA %s: %s\n" % - (self.mgmt_ip, e.args)) - LOG.error("Failed to connect to OA at %s" % self.mgmt_ip) - return False - - # Return None if this most likely is not an OA - # False if we failed to connect to an active OA - # True if connected - def connect_to_active(self): - self.error_message = "OA connect failed with these errors:\n" - - self.ssh = paramiko.SSHClient() - self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - - initial_mgmt_ip = self.mgmt_ip - if not self.connect(self.mgmt_ip, self.username, self.password): - octets = self.mgmt_ip.split(".") - self.mgmt_ip = "%s.%s.%s.%s" % (octets[0], - octets[1], - octets[2], - str(int(octets[3]) + 1)) - if not self.connect(self.mgmt_ip, self.username, self.password): - self.ssh = None - LOG.error("Failed to connect to OA at %s (and %s)" % - (initial_mgmt_ip, self.mgmt_ip)) - return None - - output = self.send_command("show oa status") - for line in output: - if "Standby" in line: - self.ssh.close() - self.error_message += ( - "%s is the standby OA, trying next OA\n" % self.mgmt_ip) - LOG.info("%s is the standby OA" % self.mgmt_ip) - if self.mgmt_ip != initial_mgmt_ip: - self.error_message += ( - "Can only talk to OA %s which is the standby OA\n" % - self.mgmt_ip) - self.ssh = None - return False - else: - octets = self.mgmt_ip.split(".") - self.mgmt_ip = "%s.%s.%s.%s" % (octets[0], - octets[1], - octets[2], - str(int(octets[3]) + 1)) - if not self.connect(self.mgmt_ip, self.username, - self.password): - self.ssh = None - return False - LOG.info("Connected to active OA at %s" % self.mgmt_ip) - self.error_message = "" - return True - - def send_command(self, cmd): - if not self.connected(): - self.error_message = ( - "Not connected, cannot send command %s\n" % (cmd)) - raise - - LOG.info('Sending "%s" to %s' % (cmd, self.mgmt_ip)) - stdin, stdout, stderr = self.ssh.exec_command(cmd) - output = [] - for line in stdout.read().splitlines(): - if line != '': - output.append(line) - return output - - def __exit__(self, type, value, traceback): - if self.connected(): - self.close() - self.ssh = None
\ No newline at end of file |