From c6d5a68627033570995645e574d39ff7d2bbef82 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Apr 02 2021 14:48:46 +0000 Subject: Add support for side tag suffix This requires changes in the side-tag plugin in Koji. With that it would be possible to use a set of preconfigured suffixes for the tags. JIRA: RHELCMP-4332 Signed-off-by: Lubomír Sedlář --- diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index afc525a..a479851 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -3214,14 +3214,18 @@ class Commands(object): def remove_side_tag(self, tag): self.kojisession.removeSideTag(tag) - def request_side_tag(self, base_tag=None): + def request_side_tag(self, base_tag=None, suffix=None): if not base_tag: build_target = self.kojisession.getBuildTarget(self.target) if not build_target: raise rpkgError("Unknown build target: %s" % self.target) base_tag = build_target["build_tag_name"] - return self.kojisession.createSideTag(base_tag) + kwargs = {} + if suffix: + kwargs["suffix"] = suffix + + return self.kojisession.createSideTag(base_tag, **kwargs) def is_retired(self): """ diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py index 55d111c..002a1a0 100644 --- a/pyrpkg/cli.py +++ b/pyrpkg/cli.py @@ -1369,6 +1369,13 @@ class cliClient(object): "request-side-tag", help="Create a new side tag" ) parser.add_argument("--base-tag", help="name of base tag") + parser.add_argument( + "--suffix", + help=( + "A suffix to be appended to the side tag name. " + "The suffix must be allowed in Koji configuration." + ) + ) parser.set_defaults(command=self.request_side_tag) def register_retire(self): @@ -2565,7 +2572,9 @@ class cliClient(object): print("Tag deleted.") def request_side_tag(self): - tag_info = self.cmd.request_side_tag(base_tag=self.args.base_tag) + tag_info = self.cmd.request_side_tag( + base_tag=self.args.base_tag, suffix=self.args.suffix + ) print("Side tag '%(name)s' (id %(id)d) created." % tag_info) print("Use '%s build --target=%s' to use it." % (self.name, tag_info["name"])) print( diff --git a/tests/test_side_tag.py b/tests/test_side_tag.py index e4dbe3a..8507062 100644 --- a/tests/test_side_tag.py +++ b/tests/test_side_tag.py @@ -83,6 +83,23 @@ class RequestSideTagTestCase(BaseCase): self.assertIn("a problem", str(ctx.exception)) + def test_suffix(self): + cli = self.new_cli( + ["request-side-tag", "--base-tag=f30-build", "--suffix=stack-gate"] + ) + cli.cmd._kojisession.createSideTag.return_value = {"name": "side", "id": 123} + with mock.patch("sys.stdout", new_callable=StringIO) as mock_out: + cli.request_side_tag() + + output = mock_out.getvalue() + self.assertIn("Side tag 'side' (id 123) created.", output) + self.assertIn("Use 'rpkg build --target=side' to use it.", output) + + self.assertEqual( + cli.cmd._kojisession.createSideTag.call_args_list, + [mock.call("f30-build", suffix="stack-gate")], + ) + class ListSideTagTestCase(BaseCase): def test_list_all(self):