From fe510eeb7a5519feaf11eff98cca0ed2068093fd Mon Sep 17 00:00:00 2001 From: Yuming Zhu Date: Jun 01 2018 07:43:26 +0000 Subject: cli: [clone-tag] preserve build order --- diff --git a/cli/koji_cli/commands.py b/cli/koji_cli/commands.py index a9c14ac..46e35f2 100644 --- a/cli/koji_cli/commands.py +++ b/cli/koji_cli/commands.py @@ -1,8 +1,9 @@ from __future__ import absolute_import from __future__ import division + import ast import base64 -import dateutil.parser +from collections import OrderedDict import fnmatch import json import logging @@ -11,12 +12,13 @@ import os import pprint import random import re -import six import stat import sys import time import traceback +import dateutil.parser +import six import six.moves.xmlrpc_client from six.moves import filter from six.moves import map @@ -3302,9 +3304,10 @@ def handle_clone_tag(goptions, session, args): session.multiCall() if options.builds: # get --all latest builds from src tag - builds = session.listTagged(srctag['id'], event=event.get('id'), - inherit=options.inherit_builds, - latest=options.latest_only) + builds = reversed(session.listTagged(srctag['id'], + event=event.get('id'), + inherit=options.inherit_builds, + latest=options.latest_only)) if not options.test: session.multicall = True for build in builds: @@ -3337,7 +3340,7 @@ def handle_clone_tag(goptions, session, args): # get fresh list of packages & builds into maps. srcpkgs = {} dstpkgs = {} - srclblds = {} + srclblds = OrderedDict() dstlblds = {} srcgroups = {} dstgroups = {} @@ -3347,10 +3350,10 @@ def handle_clone_tag(goptions, session, args): for pkg in session.listPackages(tagID=dsttag['id'], inherited=True): dstpkgs[pkg['package_name']] = pkg if options.builds: - src_builds = session.listTagged(srctag['id'], - event=event.get('id'), - inherit=options.inherit_builds, - latest=options.latest_only) + src_builds = list(reversed(session.listTagged(srctag['id'], + event=event.get('id'), + inherit=options.inherit_builds, + latest=options.latest_only))) for build in src_builds: srclblds[build['nvr']] = build for build in session.getLatestBuilds(dsttag['name']): @@ -3376,7 +3379,7 @@ def handle_clone_tag(goptions, session, args): if nvr not in dstlblds: baddlist.append(lbld) baddlist.sort(key = lambda x: x['package_name']) - bdellist = [] # list containing new builds to be removed from src tag + bdellist = [] # list containing new builds to be removed from dst tag for (nvr, lbld) in six.iteritems(dstlblds): if nvr not in srclblds: bdellist.append(lbld)