def add_route_for_oam(self, oam_gate_way): oam_ip = self.get_oam_ip() oam_bridge = self.get_oam_bridge() if oam_ip and oam_bridge: LOG.Info("Add route for oam %s via %s on dev %s" % (oam_ip, oam_gate_way, oam_bridge)) ret, log = CMD.shell("sudo ip route add %s via %s dev %s" % (oam_ip, oam_gate_way, oam_bridge)) if ret: LOG.print_error(log)
def get_ctn_related_status(node, logfile=None, withceph=False): cmds = [] cmds.append("system host-list") if withceph == True: cmds.append("ceph -s") cmds.append("export KUBECONFIG=\"/etc/kubernetes/admin.conf\"") cmds.append("kubectl -n kube-system get po") cmds.append("sudo docker ps") retval, retlog = node.stx_cmd(";".join(cmds), logfile=getlogfile(logfile)) if retval == 0: LOG.print_log(retlog) else: LOG.print_error(retlog)
def copy_from_node(self, src, dst): if self.get_oam_ip(): if self.SecurePath: retval, retlog = UTILS.scp_from_server(src, dst, self.get_oam_ip(), self.User) else: retval, retlog = UTILS.scp_from_server(src, dst, self.get_oam_ip(), self.User, password=self.Password) if retval == 0: return True else: LOG.print_error(retlog) self.Error("Failed to copy %s from node." % src) return False
def __stx_app_op(node0, op, helm_charts=None, appname=None, silent=False): retval = 0 if helm_charts or appname: cmd = "set -ex; system %s %s" % (op, helm_charts if helm_charts else appname) retval, retlog = node0.stx_cmd(cmd, silent=silent) elif op == APP_OP_LIST: retval, retlog = node0.stx_cmd("system %s" % op, silent=silent) else: LOG.Error( "No valid helm charts or app name provided, or unsupported operation." ) return -1, None if retval: LOG.print_error(retlog) else: LOG.print_log(retlog) return retval, retlog
def shell(cmd, cwd=None, logfile=None, silent=False, DEBUG=False): realcmd = cmd if DEBUG: realcmd = "echo \"%s\"" % cmd result = None retval = 0 if cwd != None: os.chdir(cwd) try: result = SP.check_output(realcmd, shell=True).splitlines() except SP.CalledProcessError as ecp: if not silent: LOG.Error("ERROR: failed to run \"%s\": returned %s" % (cmd, ecp.returncode)) LOG.print_error(ecp.output.splitlines()) retval = ecp.returncode retlog = ecp.output.splitlines() except Exception as error: if not silent: LOG.Error("ERROR: failed to run \"%s\": %s" % (cmd, error)) retval = -1 result_str = [] if result: for l in result: if isinstance(l, bytes): result_str.append(l.decode(encoding="utf-8", errors="strict")) else: result_str = result break if logfile != None: with open(logfile, "w") as f: for l in result_str: f.write(l) f.write("\n") if cwd != None: os.chdir(CurrPath) return retval, result_str
def create_secure_path(self): self.Info("Start to create secure ssh path.") oam_ip = self.get_oam_ip() if oam_ip: retval, retlog = UTILS.create_secure_path(oam_ip, self.User, password=self.Password) if retval == 0: self.Info("Secure SSH path created.") self.SecurePath = True # self.sudo_nopasswd() floating_ip = self.get_floating_ip() if floating_ip: UTILS.add_sshkey_config(floating_ip, self.User) return True else: LOG.print_error(retlog) self.Error("Failed to generate secure ssh path.") self.Status = NODE_ERROR self.SecurePath = False return False