diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-01-20 16:00:00 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-01-20 16:00:00 +0100 |
commit | cfb499d7e64c69b0f2503e5225c321b37eba37a2 (patch) | |
tree | e532964d3f97ae67566cc21ec989010cb9f6d60b /node-admin | |
parent | f81246c38252ca2c068b56b4a26cb00df944fa55 (diff) |
Handle RHEL 8 package name
Diffstat (limited to 'node-admin')
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())); } } |