From 174f61ce13d47c84a1a9f697c7c6b7c817db73f7 Mon Sep 17 00:00:00 2001
From: Ken Dreyer <kdreyer@redhat.com>
Date: Wed, 25 Sep 2019 11:56:21 -0600
Subject: [PATCH 3/5] container-build: add --isolated argument
Add support for a new "--isolated" argument to the container-build
sub-command.
Isolated builds will only update the {version}-{release} unique tag and
the primary tag in target container registry. Also, OSBS's bump_release
plugin will ignore isolated builds.
Users must specify a --build-release argument when the use the
--isolated argument.
Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
---
pyrpkg/__init__.py | 2 +-
pyrpkg/cli.py | 13 +++++++++++++
tests/test_cli.py | 4 ++++
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py
index 8e0960b..1aa1c2b 100644
--- a/pyrpkg/__init__.py
+++ b/pyrpkg/__init__.py
@@ -3125,7 +3125,7 @@ class Commands(object):
source = self.construct_build_url()
task_opts = {}
- for key in ('scratch', 'name', 'version', 'release',
+ for key in ('scratch', 'name', 'version', 'release', 'isolated',
'yum_repourls', 'git_branch', 'signing_intent', 'compose_ids',
'skip_build'):
if key in opts:
diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py
index 7ab146d..0845d99 100644
--- a/pyrpkg/cli.py
+++ b/pyrpkg/cli.py
@@ -1544,6 +1544,13 @@ see API KEY section of copr-cli(1) man page.
default=None,
help="Specify a release value for this build's NVR")
+ parser.add_argument(
+ '--isolated',
+ help='Do not auto-increment the release value or update'
+ ' additional tags in the registry. You must use the'
+ ' --build-release argument',
+ action="store_true")
+
parser.add_argument(
'--scratch',
help='Scratch build',
@@ -1981,6 +1988,7 @@ see API KEY section of copr-cli(1) man page.
opts = {"scratch": self.args.scratch,
"quiet": self.args.q,
"release": self.args.build_release,
+ "isolated": self.args.isolated,
"git_branch": self.cmd.branch_merge,
"arches": self.args.arches,
"skip_build": self.args.skip_build}
@@ -1995,6 +2003,11 @@ see API KEY section of copr-cli(1) man page.
"signing_intent": self.args.signing_intent,
})
+ if self.args.isolated and not self.args.build_release:
+ self.container_build_parser.error(
+ 'missing --build-release: using --isolated requires'
+ ' --build-release option')
+
section_name = "%s.container-build" % self.name
err_msg = "Missing %(option)s option in [%(plugin.section)s] section. " \
"Using %(option)s from [%(root.section)s]"
diff --git a/tests/test_cli.py b/tests/test_cli.py
index ae87030..35b37d6 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -224,6 +224,7 @@ class TestContainerBuildWithKoji(CliTestCase):
'scratch': False,
'quiet': False,
'release': None,
+ 'isolated': False,
'yum_repourls': None,
'git_branch': 'eng-rhel-7',
'arches': None,
@@ -254,6 +255,7 @@ class TestContainerBuildWithKoji(CliTestCase):
'scratch': False,
'quiet': False,
'release': None,
+ 'isolated': False,
'yum_repourls': None,
'git_branch': 'eng-rhel-7',
'arches': None,
@@ -293,6 +295,7 @@ class TestContainerBuildWithKoji(CliTestCase):
'scratch': False,
'quiet': False,
'release': None,
+ 'isolated': False,
'yum_repourls': None,
'git_branch': 'eng-rhel-7',
'arches': None,
@@ -350,6 +353,7 @@ class TestContainerBuildWithKoji(CliTestCase):
'scratch': False,
'quiet': False,
'release': None,
+ 'isolated': False,
'git_branch': 'eng-rhel-7',
'arches': None,
'skip_build': False
--
2.21.0