diff options
Diffstat (limited to 'node-admin/src/main/java/com')
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumCommand.java | 21 | ||||
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java | 4 |
2 files changed, 25 insertions, 0 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 12029c4fe7e..7b543304e6e 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 @@ -5,6 +5,7 @@ import com.yahoo.vespa.hosted.node.admin.component.TaskContext; import com.yahoo.vespa.hosted.node.admin.task.util.process.CommandLine; import com.yahoo.vespa.hosted.node.admin.task.util.process.Terminal; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.regex.Matcher; @@ -41,6 +42,7 @@ public abstract class YumCommand<T extends YumCommand<T>> { private final String yumCommand; private final Pattern commandOutputNoopPattern; private final List<YumPackageName> packages; + private final List<String> options = new ArrayList<>(); GenericYumCommand(Terminal terminal, String yumCommand, List<YumPackageName> packages, Pattern commandOutputNoopPattern) { this.terminal = terminal; @@ -48,12 +50,31 @@ public abstract class YumCommand<T extends YumCommand<T>> { this.packages = packages; this.commandOutputNoopPattern = commandOutputNoopPattern; + switch (yumCommand) { + case "install": { + if (packages.size() > 1) options.add("skip_missing_names_on_install=False"); + break; + } + case "upgrade": { + if (packages.size() > 1) options.add("skip_missing_names_on_update=False"); + break; + } + case "remove": break; + default: throw new IllegalArgumentException("Unknown yum command: " + yumCommand); + } + if (packages.isEmpty() && ! "upgrade".equals(yumCommand)) { throw new IllegalArgumentException("No packages specified"); } } @Override + protected void addParametersToCommandLine(CommandLine commandLine) { + super.addParametersToCommandLine(commandLine); + options.forEach(option -> commandLine.add("--setopt", option)); + } + + @Override public boolean converge(TaskContext context) { if (packages.isEmpty() && ! "upgrade".equals(yumCommand)) { throw new IllegalArgumentException("No packages specified"); 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 4d04e1199c5..c5b46473218 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 @@ -73,6 +73,10 @@ public class YumTester extends Yum { StringBuilder cmd = new StringBuilder(); cmd.append("yum ").append(command).append(" --assumeyes"); enableRepos.forEach(repo -> cmd.append(" --enablerepo=").append(repo)); + if ("install".equals(command) && packages.size() > 1) + cmd.append(" --setopt skip_missing_names_on_install=False"); + if ("upgrade".equals(command) && packages.size() > 1) + cmd.append(" --setopt skip_missing_names_on_update=False"); packages.forEach(pkg -> cmd.append(" ").append(pkg.toName())); cmd.append(" 2>&1"); |