Commit 809b3847 authored by Seblu's avatar Seblu
Browse files

new get_tags api (again)

parent 1406600e
Loading
Loading
Loading
Loading
+35 −30
Original line number Diff line number Diff line
@@ -26,44 +26,49 @@ class CliHandler(RpcHandler):
        Printer().fatal("Disconnected from server!")

    @pure
    def get_tags(self, tags=None, resolve=False):
        if tags is None:
            tags = [ x[8:] for x in dir(self) if x.startswith("get_tag_") ]
    def get_tags(self, complete=None, partial=None):
        # prepare work
        taglist = [ x[8:] for x in dir(self) if x.startswith("get_tag_") ]
        ctag = set(taglist) if complete is None else set(complete)
        ptag = set(taglist) if partial is None else set(partial)
        d = dict()
        for t in tags:
        # remove unknown tags
        ctag.intersection_update(taglist)
        ptag.intersection_update(taglist)
        # build partial tags
        for t in ptag:
            d[t] = { "ttl": getattr(self, "get_tag_%s"%t).ttl }
        # build complete tags
        for t in ctag:
            method = "get_tag_%s"%t
            if hasattr(self, method):
                d[t] = getattr(self, method)(resolve)
            d[t] = { "value": getattr(self, method)(), "ttl": getattr(self, method).ttl}
        # answer
        return d

    def get_tag_version(self, resolve):
    def get_tag_version(self):
        '''Return tag version'''
        return { "value": cccli.version, "ttl": -1 }
        return cccli.version
    get_tag_version.ttl = -1

    def get_tag_os(self, resolve):
    def get_tag_os(self):
        '''Return Operating system tag'''
        if resolve:
            return { "value": platform.system().lower(), "ttl": -1 }
        return { "ttl": -1 }
        return platform.system().lower()
    get_tag_os.ttl = -1

    def get_tag_uname(self, resolve):
    def get_tag_uname(self):
        '''Return uname output'''
        if resolve:
        try:
            p = subprocess.Popen(["uname", "-a"], close_fds=True, shell=False, stdout=subprocess.PIPE)
                return  { "value": p.stdout.read().rstrip("\n")  , "ttl": -1 }
            return  p.stdout.read().rstrip("\n")
        except Exception:
                return { "value": "", "ttl": -1 }
        else:
            return { "ttl": -1 }
            return ""
    get_tag_uname.ttl = -1

    def get_tag_uptime(self, resolve):
    def get_tag_uptime(self):
        '''Return uptime output'''
        if resolve:
        try:
            p = subprocess.Popen(["uptime"], close_fds=True, shell=False, stdout=subprocess.PIPE)
                return  { "value": p.stdout.read().rstrip("\n")  , "ttl": 3 }
            return  p.stdout.read().rstrip("\n")
        except Exception:
                return { "value": "", "ttl": 3 }
        else:
            return { "ttl": 3 }
            return ""
    get_tag_uptime.ttl = 3