diff options
author | bjormel <bjormel@verizonmedia.com> | 2022-12-13 16:35:58 +0100 |
---|---|---|
committer | bjormel <bjormel@verizonmedia.com> | 2022-12-13 16:35:58 +0100 |
commit | af6a4a08e06cd296701310273657e56da872a74e (patch) | |
tree | 1b8e079da134821a5168383da566c59298817e6f /node-admin | |
parent | afc0a685744ae3affda301197a1eac0a2fe54a86 (diff) |
yum --disablerepo
Diffstat (limited to 'node-admin')
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()), |