<!--
  ~ Copyright 2015-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="tar-setup" description="ONOS cluster setup via onos.tar.gz">
    <group name="Setup-Instances">
        <step name="Push-Bits" exec="onos-push-bits-through-proxy" if="${OCT}"/>

        <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="Untar-And-Run-${#}" exec="onos-untar-and-run ${OC#}"
                  requires="Kill-${#},Push-Bits-${#},Push-Bits"/>

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

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

            <step name="Check-Logs-${#}" exec="onos-check-logs ${OC#}"
                  requires="~Wait-for-Start-${#}"/>
            <step name="Check-Components-${#}" exec="onos-check-components ${OC#}"
                  requires="~Wait-for-Start-${#}"/>
            <step name="Check-Apps-${#}" exec="onos-check-apps ${OC#} drivers includes"
                  requires="~Wait-for-Start-${#}"/>
            <step name="Check-Nodes-${#}" exec="onos-check-nodes ${OC#} ${OC#}"
                  requires="~Wait-for-Start-${#}"/>
        </parallel>
    </group>

    <group name="Setup-Cluster" requires="Setup-Instances" unless="${NO_CLUSTER}">
        <step name="Form-Cluster" exec="onos-form-cluster -u ${ONOS_WEB_USER} -p ${ONOS_WEB_PASS} cell"/>
        <parallel var="${OC#}">
            <step name="Wait-for-Start-Again-${#}" exec="onos-wait-for-start ${OC#}"
                  requires="Form-Cluster"/>

            <step name="Check-Logs-Again-${#}" exec="onos-check-logs ${OC#}"
                  requires="~Wait-for-Start-Again-${#}"/>
            <step name="Check-Components-Again-${#}" exec="onos-check-components ${OC#}"
                  requires="~Wait-for-Start-Again-${#}"/>
            <step name="Check-Apps-Again-${#}" exec="onos-check-apps ${OC#} drivers includes"
                  requires="~Wait-for-Start-Again-${#}"/>
            <step name="Check-Nodes-Again-${#}" exec="onos-check-nodes ${OC#}"
                  requires="~Wait-for-Start-Again-${#}"/>
        </parallel>
    </group>

</scenario>
