From 309f75f15b569df6a087897c3c89d837a797e51c Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Sep 25 2017 12:48:19 +0000 Subject: drop importBuildInPlace call "The importBuildInPlace call is an artifact of a particular bootstrap event that happened a long time ago. It's not really documented or recommended for current use." Related: https://pagure.io/koji/issue/553 --- diff --git a/cli/koji_cli/commands.py b/cli/koji_cli/commands.py index 56a0446..4df7e3b 100644 --- a/cli/koji_cli/commands.py +++ b/cli/koji_cli/commands.py @@ -2062,29 +2062,6 @@ def handle_list_signed(goptions, session, args): print(signedpath) -def handle_import_in_place(goptions, session, args): - "[admin] Import RPMs that are already in place" - usage = _("usage: %prog import-in-place [options] package [package...]") - usage += _("\n(Specify the --help global option for a list of other help options)") - parser = OptionParser(usage=usage) - (options, args) = parser.parse_args(args) - if len(args) < 1: - parser.error(_("At least one package must be specified")) - assert False # pragma: no cover - activate_session(session, goptions) - for nvr in args: - data = koji.parse_NVR(nvr) - sys.stdout.write(_("importing %s... ") % nvr) - try: - session.importBuildInPlace(data) - except koji.GenericError as e: - print(_("\nError importing: %s" % str(e).splitlines()[-1])) - sys.stdout.flush() - else: - print(_("done")) - sys.stdout.flush() - - def handle_import_archive(options, session, args): "[admin] Import an archive file and associate it with a build" usage = _("usage: %prog import-archive build-id|n-v-r /path/to/archive...") diff --git a/hub/kojihub.py b/hub/kojihub.py index c60c6c1..fbe9b8f 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -5659,81 +5659,6 @@ def import_rpm_file(fn, buildinfo, rpminfo): final_path = "%s/%s" % (koji.pathinfo.build(buildinfo), koji.pathinfo.rpm(rpminfo)) _import_archive_file(fn, os.path.dirname(final_path)) -def import_build_in_place(build): - """[DEPRECATED] Import a package already in the packages directory - - This is used for bootstrapping the database - Parameters: - build: a dictionary with fields: name, version, release - """ - # Only an admin may do this - logger.warning('import_build_in_place() is DEPRECATED') - context.session.assertPerm('admin') - prev = get_build(build) - if prev is not None: - state = koji.BUILD_STATES[prev['state']] - if state == 'COMPLETE': - log_error("Skipping build %r, already in db" % build) - # TODO - check contents against db - return prev['id'] - elif state not in ('FAILED', 'CANCELED'): - raise koji.GenericError("build already exists (%s): %r" % (state, build)) - #otherwise try to reimport - bdir = koji.pathinfo.build(build) - srpm = None - rpms = [] - srpmname = "%(name)s-%(version)s-%(release)s.src.rpm" % build - # look for srpm first - srcdir = bdir + "/src" - if os.path.isdir(srcdir): - for basename in os.listdir(srcdir): - if basename != srpmname: - raise koji.GenericError("unexpected file: %s" % basename) - srpm = "%s/%s" % (srcdir, basename) - for arch in os.listdir(bdir): - if arch == 'src': - #already done that - continue - if arch == "data": - continue - adir = "%s/%s" % (bdir, arch) - if not os.path.isdir(adir): - raise koji.GenericError("out of place file: %s" % adir) - for basename in os.listdir(adir): - fn = "%s/%s" % (adir, basename) - if not os.path.isfile(fn): - raise koji.GenericError("unexpected non-regular file: %s" % fn) - if fn[-4:] != '.rpm': - raise koji.GenericError("out of place file: %s" % adir) - #check sourcerpm field - hdr = koji.get_rpm_header(fn) - sourcerpm = hdr[rpm.RPMTAG_SOURCERPM] - if sourcerpm != srpmname: - raise koji.GenericError("srpm mismatch for %s: %s (expected %s)" \ - % (fn, sourcerpm, srpmname)) - rpms.append(fn) - koji.plugin.run_callbacks('preImport', type='build', in_place=True, srpm=srpm, rpms=rpms) - # actually import - buildinfo = None - if srpm is not None: - rpminfo = import_rpm(srpm) - add_rpm_sig(rpminfo['id'], koji.rip_rpm_sighdr(srpm)) - buildinfo = rpminfo['build'] - # file already in place - for fn in rpms: - rpminfo = import_rpm(fn, buildinfo) - add_rpm_sig(rpminfo['id'], koji.rip_rpm_sighdr(fn)) - #update build state - build_id = buildinfo['id'] - st_complete = koji.BUILD_STATES['COMPLETE'] - koji.plugin.run_callbacks('preBuildStateChange', attribute='state', old=buildinfo['state'], new=st_complete, info=buildinfo) - update = """UPDATE build SET state=%(st_complete)i,completion_time=NOW() - WHERE id=%(build_id)i""" - _dml(update, locals()) - koji.plugin.run_callbacks('postBuildStateChange', attribute='state', old=buildinfo['state'], new=st_complete, info=buildinfo) - koji.plugin.run_callbacks('postImport', type='build', in_place=True, build=buildinfo, srpm=srpm, rpms=rpms) - return build_id - def _import_wrapper(task_id, build_info, rpm_results): """Helper function to import wrapper rpms for a Maven build""" rpm_buildroot_id = rpm_results['buildroot_id'] @@ -9016,7 +8941,6 @@ class RootExports(object): getTagExternalRepos = staticmethod(get_tag_external_repos) getExternalRepoList = staticmethod(get_external_repo_list) - importBuildInPlace = staticmethod(import_build_in_place) resetBuild = staticmethod(reset_build) def importArchive(self, filepath, buildinfo, type, typeInfo): diff --git a/tests/test_cli/data/list-commands-admin.txt b/tests/test_cli/data/list-commands-admin.txt index 959689f..d5449f3 100644 --- a/tests/test_cli/data/list-commands-admin.txt +++ b/tests/test_cli/data/list-commands-admin.txt @@ -34,7 +34,6 @@ admin commands: import Import externally built RPMs into the database import-archive Import an archive file and associate it with a build import-cg Import external builds with rich metadata - import-in-place Import RPMs that are already in place import-sig Import signatures into the database list-signed List signed copies of rpms lock-tag Lock a tag diff --git a/tests/test_cli/data/list-commands.txt b/tests/test_cli/data/list-commands.txt index df64059..c462f64 100644 --- a/tests/test_cli/data/list-commands.txt +++ b/tests/test_cli/data/list-commands.txt @@ -34,7 +34,6 @@ admin commands: import Import externally built RPMs into the database import-archive Import an archive file and associate it with a build import-cg Import external builds with rich metadata - import-in-place Import RPMs that are already in place import-sig Import signatures into the database list-signed List signed copies of rpms lock-tag Lock a tag