summaryrefslogtreecommitdiff
path: root/obsapi
diff options
context:
space:
mode:
Diffstat (limited to 'obsapi')
-rw-r--r--obsapi/core.py16
-rw-r--r--obsapi/jobhist.py37
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)