diff options
author | HÃ¥kon Hallingstad <hakon@verizonmedia.com> | 2021-07-30 11:54:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-30 11:54:43 +0200 |
commit | 07232bfdeb634c4940a44117b4db65f644552e96 (patch) | |
tree | bcddf10364e00b707b09bed2549365102ac655a3 | |
parent | 0ee098ce8f4fa965145849101c28d836a2552f31 (diff) | |
parent | a399a513294c5fe28250565c370b0a51e2fcbf72 (diff) |
Merge pull request #18656 from vespa-engine/freva/default-epoch
Treat epoch (none) as 0
5 files changed, 18 insertions, 22 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java index 1d105057e02..1530b3c72f0 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java @@ -260,6 +260,8 @@ public abstract class YumCommand<T extends YumCommand<T>> { if (lines.size() > builders.size()) throw new IllegalArgumentException("Found multiple installed packages for '" + packageName + "'. Version is required to match package exactly"); IntStream.range(0, builders.size()).forEach(i -> lines.get(i).ifPresent(builders.get(i)::apply)); + if (builder.epoch().isEmpty()) builder.setEpoch("0"); + return Optional.of(builder.build()); } } 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 5b32f50ad49..058836ac328 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 @@ -80,6 +80,12 @@ public class YumPackageName { public Builder setRelease(String release) { this.release = Optional.of(release); return this; } public Builder setArchitecture(String architecture) { this.architecture = Optional.of(architecture); return this; } + public Optional<String> epoch() { return epoch; } + public String name() { return name; } + public Optional<String> version() { return version; } + public Optional<String> release() { return release; } + public Optional<String> architecture() { return architecture; } + public YumPackageName build() { return new YumPackageName(epoch, name, version, release, architecture); } } @@ -162,11 +168,6 @@ public class YumPackageName { release = Optional.ofNullable(matcher.group(3)); } - // Set default epoch if we have a version - if (version.isPresent() && epoch.isEmpty()) { - epoch = Optional.of("0"); - } - if (!NAME_PATTERN.matcher(spec).find()) { throw new IllegalArgumentException("Bad package name in " + packageSpec + ": '" + spec + "'"); } @@ -211,11 +212,7 @@ public class YumPackageName { * @throws IllegalStateException if any field required for the version lock spec is missing */ public String toVersionLockName() { - Builder b = new Builder(this).setArchitecture("*"); - if (epoch.isEmpty()) { - b.setEpoch("0"); - } - YumPackageName lockSpec = b.build(); + YumPackageName lockSpec = new Builder(this).setArchitecture("*").build(); if (lockSpec.getVersion().isEmpty()) throw new IllegalStateException("Version is missing for YUM package " + name); if (lockSpec.getRelease().isEmpty()) throw new IllegalStateException("Release is missing for YUM package " + name); return lockSpec.toName(); 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 a4dc3ac359a..9237f4c04d4 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 @@ -65,7 +65,7 @@ public class YumPackageNameTest { // name-ver verifyPackageName("docker-engine-selinux-1.12.6", - "0", + null, "docker-engine-selinux", "1.12.6", null, @@ -75,7 +75,7 @@ public class YumPackageNameTest { // name-ver-rel verifyPackageName("docker-engine-selinux-1.12.6-1.el7", - "0", + null, "docker-engine-selinux", "1.12.6", "1.el7", @@ -85,7 +85,7 @@ public class YumPackageNameTest { // name-ver-rel.arch verifyPackageName("docker-engine-selinux-1.12.6-1.el7.x86_64", - "0", + null, "docker-engine-selinux", "1.12.6", "1.el7", 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 2c8a2535676..d36c1704515 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 @@ -58,7 +58,7 @@ public class YumTest { assertTrue(installed.isPresent()); assertEquals("vespa-node-admin", installed.get().getName()); - assertFalse(installed.get().getEpoch().isPresent()); + assertEquals("0", installed.get().getEpoch().get()); assertEquals("6.283.62", installed.get().getVersion().get()); assertEquals("1.el7", installed.get().getRelease().get()); assertEquals("noarch", installed.get().getArchitecture().get()); diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java index 93fffffb2fa..8bfc401be5e 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java @@ -8,7 +8,6 @@ import org.junit.Test; import java.util.List; import java.util.Optional; import java.util.function.Function; -import java.util.stream.Stream; import static org.junit.Assert.assertEquals; @@ -19,8 +18,8 @@ public class YumTesterTest { private static final String[] packages = {"pkg1", "pkg2"}; private static final String[] repos = {"repo1", "repo2"}; - private static final YumPackageName minimalPackage = YumPackageName.fromString("my-pkg-1.13.1-0.el7"); - private static final YumPackageName fullPackage = YumPackageName.fromString("2:my-pkg-1.13.1-0.el7.x86_64"); + private static final YumPackageName minimalPackage = YumPackageName.fromString("pkg-1.13.1-0.el7"); + private static final YumPackageName fullPackage = YumPackageName.fromString("2:pkg-1.13.1-0.el7.x86_64"); private final TestTerminal terminal = new TestTerminal(); private final YumTester yum = new YumTester(terminal); @@ -43,11 +42,9 @@ public class YumTesterTest { @Test public void expect_query_installed() { - Stream.of(minimalPackage, fullPackage, null).forEach(pkg -> { - yum.expectQueryInstalled(packages[0]).andReturn(pkg); - assertEquals(Optional.ofNullable(pkg), yum.queryInstalled(context, packages[0])); - terminal.verifyAllCommandsExecuted(); - }); + yum.expectQueryInstalled(packages[0]).andReturn(fullPackage); + assertEquals(Optional.of(fullPackage), yum.queryInstalled(context, packages[0])); + terminal.verifyAllCommandsExecuted(); } private void assertYumMethod(Function<YumTester, YumTester.GenericYumCommandExpectation> yumTesterExpectationFunction, |