Disable notifications from clone-tag by default

The tagBuildBypass and untagBuildBypass invocations in the clone-tag
CLI were not setting the notify option, leaving it at the default of
True. This means in some cases many hundreds of notification events
would be triggered from a clone-tag call.

Change the default behavior of clone-tag to explicitly disable
notifications

Add a new --notify option to clone-tag to re-enable notifications for
tagging and untagging of builds.

Fixes: #1890
This commit is contained in:
Christopher O'Brien 2019-12-19 11:50:42 -05:00 committed by Tomas Kopecek
parent e4062ea1ea
commit ff1996564c
2 changed files with 31 additions and 14 deletions

View file

@ -3272,6 +3272,8 @@ def handle_clone_tag(goptions, session, args):
help=_('Clone tag at a specific repo event'))
parser.add_option("-v", "--verbose", action="store_true",
help=_("show changes"))
parser.add_option("--notify", action="store_true", default=False,
help=_('Send tagging/untagging notifications'))
parser.add_option("-f", "--force", action="store_true",
help=_("override tag locks if necessary"))
parser.add_option("-n", "--test", action="store_true", help=_("test mode"))
@ -3371,7 +3373,8 @@ def handle_clone_tag(goptions, session, args):
if not options.test:
session.tagBuildBypass(newtag['name'],
build,
force=options.force)
force=options.force,
notify=options.notify)
if not options.test:
session.multiCall(batch=options.batch)
if options.groups:
@ -3546,7 +3549,8 @@ def handle_clone_tag(goptions, session, args):
if not options.test:
session.untagBuildBypass(dsttag['name'],
build,
force=options.force)
force=options.force,
notify=options.notify)
if not options.test:
session.multiCall(batch=options.batch)
# ADD builds.
@ -3565,7 +3569,8 @@ def handle_clone_tag(goptions, session, args):
if not options.test:
session.tagBuildBypass(dsttag['name'],
build,
force=options.force)
force=options.force,
notify=options.notify)
if not options.test:
session.multiCall(batch=options.batch)
# ADD groups.
@ -3631,7 +3636,8 @@ def handle_clone_tag(goptions, session, args):
if not options.test:
session.untagBuildBypass(dsttag['name'],
build,
force=options.force)
force=options.force,
notify=options.notify)
# now safe to remove package itself since we resolved its builds.
chgpkglist.append(('[del]',
pkg['package_name'],

View file

@ -244,25 +244,29 @@ clone-tag will create the destination tag if it does not already exist
'nvr': 'pkg2-1.0-1',
'package_name': 'pkg2', 'state': 2,
'tag_name': 'src-tag-p',
'name': 'pkg2'}, force=None),
'name': 'pkg2'}, force=None,
notify=False),
call.tagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-1.0-1',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'src-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.tagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-1.0-2',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'src-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.tagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-1.1-2',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'src-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.multiCall(batch=1000),
call.getTagGroups('src-tag',
event=None),
@ -506,38 +510,44 @@ List of changes:
'nvr': 'pkg1-2.1-2',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'dst-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.untagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-0.1-1',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'dst-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.untagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg3-1.0-1',
'package_name': 'pkg3', 'state': 1,
'tag_name': 'dst-tag',
'name': 'pkg3'}, force=None),
'name': 'pkg3'}, force=None,
notify=False),
call.multiCall(batch=1000),
call.tagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-0.1-1',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'src-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.tagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-1.0-2',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'src-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.tagBuildBypass('dst-tag', {
'owner_name': 'b_owner',
'nvr': 'pkg1-1.1-2',
'package_name': 'pkg1', 'state': 1,
'tag_name': 'src-tag',
'name': 'pkg1'}, force=None),
'name': 'pkg1'}, force=None,
notify=False),
call.multiCall(batch=1000),
call.multiCall(batch=1000),
call.groupPackageListAdd('dst-tag',
@ -633,6 +643,7 @@ Options:
--event=EVENT Clone tag at a specific event
--repo=REPO Clone tag at a specific repo event
-v, --verbose show changes
--notify Send tagging/untagging notifications
-f, --force override tag locks if necessary
-n, --test test mode
--batch=SIZE batch size of multicalls [0 to disable, default: 1000]