summaryrefslogtreecommitdiffstats
path: root/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/CompositeOsUpgrader.java
diff options
context:
space:
mode:
Diffstat (limited to 'node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/CompositeOsUpgrader.java')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/CompositeOsUpgrader.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/CompositeOsUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/CompositeOsUpgrader.java
new file mode 100644
index 00000000000..7aaf37a8ee6
--- /dev/null
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/CompositeOsUpgrader.java
@@ -0,0 +1,28 @@
+package com.yahoo.vespa.hosted.provision.os;
+
+import com.yahoo.config.provision.NodeType;
+
+import java.util.List;
+
+/**
+ * An implementation of {@link OsUpgrader} that delegates calls to multiple implementations.
+ *
+ * @author mpolden
+ */
+public record CompositeOsUpgrader(List<OsUpgrader> upgraders) implements OsUpgrader {
+
+ public CompositeOsUpgrader(List<OsUpgrader> upgraders) {
+ this.upgraders = List.copyOf(upgraders);
+ }
+
+ @Override
+ public void upgradeTo(OsVersionTarget target) {
+ upgraders.forEach(upgrader -> upgrader.upgradeTo(target));
+ }
+
+ @Override
+ public void disableUpgrade(NodeType type) {
+ upgraders.forEach(upgrader -> upgrader.disableUpgrade(type));
+ }
+
+}