Blob Blame History Raw
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