diff --git a/core/net/src/main/java/org/onosproject/upgrade/impl/UpgradeManager.java b/core/net/src/main/java/org/onosproject/upgrade/impl/UpgradeManager.java index ab1b1c3e92..218a357589 100644 --- a/core/net/src/main/java/org/onosproject/upgrade/impl/UpgradeManager.java +++ b/core/net/src/main/java/org/onosproject/upgrade/impl/UpgradeManager.java @@ -385,6 +385,7 @@ public class UpgradeManager .filter(id -> clusterService.getVersion(id).equals(upgrade.target())) .collect(Collectors.toSet()); if (upgradedNodes.contains(event.subject().id())) { + log.warn("Upgrade failure detected: rolling back upgrade"); rollback(); } } diff --git a/tools/test/bin/onos-check-issu-status b/tools/test/bin/onos-check-issu-status new file mode 100755 index 0000000000..a0aa52bc7b --- /dev/null +++ b/tools/test/bin/onos-check-issu-status @@ -0,0 +1,27 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Checks whether the specified ONOS cluster node has the desired state. +# ----------------------------------------------------------------------------- + +aux=/tmp/stc/stc-$$.log +trap "rm -f $aux 2>/dev/null" EXIT + +function onos_nodes() { + echo $(env | sort | egrep "^OC[0-9]+" | cut -d= -f2) +} + +nodes=$(onos_nodes) + +for attempt in {1..5}; do + for node in $nodes; do + onos $node issu status > $aux + cat $aux + + status=$(cat $aux) + + [ "$status" = "${1}" ] && exit 0 + sleep 1 + done +done + +exit 1 \ No newline at end of file diff --git a/tools/test/scenarios/ha-upgrade.xml b/tools/test/scenarios/ha-upgrade.xml new file mode 100644 index 0000000000..0f832a9634 --- /dev/null +++ b/tools/test/scenarios/ha-upgrade.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +