| <!-- |
| ~ Copyright 2017-present Open Networking Foundation |
| ~ |
| ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| ~ you may not use this file except in compliance with the License. |
| ~ You may obtain a copy of the License at |
| ~ |
| ~ http://www.apache.org/licenses/LICENSE-2.0 |
| ~ |
| ~ Unless required by applicable law or agreed to in writing, software |
| ~ distributed under the License is distributed on an "AS IS" BASIS, |
| ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ~ See the License for the specific language governing permissions and |
| ~ limitations under the License. |
| --> |
| <scenario name="upgrade-rollback" description="ONOS cluster upgrade and rollback"> |
| <import file="${ONOS_SCENARIOS}/dist-setup.xml"/> |
| <dependency name="Distributed-Primitives-Setup"/> |
| |
| <group name="Upgrade-Rollback" requires="Distributed-Primitives-Setup"> |
| <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/> |
| |
| <step name="Initialize-ECM" |
| exec="onos ${OC1} ec-map-test foo put a b"/> |
| |
| <step name="Initialize-Upgrade" |
| exec="onos ${OC1} issu init" |
| requires="Initialize-ECM"/> |
| |
| <group name="Phase-1"> |
| <sequential var="${OCMI#}" |
| starts="Phase-One-Stop-Service-${#}" |
| ends="Phase-One-Wait-for-Start-${#-1}"> |
| <step name="Phase-One-Stop-Service-${#}" |
| exec="onos-service ${OCMI#} stop" |
| requires="Initialize-Upgrade"/> |
| |
| <step name="Phase-One-Wait-for-Stop-${#}" |
| exec="onos-wait-for-stop ${OCMI#}" |
| requires="~Phase-One-Stop-Service-${#}"/> |
| |
| <step name="Phase-One-Uninstall-${#}" |
| exec="onos-uninstall ${OCMI#}" |
| requires="~Phase-One-Wait-for-Stop-${#}"/> |
| |
| <step name="Phase-One-Push-Bits-${#}" |
| exec="onos-push-bits ${OCMI#}" |
| unless="${OCT}" |
| requires="~Phase-One-Stop-Service-${#}"/> |
| |
| <step name="Phase-One-Install-Upgrade-${#}" |
| exec="onos-install -v ${OCMI#}" |
| requires="Phase-One-Push-Bits-${#},Push-Bits,Phase-One-Uninstall-${#}"/> |
| |
| <step name="Phase-One-Secure-SSH-${#}" |
| exec="onos-secure-ssh -u ${ONOS_WEB_USER} -p ${ONOS_WEB_PASS} ${OCMI#}" |
| requires="~Phase-One-Install-Upgrade-${#}"/> |
| |
| <step name="Phase-One-Wait-for-Start-${#}" |
| exec="onos-wait-for-start ${OCMI#}" |
| requires="Phase-One-Secure-SSH-${#}"/> |
| |
| <step name="Phase-One-Distributed-Primitives-Check-Apps-${#}" |
| exec="onos-check-apps ${OCMI#} distributedprimitives includes" |
| requires="Phase-One-Wait-for-Start-${#}"/> |
| |
| <step name="Phase-One-Check-ECM-${#}" |
| exec="onos-execute-expect ${OCMI#} ec-map-test foo get a --expect b" |
| requires="Phase-One-Distributed-Primitives-Check-Apps-${#}"/> |
| </sequential> |
| </group> |
| |
| <group name="Change-ECM-values" requires="Phase-1"> |
| <step name="Change-Majority-ECM" |
| exec="onos ${OCMA1} ec-map-test foo put a d"/> |
| |
| <step name="Change-Minority-ECM" |
| exec="onos ${OCMI1} ec-map-test foo put a c"/> |
| </group> |
| |
| <group name="Check-ECM-values" requires="Change-ECM-values"> |
| <parallel var="${OCMI#}"> |
| <step name="Parallel-Check-Minority-ECM-${#}" |
| exec="onos-execute-expect ${OCMI#} ec-map-test foo get a --expect c"/> |
| </parallel> |
| |
| <parallel var="${OCMA#}"> |
| <step name="Parallel-Check-Majority-ECM-${#}" |
| exec="onos-execute-expect ${OCMA#} ec-map-test foo get a --expect d"/> |
| </parallel> |
| </group> |
| |
| <step name="Run-Upgrade" |
| exec="onos ${OC1} issu upgrade" |
| requires="Check-ECM-values"/> |
| |
| <step name="Run-Rollback" |
| exec="onos ${OC1} issu rollback" |
| requires="Run-Upgrade"/> |
| |
| <group name="Phase-2" requires="Run-Rollback"> |
| <sequential var="${OCMI#}" |
| starts="Phase-Two-Stop-Service-${#}" |
| ends="Phase-Two-Wait-for-Start-${#-1}"> |
| <step name="Phase-Two-Stop-Service-${#}" |
| exec="onos-service ${OCMI#} stop" |
| requires="Run-Rollback"/> |
| |
| <step name="Phase-Two-Wait-for-Stop-${#}" |
| exec="onos-wait-for-stop ${OCMI#}" |
| requires="~Phase-Two-Stop-Service-${#}"/> |
| |
| <step name="Phase-Two-Uninstall-${#}" |
| exec="onos-uninstall ${OCMI#}" |
| requires="~Phase-Two-Wait-for-Stop-${#}"/> |
| |
| <step name="Phase-Two-Push-Bits-${#}" |
| exec="onos-push-bits ${OCMI#}" |
| unless="${OCT}" |
| requires="~Phase-Two-Stop-Service-${#}"/> |
| |
| <step name="Phase-Two-Install-Upgrade-${#}" |
| exec="onos-install ${OCMI#}" |
| requires="Phase-Two-Push-Bits-${#},Push-Bits,Phase-Two-Uninstall-${#}"/> |
| |
| <step name="Phase-Two-Secure-SSH-${#}" |
| exec="onos-secure-ssh -u ${ONOS_WEB_USER} -p ${ONOS_WEB_PASS} ${OCMI#}" |
| requires="~Phase-Two-Install-Upgrade-${#}"/> |
| |
| <step name="Phase-Two-Wait-for-Start-${#}" |
| exec="onos-wait-for-start ${OCMI#}" |
| requires="Phase-Two-Secure-SSH-${#}"/> |
| |
| <step name="Phase-Two-Distributed-Primitives-Check-Apps-${#}" |
| exec="onos-check-apps ${OCMA#} distributedprimitives includes" |
| requires="Phase-Two-Wait-for-Start-${#}"/> |
| |
| <step name="Phase-Two-Check-ECM-${#}" |
| exec="onos-execute-expect ${OC#} ec-map-test foo get a --expect d" |
| requires="Phase-Two-Distributed-Primitives-Check-Apps-${#}"/> |
| </sequential> |
| </group> |
| |
| <step name="Reset-Upgrade" |
| exec="onos ${OC1} issu reset" |
| requires="Phase-2"/> |
| |
| <group name="Verify-Rollback" requires="Reset-Upgrade"> |
| <parallel var="${OC#}"> |
| <step name="Check-Nodes-${#}" |
| exec="onos-check-nodes ${OC#}" |
| delay="3" |
| requires="Verify-EC-Map-${#}"/> |
| |
| <step name="Check-Components-${#}" |
| exec="onos-check-components ${OC#}" |
| delay="5" |
| requires="~Check-Nodes-${#}"/> |
| |
| <step name="Check-Logs-${#}" |
| exec="onos-check-logs ${OC#}" |
| requires="~Check-Components-${#}"/> |
| |
| <step name="Check-Apps-${#}" |
| exec="onos-check-apps ${OC#} ${ONOS_APPS},distributedprimitives includes" |
| requires="~Check-Components-${#}"/> |
| </parallel> |
| </group> |
| </group> |
| </scenario> |