summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-01-13 16:51:52 +0100
committerMartin Polden <mpolden@mpolden.no>2021-01-13 16:52:48 +0100
commitf0d37730dd38abf5b376a468f86e7bbfbd5f27a6 (patch)
treeb361835f3f9fe7a4d0880bf21cdc53aa1eea4490 /node-admin
parent904b825d0d473cd74b7cc863bc808fa62cfb58d0 (diff)
Allow parenthesis in Yum package name
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java8
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java13
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
+}