koji_hub / kojira: rebase kojira for new koji release
One of the 2 patches we were carrying for kojira was merged upstream in 1.22. The other wasn't yet, so we need to keep it around for now. But we need to merge in the other 1.22 changes or auth fails. Hopefully this rebases to 1.22 Signed-off-by: Kevin Fenzi <kevin@scrye.com>
This commit is contained in:
parent
0f59c04d7f
commit
4dc3a0029d
2 changed files with 23 additions and 23 deletions
|
@ -64,7 +64,7 @@ def getTag(session, tag, event=None):
|
|||
|
||||
class ManagedRepo(object):
|
||||
|
||||
def __init__(self, manager, data):
|
||||
def __init__(self, manager, data, repodata=None):
|
||||
self.manager = manager
|
||||
self.session = manager.session
|
||||
self.options = manager.options
|
||||
|
@ -81,7 +81,7 @@ class ManagedRepo(object):
|
|||
self.expire_ts = None
|
||||
if koji.REPO_STATES[self.state] in ['EXPIRED', 'DELETED', 'PROBLEM']:
|
||||
self.current = False
|
||||
self.expire_ts = time.time()
|
||||
self._find_expire_time(repodata)
|
||||
# TODO use hub data to find the actual expiration time
|
||||
self.first_seen = time.time()
|
||||
if self.current:
|
||||
|
@ -92,6 +92,17 @@ class ManagedRepo(object):
|
|||
tags[x['parent_id']] = 1
|
||||
self.taglist = to_list(tags.keys())
|
||||
|
||||
def _find_expire_time(self, repodata):
|
||||
# find all newer repos for same tag and set oldest as expire_ts for our repo
|
||||
if repodata:
|
||||
repos = [r for r in repodata if
|
||||
r['tag_id'] == self.tag_id and r['create_event'] > self.event_id]
|
||||
if repos:
|
||||
invalidated_by = sorted(repos, key=lambda x: x['create_event'])
|
||||
self.expire_ts = invalidated_by[0]['create_ts']
|
||||
if not self.expire_ts:
|
||||
self.expire_ts = time.time()
|
||||
|
||||
@property
|
||||
def dist(self):
|
||||
# TODO: remove this indirection once we can rely on the hub to return
|
||||
|
@ -209,10 +220,6 @@ class ManagedRepo(object):
|
|||
times = [ts for ts in times if ts is not None]
|
||||
age = time.time() - max(times)
|
||||
logger.debug("Repo %s (%s) age: %i sec", self.repo_id, path, age)
|
||||
logger.debug("Repo %s (%s) mtime: %i sec", self.repo_id, path, mtime)
|
||||
logger.debug("Repo %s (%s) self.event_ts: %i sec", self.repo_id, path, self.event_ts)
|
||||
logger.debug("Repo %s (%s) self.expire_ts: %i sec", self.repo_id, path, self.expire_ts)
|
||||
logger.debug("Repo %s (%s) max: %i sec", self.repo_id, path, max(times))
|
||||
if age < lifetime:
|
||||
return False
|
||||
logger.debug("Attempting to delete repo %s.." % self.repo_id)
|
||||
|
@ -378,7 +385,7 @@ class RepoManager(object):
|
|||
else:
|
||||
self.logger.info('Found repo %s, state=%s'
|
||||
% (repo_id, koji.REPO_STATES[data['state']]))
|
||||
repo = ManagedRepo(self, data)
|
||||
repo = ManagedRepo(self, data, repodata)
|
||||
self.repos[repo_id] = repo
|
||||
if not getTag(self.session, repo.tag_id) and not repo.expired():
|
||||
self.logger.info('Tag %d for repo %d disappeared, expiring.', repo.tag_id, repo_id)
|
||||
|
@ -1076,10 +1083,6 @@ def get_options():
|
|||
'principal': None,
|
||||
'keytab': '/etc/kojira/kojira.keytab',
|
||||
'ccache': '/var/tmp/kojira.ccache',
|
||||
'krbservice': 'host',
|
||||
'krb_rdns': True,
|
||||
'krb_canon_host': False,
|
||||
'krb_server_realm': None,
|
||||
'retry_interval': 60,
|
||||
'max_retries': 120,
|
||||
'offline_retry': True,
|
||||
|
@ -1089,7 +1092,6 @@ def get_options():
|
|||
'max_repo_tasks': 4,
|
||||
'max_repo_tasks_maven': 2,
|
||||
'repo_tasks_limit': 10,
|
||||
'delete_batch_size': 3,
|
||||
'deleted_repo_lifetime': 7 * 24 * 3600,
|
||||
# XXX should really be called expired_repo_lifetime
|
||||
'dist_repo_lifetime': 7 * 24 * 3600,
|
||||
|
@ -1104,15 +1106,14 @@ def get_options():
|
|||
if config.has_section(section):
|
||||
int_opts = ('deleted_repo_lifetime', 'max_repo_tasks', 'repo_tasks_limit',
|
||||
'retry_interval', 'max_retries', 'offline_retry_interval',
|
||||
'max_delete_processes', 'max_repo_tasks_maven',
|
||||
'delete_batch_size', 'dist_repo_lifetime', 'sleeptime',
|
||||
'recent_tasks_lifetime')
|
||||
'max_delete_processes', 'max_repo_tasks_maven', 'dist_repo_lifetime',
|
||||
'sleeptime', 'recent_tasks_lifetime')
|
||||
str_opts = ('topdir', 'server', 'user', 'password', 'logfile', 'principal', 'keytab',
|
||||
'krbservice', 'cert', 'ca', 'serverca', 'debuginfo_tags', 'queue_file',
|
||||
'cert', 'ca', 'serverca', 'debuginfo_tags', 'queue_file',
|
||||
'source_tags', 'separate_source_tags', 'ignore_tags') # FIXME: remove ca here
|
||||
bool_opts = ('verbose', 'debug', 'ignore_stray_repos', 'offline_retry',
|
||||
'krb_rdns', 'krb_canon_host', 'no_ssl_verify', 'check_external_repos')
|
||||
legacy_opts = ('with_src')
|
||||
'no_ssl_verify', 'check_external_repos')
|
||||
legacy_opts = ('with_src', 'delete_batch_size')
|
||||
for name in config.options(section):
|
||||
if name in int_opts:
|
||||
defaults[name] = config.getint(section, name)
|
||||
|
@ -1189,8 +1190,8 @@ if __name__ == "__main__":
|
|||
elif options.user:
|
||||
# authenticate using user/password
|
||||
session.login()
|
||||
elif (koji.krbV or koji.requests_kerberos) and options.principal and options.keytab:
|
||||
session.krb_login(options.principal, options.keytab, options.ccache)
|
||||
elif koji.reqgssapi and options.principal and options.keytab:
|
||||
session.gssapi_login(options.principal, options.keytab, options.ccache)
|
||||
else:
|
||||
quit("No username/password/certificate supplied and Kerberos missing or not configured")
|
||||
# get an exclusive session
|
||||
|
|
|
@ -465,11 +465,10 @@
|
|||
- koji_hub
|
||||
|
||||
# for now we have a patched version of kojira
|
||||
# Based on the 1.21.1 version
|
||||
# Based on the 1.22.0 version
|
||||
# With:
|
||||
# https://pagure.io/koji/pull-request/2140.patch
|
||||
# https://pagure.io/koji/pull-request/2340.patch
|
||||
# Hopefully all merged in 1.22.
|
||||
# Hopefully all merged in 1.23.
|
||||
#
|
||||
- name: copy in patched kojira
|
||||
copy: src=kojira dest=/usr/sbin/kojira
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue