diff options
author | Martin Polden <mpolden@mpolden.no> | 2021-07-02 10:50:45 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2021-07-02 10:50:45 +0200 |
commit | c8d460d57f4cfc6e41fe3fc33a79cf7af2b0e819 (patch) | |
tree | 898bbe17fb0b7ab8066d0eaaadf90dbda8e6f92e | |
parent | 200b56ed35938c578fb6929f12af8fdf7013e9c7 (diff) |
Remove support for Yum 3
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) { |