summaryrefslogtreecommitdiffstats
path: root/fuel/deploy/hardware_adapters/hp/run_oa_command.py
diff options
context:
space:
mode:
Diffstat (limited to 'fuel/deploy/hardware_adapters/hp/run_oa_command.py')
-rw-r--r--fuel/deploy/hardware_adapters/hp/run_oa_command.py113
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