def detectoldbridge(self): """ Occasionally, control net bridges from previously closed sessions are not cleaned up. Check if there are old control net bridges and delete them :return: True if an old bridge was detected, False otherwise :rtype: bool """ status, output = utils.cmd_output([constants.BRCTL_BIN, "show"]) if status != 0: logging.error("Unable to retrieve list of installed bridges") else: lines = output.split("\n") for line in lines[1:]: cols = line.split("\t") oldbr = cols[0] flds = cols[0].split(".") if len(flds) == 3: if flds[0] == "b" and flds[1] == self.id: logging.error( "error: An active control net bridge (%s) found. " "An older session might still be running. " "Stop all sessions and, if needed, delete %s to continue.", oldbr, oldbr) return True return False
def ns_cmd(self, cmd): if isinstance(cmd, list): cmd = " ".join(cmd) args = "nsenter -t {pid} -u -i -p -n {cmd}".format(pid=self.pid, cmd=cmd) logging.info("ns cmd: %s", args) return utils.cmd_output(args)
def copy_file(self, source, destination): if destination[0] != "/": destination = os.path.join("/root/", destination) args = "lxc file push {source} {name}/{destination}".format( source=source, name=self.name, destination=destination) status, output = utils.cmd_output(args) if status: raise CoreCommandError(status, args, output)
def get_pid(self): args = "docker inspect -f '{{{{.State.Pid}}}}' {name}".format( name=self.name) status, output = utils.cmd_output(args) if status: raise CoreCommandError(status, args, output) self.pid = output logging.debug("node(%s) pid: %s", self.name, self.pid) return output
def get_info(self): args = "lxc list {name} --format json".format(name=self.name) status, output = utils.cmd_output(args) if status: raise CoreCommandError(status, args, output) data = json.loads(output) if not data: raise CoreCommandError( status, args, "LXC({name}) not present".format(name=self.name)) return data[0]
def get_info(self): args = "docker inspect {name}".format(name=self.name) status, output = utils.cmd_output(args) if status: raise CoreCommandError(status, args, output) data = json.loads(output) if not data: raise CoreCommandError( status, args, "docker({name}) not present".format(name=self.name)) return data[0]
def detectversionfromcmd(cls): """ Detect the apache2 version using the 'a2query' command. """ try: status, result = utils.cmd_output(["a2query", "-v"]) except CoreCommandError: status = -1 if status == 0 and result[:3] == "2.4": return cls.APACHEVER24 return cls.APACHEVER22
def ns_cmd_output(self, cmd): if isinstance(cmd, list): cmd = " ".join(cmd) args = self._ns_args(cmd) logging.info("ns cmd: %s", args) return utils.cmd_output(args)
def cmd_output(self, cmd): if isinstance(cmd, list): cmd = " ".join(cmd) args = self._cmd_args(cmd) logging.info("lxc cmd output: %s", args) return utils.cmd_output(args)
def copy_file(self, source, destination): args = "docker cp {source} {name}:{destination}".format( source=source, name=self.name, destination=destination) status, output = utils.cmd_output(args) if status: raise CoreCommandError(status, args, output)
def cmd_output(self, cmd): if isinstance(cmd, list): cmd = " ".join(cmd) logging.info("docker cmd output: %s", cmd) return utils.cmd_output("docker exec {name} {cmd}".format( name=self.name, cmd=cmd))