summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@verizonmedia.com>2021-07-30 11:54:43 +0200
committerGitHub <noreply@github.com>2021-07-30 11:54:43 +0200
commit07232bfdeb634c4940a44117b4db65f644552e96 (patch)
treebcddf10364e00b707b09bed2549365102ac655a3
parent0ee098ce8f4fa965145849101c28d836a2552f31 (diff)
parenta399a513294c5fe28250565c370b0a51e2fcbf72 (diff)
Merge pull request #18656 from vespa-engine/freva/default-epoch
Treat epoch (none) as 0
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java2
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageName.java17
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumPackageNameTest.java6
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java2
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java13
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,