return builder
def get_all(self):
- builders = self.db.query("SELECT id FROM builders WHERE NOT status = 'deleted' ORDER BY name")
+ builders = self.db.query("SELECT * FROM builders WHERE NOT status = 'deleted' ORDER BY name")
- return [Builder(self.pakfire, b.id) for b in builders]
+ return [Builder(self.pakfire, b.id, b) for b in builders]
def get_by_id(self, id):
if not id:
return Builder(self.pakfire, id)
def get_by_name(self, name):
- builder = self.db.get("SELECT id FROM builders WHERE name = %s LIMIT 1", name)
+ builder = self.db.get("SELECT * FROM builders WHERE name = %s LIMIT 1", name)
if builder:
- return Builder(self.pakfire, builder.id)
+ return Builder(self.pakfire, builder.id, builder)
def get_all_arches(self):
arches = set()
class Builder(base.Object):
- def __init__(self, pakfire, id):
+ def __init__(self, pakfire, id, data=None):
base.Object.__init__(self, pakfire)
self.id = id
# Cache.
- self._data = None
+ self._data = data
self._active_jobs = None
self._arches = None
self._disabled_arches = None
def state(self):
return self.data.state
+ def is_broken(self):
+ return self.state == "broken"
+
def obsolete_others(self):
if not self.type == "release":
return
"""
Get all jobs in the specifies build.
"""
- query = "SELECT id FROM jobs WHERE build_id = %s"
+ query = "SELECT * FROM jobs WHERE build_id = %s"
args = [build_id,]
if type:
# Get IDs of all builds in this group.
jobs = []
for job in self.db.query(query, *args):
- job = Job(self.pakfire, job.id)
+ job = Job(self.pakfire, job.id, job)
# If the Build object was set, we set it so it won't be retrieved
# from the database again.
if uploads:
running_states.append("uploading")
- query = "SELECT id FROM jobs WHERE (%s)" % \
+ query = "SELECT * FROM jobs WHERE (%s)" % \
" OR ".join(["state = '%s'" % s for s in running_states])
if host_id:
query += " ORDER BY time_started DESC"
- return [Job(self.pakfire, j.id) for j in self.db.query(query)]
+ return [Job(self.pakfire, j.id, j) for j in self.db.query(query)]
def get_next_iter(self, arches=None, limit=None, offset=None, type=None, states=["pending", "new"], max_tries=None):
args = []
conditions.append("jobs.tries <= %s")
args.append(max_tries)
- query = "SELECT jobs.id AS id FROM jobs \
+ query = "SELECT jobs.* FROM jobs \
JOIN builds ON jobs.build_id = builds.id"
if conditions:
args += [limit]
for job in self.db.query(query, *args):
- yield Job(self.pakfire, job.id)
+ yield Job(self.pakfire, job.id, job)
def get_next(self, *args, **kwargs):
jobs = []
return jobs
def get_latest(self, builder=None, limit=10):
- query = "SELECT id FROM jobs"
+ query = "SELECT * FROM jobs"
#where = ["time_finished IS NOT NULL",]
where = ["(state = 'finished' OR state = 'failed')"]
query += " ORDER BY time_finished DESC LIMIT %s"
- return [Job(self.pakfire, j.id) for j in self.db.query(query, limit)]
+ return [Job(self.pakfire, j.id, j) for j in self.db.query(query, limit)]
def get_average_build_time(self):
"""
class Job(base.Object):
- def __init__(self, pakfire, id):
+ def __init__(self, pakfire, id, data=None):
base.Object.__init__(self, pakfire)
# The ID of this Job object.
self.id = id
# Cache the data of this object.
- self._data = None
+ self._data = data
self._build = None
self._builder = None
self._packages = None
class Distributions(base.Object):
def get_all(self):
- distros = self.db.query("SELECT id FROM distributions ORDER BY name")
+ distros = self.db.query("SELECT * FROM distributions ORDER BY name")
- return [Distribution(self.pakfire, d.id) for d in distros]
+ return [Distribution(self.pakfire, d.id, d) for d in distros]
def get_by_id(self, id):
- distro = self.db.get("SELECT id FROM distributions WHERE id = %s LIMIT 1", id)
+ distro = self.db.get("SELECT * FROM distributions WHERE id = %s LIMIT 1", id)
if distro:
- return Distribution(self.pakfire, distro.id)
+ return Distribution(self.pakfire, distro.id, distro)
def get_by_name(self, name):
- distro = self.db.get("SELECT id FROM distributions WHERE sname = %s LIMIT 1", name)
+ distro = self.db.get("SELECT * FROM distributions WHERE sname = %s LIMIT 1", name)
if distro:
- return Distribution(self.pakfire, distro.id)
+ return Distribution(self.pakfire, distro.id, distro)
def get_by_ident(self, ident):
return self.get_by_name(ident)
class Distribution(base.Object):
- def __init__(self, pakfire, id):
+ def __init__(self, pakfire, id, data=None):
base.Object.__init__(self, pakfire)
self.id = id
- self._data = None
+ self._data = data
self._arches = None
self._sources = None
class Repositories(base.Object):
def get_all(self):
- repos = self.db.query("SELECT id FROM repositories")
+ repos = self.db.query("SELECT * FROM repositories")
- return [Repository(self.pakfire, r.id) for r in repos]
+ return [Repository(self.pakfire, r.id, r) for r in repos]
def get_by_id(self, repo_id):
- repo = self.db.get("SELECT id FROM repositories WHERE id = %s", repo_id)
+ repo = self.db.get("SELECT * FROM repositories WHERE id = %s", repo_id)
if repo:
- return Repository(self.pakfire, repo.id)
+ return Repository(self.pakfire, repo.id, repo)
def get_needs_update(self, limit=None):
query = "SELECT id FROM repositories WHERE needs_update = 'Y'"
class Repository(base.Object):
- def __init__(self, pakfire, id):
+ def __init__(self, pakfire, id, data=None):
base.Object.__init__(self, pakfire)
self.id = id
# Cache.
- self._data = None
+ self._data = data
self._next = None
self._prev = None
self._key = None
@property
def data(self):
if self._data is None:
- self._data = \
- self.db.get("SELECT * FROM repositories WHERE id = %s", self.id)
+ self._data = self.db.get("SELECT * FROM repositories WHERE id = %s", self.id)
return self._data