fix group cloning
This commit is contained in:
parent
cb1ebe1d30
commit
94991e0de7
2 changed files with 44 additions and 34 deletions
|
|
@ -11839,13 +11839,13 @@ class RootExports(object):
|
|||
if groups:
|
||||
srcgroups = OrderedDict()
|
||||
dstgroups = OrderedDict()
|
||||
for group in readTagGroups(src['name'], event=event):
|
||||
for group in readTagGroups(src['name'], event=event, incl_blocked=True):
|
||||
srcgroups[group['name']] = group
|
||||
for group in readTagGroups(dst['name']):
|
||||
for group in readTagGroups(dst['name'], incl_blocked=True):
|
||||
dstgroups[group['name']] = group
|
||||
|
||||
for (grpname, group) in srcgroups.items():
|
||||
if grpname not in dstgroups:
|
||||
if grpname not in dstgroups or group['blocked'] != dstgroups[grpname]['blocked']:
|
||||
_grplist_add(dst['id'], group['name'], block=group['blocked'], force=force)
|
||||
_delete_event_id()
|
||||
|
||||
|
|
@ -11862,42 +11862,43 @@ class RootExports(object):
|
|||
|
||||
for (grpname, group) in srcgroups.items():
|
||||
if grpname in dstgroups:
|
||||
_grplist_add(dst['id'], grpname, block=group['blocked'], force=force,
|
||||
opts=group)
|
||||
srcgrppkglist = []
|
||||
dstgrppkglist = []
|
||||
srcgrppkglist = {}
|
||||
dstgrppkglist = {}
|
||||
for pkg in group['packagelist']:
|
||||
srcgrppkglist.append(pkg)
|
||||
srcgrppkglist[pkg['package']] = pkg
|
||||
for pkg in dstgroups[grpname]['packagelist']:
|
||||
dstgrppkglist.append(pkg)
|
||||
for pkg in srcgrppkglist:
|
||||
if pkg not in dstgrppkglist:
|
||||
dstgrppkglist[pkg['package']] = pkg
|
||||
for pkg in srcgrppkglist.values():
|
||||
if pkg['package'] not in dstgrppkglist:
|
||||
_grp_pkg_add(dst['name'], grpname, pkg['package'],
|
||||
force=force, block=False)
|
||||
_delete_event_id()
|
||||
srcgrpreqlist = []
|
||||
dstgrpreqlist = []
|
||||
srcgrpreqlist = {}
|
||||
dstgrpreqlist = {}
|
||||
for grp in group['grouplist']:
|
||||
srcgrpreqlist.append(grp)
|
||||
srcgrpreqlist[grp['name']] = grp
|
||||
for grp in dstgroups[grpname]['grouplist']:
|
||||
dstgrpreqlist.append(grp)
|
||||
for grp in srcgrpreqlist:
|
||||
if grp not in dstgrpreqlist:
|
||||
dstgrpreqlist[grp['name']] = grp
|
||||
for grp in srcgrpreqlist.values():
|
||||
if grp['name'] not in dstgrpreqlist:
|
||||
_grp_req_add(dst['name'], grpname, grp['name'],
|
||||
force=force, block=grp['blocked'])
|
||||
_delete_event_id()
|
||||
if remove:
|
||||
for pkg in dstgrppkglist:
|
||||
if pkg not in srcgrppkglist:
|
||||
if pkg['tag_id'] == dst['id']:
|
||||
_grp_pkg_remove(dst['name'], grpname, pkg['package'],
|
||||
force=force)
|
||||
else:
|
||||
_grp_pkg_add(dst['id'], grpname, pkg['package'],
|
||||
block=True, force=force)
|
||||
for pkgname, pkg in dstgrppkglist.items():
|
||||
if pkg['blocked']:
|
||||
continue
|
||||
if srcgrppkglist.get(pkgname, {}).get('blocked'):
|
||||
_grp_pkg_add(dst['id'], grpname, pkg['package'],
|
||||
block=True, force=force)
|
||||
_delete_event_id()
|
||||
for grp in dstgrpreqlist:
|
||||
if grp not in srcgrpreqlist:
|
||||
elif pkgname not in srcgrppkglist and pkg['tag_id'] == dst['id']:
|
||||
_grp_pkg_remove(dst['name'], grpname, pkg['package'], force=force)
|
||||
_delete_event_id()
|
||||
for grp in dstgrpreqlist.values():
|
||||
if grp['blocked']:
|
||||
continue
|
||||
if grp['name'] not in srcgrpreqlist:
|
||||
if grp['group_id'] == dst['id']:
|
||||
_grp_req_remove(dst['name'], grpname, grp['name'], force=force)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -117,7 +117,13 @@ class TestSnapshotTagModify(unittest.TestCase):
|
|||
'id': 1,
|
||||
'name': 'group1',
|
||||
'blocked': False,
|
||||
'packagelist': [{'package': pkg1['package_name'], 'tag_id': src['id']}],
|
||||
'packagelist': [
|
||||
{
|
||||
'package': pkg1['package_name'],
|
||||
'tag_id': src['id'],
|
||||
'blocked': False,
|
||||
}
|
||||
],
|
||||
'grouplist': [{'group_id': 5, 'name': 'group5', 'blocked': False}],
|
||||
'inherited': False,
|
||||
}
|
||||
|
|
@ -125,7 +131,7 @@ class TestSnapshotTagModify(unittest.TestCase):
|
|||
'id': 2,
|
||||
'name': 'group2',
|
||||
'blocked': False,
|
||||
'package_list': [],
|
||||
'packagelist': [],
|
||||
'grouplist': [],
|
||||
'inherited': False,
|
||||
}
|
||||
|
|
@ -133,7 +139,13 @@ class TestSnapshotTagModify(unittest.TestCase):
|
|||
'id': 3,
|
||||
'name': 'group1',
|
||||
'blocked': False,
|
||||
'packagelist': [{'package': pkg2['package_name'], 'tag_id': dst['id']}],
|
||||
'packagelist': [
|
||||
{
|
||||
'package': pkg2['package_name'],
|
||||
'tag_id': dst['id'],
|
||||
'blocked': False,
|
||||
}
|
||||
],
|
||||
'grouplist': [{'group_id': 4, 'name': 'group4', 'blocked': False}],
|
||||
'inherited': False,
|
||||
}
|
||||
|
|
@ -201,9 +213,6 @@ class TestSnapshotTagModify(unittest.TestCase):
|
|||
mock.call('dst', 'group1', 'group5', block=False, force=True),
|
||||
mock.call('dst', 'group1', 'group4', block=True, force=True),
|
||||
])
|
||||
self._grplist_add.assert_has_calls([
|
||||
mock.call(dst['id'], 'group2', block=False, force=True),
|
||||
mock.call(dst['id'], 'group1', block=False, force=True, opts=src_group1),
|
||||
])
|
||||
self._grplist_add.assert_called_once_with(dst['id'], 'group2', block=False, force=True)
|
||||
self._grplist_remove.assert_not_called()
|
||||
self.hub.massTag.assert_not_called()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue