From 148fba6d03b463c38d8ab9dcde719aa63c6209af Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Jan 22 2019 19:50:41 +0000 Subject: Minimal working PoC --- diff --git a/sidetag_hub.py b/sidetag_hub.py index 814bc50..41ced21 100644 --- a/sidetag_hub.py +++ b/sidetag_hub.py @@ -1,4 +1,4 @@ -# Copyright (C) 2016 Red Hat, Inc. +# Copyright (C) 2016-2019 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,24 +22,29 @@ import koji import sys sys.path.insert(0, '/usr/share/koji-hub/') -from kojihub import _singleValue, get_tag, InsertProcessor +from kojihub import _singleValue, get_tag, get_tag_id, get_build_target_id, InsertProcessor -__all__ = ('koscheiCreateRepo') +__all__ = ('createSideTag',) -@export -def koscheiCreateRepo(repo_id, tag): - """ - Add repo with specified repo_id for given tag and mark it as ready. - Calling user must have repo or admin permission. Specified - repo_id must not exist yet. Specified tag must be a valid tag - name. - """ - context.session.assertPerm('repo') +def insert(table, **kwargs): + ip = InsertProcessor(table) + ip.set(**kwargs) + ip.make_create() + ip.execute() +@export +def createSideTag(base_tag): event_id = _singleValue("SELECT get_event()") - tag_id = get_tag(tag, strict=True)['id'] - state = koji.REPO_READY + base_tag = get_tag(base_tag, strict=True) + # TODO: call assert_policy() + + sidetag_name = '{}-side-{}'.format(base_tag['name'], event_id) + sidetag_id = get_tag_id(sidetag_name, create=True) + target_name = sidetag_name + target_id = get_build_target_id(target_name, create=True) + + insert('tag_config', tag_id=sidetag_id) + insert('build_target_config', build_target_id=target_id, build_tag=sidetag_id, dest_tag=sidetag_id) + insert('tag_inheritance', tag_id=sidetag_id, parent_id=base_tag['id'], priority=0) - insert = InsertProcessor('repo') - insert.set(id=repo_id, create_event=event_id, tag_id=tag_id, state=state) - insert.execute() + return {'name': sidetag_name, 'id': sidetag_id}