aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin/src/main/java/com
diff options
context:
space:
mode:
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.java21
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/yum/YumTester.java4
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");