summaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorbjormel <bjormel@verizonmedia.com>2022-12-13 16:35:58 +0100
committerbjormel <bjormel@verizonmedia.com>2022-12-13 16:35:58 +0100
commitaf6a4a08e06cd296701310273657e56da872a74e (patch)
tree1b8e079da134821a5168383da566c59298817e6f /node-admin
parentafc0a685744ae3affda301197a1eac0a2fe54a86 (diff)
yum --disablerepo
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java8
-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/YumTesterTest.java17
3 files changed, 24 insertions, 8 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..10397cba05e 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
@@ -35,6 +35,7 @@ public abstract class YumCommand<T extends YumCommand<T>> {
builder::setName, builder::setEpoch, builder::setVersion, builder::setRelease, builder::setArchitecture);
private List<String> enabledRepos = List.of();
+ private List<String> disabledRepos = List.of();
private final Terminal terminal;
protected YumCommand(Terminal terminal) {
@@ -47,11 +48,18 @@ public abstract class YumCommand<T extends YumCommand<T>> {
return getThis();
}
+ /** Enables the given repos for this command */
+ public T disableRepo(String... repo) {
+ disabledRepos = List.of(repo);
+ return getThis();
+ }
+
protected abstract T getThis(); // Hack to get around unchecked cast warning
protected void addParametersToCommandLine(CommandLine commandLine) {
commandLine.add("--assumeyes");
enabledRepos.forEach(repo -> commandLine.add("--enablerepo=" + repo));
+ disabledRepos.forEach(repo -> commandLine.add("--disablerepo=" + repo));
}
public abstract boolean converge(TaskContext context);
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..cfe2b8f8b98 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
@@ -51,6 +51,7 @@ public class YumTester extends Yum {
private final CommandType commandType;
protected final List<YumPackageName> packages;
private List<String> enableRepos = List.of();
+ private List<String> disableRepos = List.of();
private GenericYumCommandExpectation(CommandType commandType, String... packages) {
this.commandType = commandType;
@@ -62,6 +63,11 @@ public class YumTester extends Yum {
return this;
}
+ public GenericYumCommandExpectation withDisableRepo(String... repo) {
+ this.disableRepos = List.of(repo);
+ return this;
+ }
+
/** Mock the return value of the converge(TaskContext) method for this operation (true iff system was modified) */
public YumTester andReturn(boolean value) {
if (value) return execute("Success");
@@ -91,6 +97,7 @@ public class YumTester extends Yum {
if (commandType != CommandType.deleteVersionLock) {
cmd.append(" --assumeyes");
enableRepos.forEach(repo -> cmd.append(" --enablerepo=").append(repo));
+ disableRepos.forEach(repo -> cmd.append(" --disablerepo=").append(repo));
}
if (commandType == CommandType.install && packages.size() > 1)
cmd.append(" --setopt skip_missing_names_on_install=False");
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..e46788397dc 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).withEnableRepo(repos).withDisableRepo(disablerepos),
+ yum -> yum.install(List.of(packages)).enableRepo(repos).disableRepo(disablerepos).converge(context));
- assertYumMethod(yum -> yum.expectUpdate(packages).withEnableRepo(repos),
- yum -> yum.upgrade(List.of(packages)).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectUpdate(packages).withEnableRepo(repos).withDisableRepo(disablerepos),
+ yum -> yum.upgrade(List.of(packages)).enableRepo(repos).disableRepo(disablerepos).converge(context));
- assertYumMethod(yum -> yum.expectRemove(packages).withEnableRepo(repos),
- yum -> yum.remove(List.of(packages)).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectRemove(packages).withEnableRepo(repos).withDisableRepo(disablerepos),
+ yum -> yum.remove(List.of(packages)).enableRepo(repos).disableRepo(disablerepos).converge(context));
- assertYumMethod(yum -> yum.expectInstallFixedVersion(minimalPackage.toName()).withEnableRepo(repos),
- yum -> yum.installFixedVersion(minimalPackage).enableRepo(repos).converge(context));
+ assertYumMethod(yum -> yum.expectInstallFixedVersion(minimalPackage.toName()).withEnableRepo(repos).withDisableRepo(disablerepos),
+ yum -> yum.installFixedVersion(minimalPackage).enableRepo(repos).disableRepo(disablerepos).converge(context));
// versionlock always returns success
assertYumMethodAlwaysSuccess(yum -> yum.expectDeleteVersionLock(minimalPackage.toName()),