summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-07-02 10:50:45 +0200
committerMartin Polden <mpolden@mpolden.no>2021-07-06 13:59:38 +0200
commit8c8b129ad285bf36a7cc660c1d62f2410bfacd0d (patch)
treec4cc1df53227203edd14eaaad136a189326fb08b /node-admin
parent67f953e2974e098c05365d4d45dd66d69254508c (diff)
Remove support for Yum 3
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java16
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java7
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumVersion.java3
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java53
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java60
5 files changed, 52 insertions, 87 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 f3fa6bc65e4..abe5dc1cbb3 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
@@ -233,17 +233,11 @@ public class YumPackageName {
StringBuilder builder = new StringBuilder();
boolean isBare = version.isEmpty() && release.isEmpty() && architecture.isEmpty();
char nextDelimiter;
- if (yumVersion.getMajor() < 4) {
- epoch.ifPresent(ep -> builder.append(ep).append(':'));
- builder.append(name);
- nextDelimiter = '-';
- } else {
- builder.append(name);
- // Fully versioned package names must always include epoch in Yum 4
- epoch.or(() -> Optional.of("0").filter(v -> !isBare))
- .ifPresent(ep -> builder.append('-').append(ep));
- nextDelimiter = ':';
- }
+ builder.append(name);
+ // Fully versioned package names must always include epoch in Yum 4
+ epoch.or(() -> Optional.of("0").filter(v -> !isBare))
+ .ifPresent(ep -> builder.append('-').append(ep));
+ nextDelimiter = ':';
version.ifPresent(s -> builder.append(nextDelimiter).append(s));
release.ifPresent(s -> builder.append('-').append(s));
architecture.ifPresent(arch -> builder.append('.').append(arch));
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 e47d71cbdf7..a73f5d04704 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
@@ -20,7 +20,7 @@ public class YumTester extends Yum {
private final Version yumVersion;
public YumTester(TestTerminal terminal) {
- this(terminal, YumVersion.rhel7);
+ this(terminal, YumVersion.rhel8);
}
public YumTester(TestTerminal terminal, YumVersion yumVersion) {
@@ -130,11 +130,10 @@ public class YumTester extends Yum {
@Override
public YumTester andReturn(boolean value) {
- // Pretend package is already correctly version locked to simplify expectations
+ // Pretend package is already correctly version-locked to simplify expectations
terminal.expectCommand("yum --version 2>&1", 0, yumVersion.toFullString() + "\ntrailing garbage\n");
- String quiet = yumVersion.getMajor() < 4 ? " --quiet" : "";
- terminal.expectCommand("yum" + quiet +" versionlock list 2>&1", 0, packages.get(0).toVersionLockName(yumVersion));
+ terminal.expectCommand("yum versionlock list 2>&1", 0, packages.get(0).toVersionLockName(yumVersion));
return super.andReturn(value);
}
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumVersion.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumVersion.java
index b0c2805d620..8eba4561805 100644
--- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumVersion.java
+++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumVersion.java
@@ -4,13 +4,12 @@ package com.yahoo.vespa.hosted.node.admin.task.util.yum;
import com.yahoo.component.Version;
/**
- * Red Hat versions and their associated Yum major version.
+ * Red Hat versions and their associated Yum/DNF major version.
*
* @author mpolden
*/
public enum YumVersion {
- rhel7(3),
rhel8(4);
private final Version version;
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 0880640b84d..0341558d538 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
@@ -26,7 +26,6 @@ public class YumPackageNameTest {
.setRelease("71.git3e8e77d.el7.centos.1")
.setArchitecture("x86_64")
.build();
- assertEquals("2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64", yumPackage.toName(Version.fromString("3")));
assertEquals("docker-2:1.12.6-71.git3e8e77d.el7.centos.1.x86_64", yumPackage.toName(Version.fromString("4")));
}
@@ -62,28 +61,28 @@ public class YumPackageNameTest {
null,
null,
"x86_64",
- "docker-engine-selinux.x86_64",
+ "docker-engine-selinux-0.x86_64",
null);
// name-ver-rel
- verifyPackageName("docker-engine-selinux-1.12.6-1.el7",
- null,
+ verifyPackageName("docker-engine-selinux-0:1.12.6-1.el7",
+ "0",
"docker-engine-selinux",
"1.12.6",
"1.el7",
null,
- "docker-engine-selinux-1.12.6-1.el7",
- "0:docker-engine-selinux-1.12.6-1.el7.*");
+ "docker-engine-selinux-0:1.12.6-1.el7",
+ "docker-engine-selinux-0:1.12.6-1.el7.*");
// name-ver-rel.arch
- verifyPackageName("docker-engine-selinux-1.12.6-1.el7.x86_64",
- null,
+ verifyPackageName("docker-engine-selinux-0:1.12.6-1.el7.x86_64",
+ "0",
"docker-engine-selinux",
"1.12.6",
"1.el7",
"x86_64",
- "docker-engine-selinux-1.12.6-1.el7.x86_64",
- "0:docker-engine-selinux-1.12.6-1.el7.*");
+ "docker-engine-selinux-0:1.12.6-1.el7.x86_64",
+ "docker-engine-selinux-0:1.12.6-1.el7.*");
// name-epoch:ver-rel.arch
verifyPackageName(
@@ -93,30 +92,19 @@ public class YumPackageNameTest {
"1.12.6",
"71.git3e8e77d.el7.centos.1",
"x86_64",
- "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
- "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.*");
+ "docker-2:1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "docker-2:1.12.6-71.git3e8e77d.el7.centos.1.*");
// epoch:name-ver-rel.arch
verifyPackageName(
- "2:docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "docker-2:1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
"2",
"docker",
"1.12.6",
"71.git3e8e77d.el7.centos.1",
"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);
+ "docker-2:1.12.6-71.git3e8e77d.el7.centos.1.x86_64",
+ "docker-2:1.12.6-71.git3e8e77d.el7.centos.1.*");
}
private void verifyPackageName(String packageName,
@@ -127,18 +115,7 @@ public class YumPackageNameTest {
String architecture,
String toName,
String toVersionName) {
- 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) {
+ YumVersion yumVersion = YumVersion.rhel8;
YumPackageName yumPackageName = YumPackageName.fromString(packageName);
verifyValue(epoch, yumPackageName.getEpoch());
verifyValue(name, Optional.of(yumPackageName.getName()));
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
index 92f8f78d255..2699135b5b9 100644
--- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
+++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java
@@ -92,7 +92,7 @@ public class YumTest {
// RHEL 8
mockRpmQuery("package-1", null);
- mockYumVersion(YumVersion.rhel8);
+ mockYumVersion();
terminal.expectCommand(
"yum install --assumeyes --enablerepo=repo1 --enablerepo=repo2 --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
0,
@@ -115,7 +115,7 @@ public class YumTest {
.converge(taskContext));
// RHEL 8
- mockYumVersion(YumVersion.rhel8);
+ mockYumVersion();
terminal.expectCommand(
"yum upgrade --assumeyes --setopt skip_missing_names_on_update=False package-1 package-2 2>&1",
0,
@@ -140,7 +140,7 @@ public class YumTest {
// RHEL 8
mockRpmQuery("package-1", YumPackageName.fromString("package-1-1.2.3-1"));
- mockYumVersion(YumVersion.rhel8);
+ mockYumVersion();
terminal.expectCommand(
"yum remove --assumeyes package-1 package-2 2>&1",
0,
@@ -196,22 +196,22 @@ public class YumTest {
@Test
public void testWithVersionLock() {
mockYumVersion();
- terminal.expectCommand("yum --quiet versionlock list 2>&1",
+ terminal.expectCommand("yum versionlock list 2>&1",
0,
"Repository chef_rpms-release is listed more than once in the configuration\n" +
"0:chef-12.21.1-1.el7.*\n");
- terminal.expectCommand("yum versionlock add --assumeyes \"0:package-1-0.10-654.el7.*\" 2>&1");
+ terminal.expectCommand("yum versionlock add --assumeyes \"package-0:0.10-654.el7.*\" 2>&1");
terminal.expectCommand(
- "yum install --assumeyes 0:package-1-0.10-654.el7.x86_64 2>&1",
+ "yum install --assumeyes package-0:0.10-654.el7.x86_64 2>&1",
0,
"installing");
- assertTrue(yum.installFixedVersion(YumPackageName.fromString("0:package-1-0.10-654.el7.x86_64")).converge(taskContext));
+ assertTrue(yum.installFixedVersion(YumPackageName.fromString("package-0:0.10-654.el7.x86_64")).converge(taskContext));
}
@Test
public void testWithVersionLockYum4() {
- mockYumVersion(YumVersion.rhel8);
+ mockYumVersion();
terminal.expectCommand("yum versionlock list 2>&1",
0,
"Last metadata expiration check: 0:51:26 ago on Thu 14 Jan 2021 09:39:24 AM UTC.\n");
@@ -233,24 +233,24 @@ public class YumTest {
@Test
public void testWithDifferentVersionLock() {
mockYumVersion();
- terminal.expectCommand("yum --quiet versionlock list 2>&1",
+ terminal.expectCommand("yum versionlock list 2>&1",
0,
"Repository chef_rpms-release is listed more than once in the configuration\n" +
- "0:chef-12.21.1-1.el7.*\n" +
- "0:package-1-0.1-8.el7.*\n");
+ "chef-0:12.21.1-1.el7.*\n" +
+ "package-0:0.1-8.el7.*\n");
- terminal.expectCommand("yum versionlock delete \"0:package-1-0.1-8.el7.*\" 2>&1");
+ terminal.expectCommand("yum versionlock delete \"package-0:0.1-8.el7.*\" 2>&1");
- terminal.expectCommand("yum versionlock add --assumeyes --enablerepo=somerepo \"0:package-1-0.10-654.el7.*\" 2>&1");
+ terminal.expectCommand("yum versionlock add --assumeyes --enablerepo=somerepo \"package-0:0.10-654.el7.*\" 2>&1");
terminal.expectCommand(
- "yum install --assumeyes --enablerepo=somerepo 0:package-1-0.10-654.el7 2>&1",
+ "yum install --assumeyes --enablerepo=somerepo package-0:0.10-654.el7 2>&1",
0,
"Nothing to do\n");
assertTrue(yum
- .installFixedVersion(YumPackageName.fromString("0:package-1-0.10-654.el7"))
+ .installFixedVersion(YumPackageName.fromString("package-0:0.10-654.el7"))
.enableRepo("somerepo")
.converge(taskContext));
}
@@ -258,37 +258,37 @@ public class YumTest {
@Test
public void testWithExistingVersionLock() {
mockYumVersion();
- terminal.expectCommand("yum --quiet versionlock list 2>&1",
+ terminal.expectCommand("yum versionlock list 2>&1",
0,
"Repository chef_rpms-release is listed more than once in the configuration\n" +
- "0:chef-12.21.1-1.el7.*\n" +
- "0:package-1-0.10-654.el7.*\n");
+ "chef-0:12.21.1-1.el7.*\n" +
+ "package-0:0.10-654.el7.*\n");
terminal.expectCommand(
- "yum install --assumeyes 0:package-1-0.10-654.el7 2>&1",
+ "yum install --assumeyes package-0:0.10-654.el7 2>&1",
0,
"Nothing to do\n");
- assertFalse(yum.installFixedVersion(YumPackageName.fromString("0:package-1-0.10-654.el7")).converge(taskContext));
+ assertFalse(yum.installFixedVersion(YumPackageName.fromString("package-0:0.10-654.el7")).converge(taskContext));
}
@Test
public void testWithDowngrade() {
mockYumVersion();
- terminal.expectCommand("yum --quiet versionlock list 2>&1",
+ terminal.expectCommand("yum versionlock list 2>&1",
0,
"Repository chef_rpms-release is listed more than once in the configuration\n" +
- "0:chef-12.21.1-1.el7.*\n" +
- "0:package-1-0.10-654.el7.*\n");
+ "chef-0:12.21.1-1.el7.*\n" +
+ "package-0:0.10-654.el7.*\n");
terminal.expectCommand(
- "yum install --assumeyes 0:package-1-0.10-654.el7 2>&1",
+ "yum install --assumeyes package-0:0.10-654.el7 2>&1",
0,
- "Package matching package-1-0.10-654.el7 already installed. Checking for update.\n" +
+ "Package matching package-=.0.10-654.el7 already installed. Checking for update.\n" +
"Nothing to do\n");
- terminal.expectCommand("yum downgrade --assumeyes 0:package-1-0.10-654.el7 2>&1");
+ terminal.expectCommand("yum downgrade --assumeyes package-0:0.10-654.el7 2>&1");
- assertTrue(yum.installFixedVersion(YumPackageName.fromString("0:package-1-0.10-654.el7")).converge(taskContext));
+ assertTrue(yum.installFixedVersion(YumPackageName.fromString("package-0:0.10-654.el7")).converge(taskContext));
}
@Test(expected = ChildProcessFailureException.class)
@@ -342,12 +342,8 @@ public class YumTest {
yum.upgrade().converge(taskContext);
}
- private void mockYumVersion(YumVersion yumVersion) {
- terminal.expectCommand("yum --version 2>&1", 0, yumVersion.asVersion().toFullString() + "\ntrailing garbage\n");
- }
-
private void mockYumVersion() {
- mockYumVersion(YumVersion.rhel7);
+ terminal.expectCommand("yum --version 2>&1", 0, YumVersion.rhel8.asVersion().toFullString() + "\ntrailing garbage\n");
}
private void mockRpmQuery(String packageName, YumPackageName installedOrNull) {