Пример #1
0
 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)
Пример #2
0
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)
Пример #3
0
 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
Пример #4
0
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
Пример #5
0
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
Пример #6
0
    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