aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-01-20 16:00:00 +0100
committerMartin Polden <mpolden@mpolden.no>2021-01-20 16:00:00 +0100
commitcfb499d7e64c69b0f2503e5225c321b37eba37a2 (patch)
treee532964d3f97ae67566cc21ec989010cb9f6d60b /node-admin
parentf81246c38252ca2c068b56b4a26cb00df944fa55 (diff)
Handle RHEL 8 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.java6
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java4
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java30
3 files changed, 32 insertions, 8 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 88f64e22ea5..f3fa6bc65e4 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,9 +43,9 @@ public class YumPackageName {
private static final Pattern ARCHITECTURE_PATTERN = Pattern.compile("\\.(" + ARCHITECTURES_OR + "|\\*)$");
private static final Pattern EPOCH_PATTERN = Pattern.compile("^((.+)-)?([0-9]+)$");
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._-]+$");
+ "([+()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 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 270f2107b87..589362e747f 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
@@ -119,7 +119,9 @@ public class YumTester extends Yum {
public YumTester andReturn(boolean value) {
// Pretend package is already correctly version locked to simplify expectations
terminal.expectCommand("yum --version 2>&1", 0, yumVersion.toFullString() + "\ntrailing garbage\n");
- terminal.expectCommand("yum --quiet versionlock list 2>&1", 0, packages.get(0).toVersionLockName(yumVersion));
+
+ String quiet = yumVersion.getMajor() < 4 ? " --quiet" : "";
+ terminal.expectCommand("yum" + quiet +" versionlock list 2>&1", 0, packages.get(0).toVersionLockName(yumVersion));
return super.andReturn(value);
}
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 3a8868d70f9..0880640b84d 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
@@ -106,6 +106,17 @@ public class YumPackageNameTest {
"x86_64",
"2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
"2:docker-1.12.6-71.git3e8e77d.el7.centos.1.*");
+
+ // name-ver-rel.arch (RHEL 8)
+ verifyPackageName("podman-1.9.3-2.module+el8.2.1+6867+366c07d6.x86_64",
+ null,
+ "podman",
+ "1.9.3",
+ "2.module+el8.2.1+6867+366c07d6",
+ "x86_64",
+ "podman-0:1.9.3-2.module+el8.2.1+6867+366c07d6.x86_64",
+ "podman-0:1.9.3-2.module+el8.2.1+6867+366c07d6.*",
+ YumVersion.rhel8);
}
private void verifyPackageName(String packageName,
@@ -116,24 +127,35 @@ public class YumPackageNameTest {
String architecture,
String toName,
String toVersionName) {
- Version yumVersion = Version.fromString("3");
+ verifyPackageName(packageName, epoch, name, version, release, architecture, toName, toVersionName, YumVersion.rhel7);
+ }
+
+ private void verifyPackageName(String packageName,
+ String epoch,
+ String name,
+ String version,
+ String release,
+ String architecture,
+ String toName,
+ String toVersionName,
+ YumVersion yumVersion) {
YumPackageName yumPackageName = YumPackageName.fromString(packageName);
verifyValue(epoch, yumPackageName.getEpoch());
verifyValue(name, Optional.of(yumPackageName.getName()));
verifyValue(version, yumPackageName.getVersion());
verifyValue(release, yumPackageName.getRelease());
verifyValue(architecture, yumPackageName.getArchitecture());
- verifyValue(toName, Optional.of(yumPackageName.toName(yumVersion)));
+ verifyValue(toName, Optional.of(yumPackageName.toName(yumVersion.asVersion())));
if (toVersionName == null) {
try {
- yumPackageName.toVersionLockName(yumVersion);
+ yumPackageName.toVersionLockName(yumVersion.asVersion());
fail();
} catch (IllegalStateException e) {
assertThat(e.getMessage(), containsStringIgnoringCase("Version is missing "));
}
} else {
- assertEquals(toVersionName, yumPackageName.toVersionLockName(yumVersion));
+ assertEquals(toVersionName, yumPackageName.toVersionLockName(yumVersion.asVersion()));
}
}