<!--
  ~ Copyright 2015 Open Networking Laboratory
  ~
  ~ 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="setup" description="ONOS cluster setup">
    <group name="Setup">
        <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/>
        <step name="Enable-Flow-Objective-Intents" if="${ONOS_USE_FOI}"
              exec="onos ${OC1} cfg set org.onosproject.net.intent.impl.compiler.IntentConfigurableRegistrator useFlowObjectives true"/>

        <parallel var="${OC#}">
            <step name="Push-Bits-${#}" exec="onos-push-bits ${OC#}"
                  unless="${OCT}"/>
            <step name="Uninstall-${#}" exec="onos-uninstall ${OC#}"/>
            <step name="Kill-${#}" env="~" exec="onos-kill ${OC#}"
                  requires="Uninstall-${#}"/>

            <step name="Install-${#}" exec="onos-install ${OC#}"
                  requires="Kill-${#},Push-Bits-${#},Push-Bits"/>

            <step name="Secure-SSH-${#}" requires="Install-${#}"
                  exec="onos-secure-ssh -u ${ONOS_WEB_USER} -p ${ONOS_WEB_PASS} ${OC#}"
                  if="${ONOS_USE_SSH}"/>

            <step name="Wait-for-Start-${#}" exec="onos-wait-for-start ${OC#}"
                  requires="Install-${#},~Secure-SSH-${#}"/>

            <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#}" delay="3"
                  requires="~Wait-for-Start-${#}"/>
            <step name="Check-Components-${#}" delay="5"
                  exec="onos-check-components ${OC#}"
                  requires="~Wait-for-Start-${#}"/>

            <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
                  requires="~Check-Components-${#}"/>
            <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} ${ONOS_APPS} includes"
                  requires="~Check-Components-${#}"/>

            <dependency name="Enable-Flow-Objective-Intents" requires="Check-Apps-${#}"/>
        </parallel>
    </group>
</scenario>
