summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorBjørn Meland <bjormel@users.noreply.github.com>2022-12-16 14:38:58 +0100
committerGitHub <noreply@github.com>2022-12-16 14:38:58 +0100
commit11dfec8907b43d8522c01f6e925b12825c4268f4 (patch)
treefc6ae104204144a9dd2ef8a98a0d8a091028422c /node-admin
parente4302310d2c61aaff8ed7b29246d232d985e70a2 (diff)
Revert "Revert "support for disablerepo in yum command""
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java12
-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/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTest.java10
-rw-r--r--node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTesterTest.java17
4 files changed, 33 insertions, 13 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 975f5b8eb90..424791bdabf 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
@@ -34,6 +34,7 @@ public abstract class YumCommand<T extends YumCommand<T>> {
PACKAGE_NAME_BUILDERS_GENERATOR = builder -> List.of(
builder::setName, builder::setEpoch, builder::setVersion, builder::setRelease, builder::setArchitecture);
+ private List<String> disabledRepos = List.of();
private List<String> enabledRepos = List.of();
private final Terminal terminal;
@@ -41,6 +42,12 @@ public abstract class YumCommand<T extends YumCommand<T>> {
this.terminal = terminal;
}
+ /** Disables the given repos for this command */
+ public T disableRepo(String... repo) {
+ disabledRepos = List.of(repo);
+ return getThis();
+ }
+
/** Enables the given repos for this command */
public T enableRepo(String... repo) {
enabledRepos = List.of(repo);
@@ -51,6 +58,11 @@ public abstract class YumCommand<T extends YumCommand<T>> {
protected void addParametersToCommandLine(CommandLine commandLine) {
commandLine.add("--assumeyes");
+ if (!enabledRepos.isEmpty() && disabledRepos.isEmpty()) {
+ commandLine.add("--disablerepo=*");
+ } else {
+ disabledRepos.forEach(repo -> commandLine.add("--disablerepo=" + repo));
+ }
enabledRepos.forEach(repo -> commandLine.add("--enablerepo=" + repo));
}
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 20a42aed3d5..c5ea2dd7f41 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
@@ -50,6 +50,7 @@ public class YumTester extends Yum {
public class GenericYumCommandExpectation {
private final CommandType commandType;
protected final List<YumPackageName> packages;
+ private List<String> disableRepos = List.of();
private List<String> enableRepos = List.of();
private GenericYumCommandExpectation(CommandType commandType, String... packages) {
@@ -57,6 +58,11 @@ public class YumTester extends Yum {
this.packages = Stream.of(packages).map(YumPackageName::fromString).toList();
}
+ public GenericYumCommandExpectation withDisableRepo(String... repo) {
+ this.disableRepos = List.of(repo);
+ return this;
+ }
+
public GenericYumCommandExpectation withEnableRepo(String... repo) {
this.enableRepos = List.of(repo);
return this;
@@ -90,6 +96,7 @@ public class YumTester extends Yum {
cmd.append("yum ").append(commandType.command);
if (commandType != CommandType.deleteVersionLock) {
cmd.append(" --assumeyes");
+ disableRepos.forEach(repo -> cmd.append(" --disablerepo=").append(repo));
enableRepos.forEach(repo -> cmd.append(" --enablerepo=").append(repo));
}
if (commandType == CommandType.install && packages.size() > 1)
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 8c9e36abb32..e52dedbf7ef 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
@@ -99,7 +99,7 @@ public class YumTest {
void testAlreadyInstalled() {
mockRpmQuery("package-1", null);
terminal.expectCommand(
- "yum install --assumeyes --enablerepo=repo1 --enablerepo=repo2 --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
+ "yum install --assumeyes \"--disablerepo=*\" --enablerepo=repo1 --enablerepo=repo2 --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
0,
"foobar\nNothing to do.\n"); // Note trailing dot
assertFalse(yum.install("package-1", "package-2")
@@ -161,7 +161,7 @@ public class YumTest {
void testInstallWithEnablerepo() {
mockRpmQuery("package-1", null);
terminal.expectCommand(
- "yum install --assumeyes --enablerepo=repo-name --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
+ "yum install --assumeyes \"--disablerepo=*\" --enablerepo=repo-name --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
0,
"installing, installing");
@@ -201,10 +201,10 @@ public class YumTest {
terminal.expectCommand("yum versionlock delete \"package-0:0.1-8.el7.*\" 2>&1");
- terminal.expectCommand("yum versionlock add --assumeyes --enablerepo=somerepo \"package-0:0.10-654.el7.*\" 2>&1");
+ terminal.expectCommand("yum versionlock add --assumeyes \"--disablerepo=*\" --enablerepo=somerepo \"package-0:0.10-654.el7.*\" 2>&1");
terminal.expectCommand(
- "yum install --assumeyes --enablerepo=somerepo package-0:0.10-654.el7 2>&1",
+ "yum install --assumeyes \"--disablerepo=*\" --enablerepo=somerepo package-0:0.10-654.el7 2>&1",
0,
"Nothing to do\n");
@@ -254,7 +254,7 @@ public class YumTest {
assertThrows(ChildProcessFailureException.class, () -> {
mockRpmQuery("package-1", null);
terminal.expectCommand(
- "yum install --assumeyes --enablerepo=repo-name --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
+ "yum install --assumeyes \"--disablerepo=*\" --enablerepo=repo-name --setopt skip_missing_names_on_install=False package-1 package-2 2>&1",
1,
"error");
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 59c138b51df..9533c555860 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
@@ -18,6 +18,7 @@ public class YumTesterTest {
private static final String[] packages = {"pkg1", "pkg2"};
private static final String[] repos = {"repo1", "repo2"};
+ private static final String[] disablerepos = {"disablerepo1", "disablerepo2"};
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");
@@ -27,17 +28,17 @@ public class YumTesterTest {
@Test
void generic_yum_methods() {
- assertYumMethod(yum -> yum.expectInstall(packages).withEnableRepo(repos),
- yum -> yum.install(List.of(packages)).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectInstall(packages).withDisableRepo(disablerepos).withEnableRepo(repos),
+ yum -> yum.install(List.of(packages)).disableRepo(disablerepos).enableRepo(repos).converge(context));
- assertYumMethod(yum -> yum.expectUpdate(packages).withEnableRepo(repos),
- yum -> yum.upgrade(List.of(packages)).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectUpdate(packages).withDisableRepo(disablerepos).withEnableRepo(repos),
+ yum -> yum.upgrade(List.of(packages)).disableRepo(disablerepos).enableRepo(repos).converge(context));
- assertYumMethod(yum -> yum.expectRemove(packages).withEnableRepo(repos),
- yum -> yum.remove(List.of(packages)).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectRemove(packages).withDisableRepo(disablerepos).withEnableRepo(repos),
+ yum -> yum.remove(List.of(packages)).disableRepo(disablerepos).enableRepo(repos).converge(context));
- assertYumMethod(yum -> yum.expectInstallFixedVersion(minimalPackage.toName()).withEnableRepo(repos),
- yum -> yum.installFixedVersion(minimalPackage).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectInstallFixedVersion(minimalPackage.toName()).withDisableRepo(disablerepos).withEnableRepo(repos),
+ yum -> yum.installFixedVersion(minimalPackage).disableRepo(disablerepos).enableRepo(repos).converge(context));
// versionlock always returns success
assertYumMethodAlwaysSuccess(yum -> yum.expectDeleteVersionLock(minimalPackage.toName()),