diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-01-13 16:51:52 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-01-13 16:52:48 +0100 |
commit | f0d37730dd38abf5b376a468f86e7bbfbd5f27a6 (patch) | |
tree | b361835f3f9fe7a4d0880bf21cdc53aa1eea4490 /node-admin | |
parent | 904b825d0d473cd74b7cc863bc808fa62cfb58d0 (diff) |
Allow parenthesis in Yum package name
Diffstat (limited to 'node-admin')
3 files changed, 20 insertions, 3 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java index 3f5c3025850..5718c0cb6f3 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java @@ -43,7 +43,7 @@ public class YumPackageName { private static final Pattern NAME_VER_REL_PATTERN = Pattern.compile("^((.+)-)?" + "([a-z0-9._]*[0-9][a-z0-9._]*)-" + // ver contains at least one digit "([a-z0-9._]*[0-9][a-z0-9._]*)$"); // rel contains at least one digit - private static final Pattern NAME_PATTERN = Pattern.compile("^[a-zA-Z0-9._-]+$"); + private static final Pattern NAME_PATTERN = Pattern.compile("^[()a-zA-Z0-9._-]+$"); private final Optional<String> epoch; private final String name; diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java index c5b46473218..ebba76e44e4 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java @@ -77,7 +77,13 @@ public class YumTester extends Yum { cmd.append(" --setopt skip_missing_names_on_install=False"); if ("upgrade".equals(command) && packages.size() > 1) cmd.append(" --setopt skip_missing_names_on_update=False"); - packages.forEach(pkg -> cmd.append(" ").append(pkg.toName())); + packages.forEach(pkg -> { + String name = pkg.toName(); + if (name.contains("(") || name.contains(")")) { // Ugly hack to handle implicit quoting done in com.yahoo.vespa.hosted.node.admin.task.util.process.CommandLine + name = "\"" + name + "\""; + } + cmd.append(" ").append(name); + }); cmd.append(" 2>&1"); terminal.expectCommand(cmd.toString(), 0, output); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java index 64e2997d486..bc90602dfa3 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java @@ -37,6 +37,17 @@ public class YumPackageNameTest { "docker-engine-selinux", null); + // name with parenthesis + verifyPackageName( + "dnf-command(versionlock)", + null, + "dnf-command(versionlock)", + null, + null, + null, + "dnf-command(versionlock)", + null); + // name.arch verifyPackageName( "docker-engine-selinux.x86_64", @@ -168,4 +179,4 @@ public class YumPackageNameTest { .setVersion("1.13.1") .build())); } -}
\ No newline at end of file +} |