diff options
| author | Scott Bahling <sbahling@suse.com> | 2020-09-03 10:47:20 +0200 |
|---|---|---|
| committer | Scott Bahling <sbahling@suse.com> | 2020-09-03 10:47:20 +0200 |
| commit | 8ed467497a4b259f61a7129c19f1134aaa405cb8 (patch) | |
| tree | 8ab24396f65905d48fe641d082c5d90a7c8d0010 /obsapi | |
| parent | c2aa724ddf8b9d579c0a0d6694127c53744eb8ca (diff) | |
| download | obsapi-8ed467497a4b259f61a7129c19f1134aaa405cb8.tar.gz obsapi-8ed467497a4b259f61a7129c19f1134aaa405cb8.tar.xz obsapi-8ed467497a4b259f61a7129c19f1134aaa405cb8.zip | |
Add job history wrappers
Diffstat (limited to 'obsapi')
| -rw-r--r-- | obsapi/core.py | 16 | ||||
| -rw-r--r-- | obsapi/jobhist.py | 37 |
2 files changed, 53 insertions, 0 deletions
diff --git a/obsapi/core.py b/obsapi/core.py index 26b7b7e..2baf072 100644 --- a/obsapi/core.py +++ b/obsapi/core.py @@ -8,6 +8,7 @@ from obsapi.sourceapi import ObsSourceApi from obsapi.buildapi import ObsBuildApi from obsapi.repoflags import RepoFlags from obsapi.fileinfo import FileInfo +from obsapi.jobhist import JobHist from .null import Null @@ -411,3 +412,18 @@ class ObsApi(object): params['cmd'] = 'remove_flag' return self.source.post(prj, pkg, **params) + + def get_jobhistory_list(self, prj, repo, arch, package=None, code=None, limit=None): + '''Get build job history for packages in project + + :param prj: OBS Project + :param repo: OBS Repository + "param arch: Architecture + :param package: OBS Package (optional, limit result to this package) + :param limit: Number of jot histories to limit to (optional) + + :returns: List of JobHist objects + ''' + xml = self.build.get_jobhistory(prj, repo, arch, pkg=package, code=code, limit=limit) + root = xml2etree(xml) + return [JobHist(jh) for jh in root.findall('jobhist')] diff --git a/obsapi/jobhist.py b/obsapi/jobhist.py new file mode 100644 index 0000000..be4577f --- /dev/null +++ b/obsapi/jobhist.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- + +from lxml import etree +from datetime import datetime +from obsapi.helpers import xml2etree + + +class JobHist(): + + def __init__(self, element): + self.root = xml2etree(element) + + def __str__(self): + return self.xml + + def __getattr__(self, attr): + value = self.root.get(attr) + if value is None: + raise AttributeError + + return value + + @property + def starttime(self): + return datetime.fromtimestamp(int(self.root.get('starttime'))) + + @property + def endtime(self): + return datetime.fromtimestamp(int(self.root.get('endtime'))) + + @property + def readytime(self): + return datetime.fromtimestamp(int(self.root.get('readytime'))) + + @property + def xml(self): + return etree.tostring(self.root) |
