<?xml version="1.0" encoding="UTF-8"?>
<service-logic xmlns="http://www.onap.org/sdnc/svclogic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.onap.org/sdnc/svclogic ./svclogic.xsd" module="GENERIC-RESOURCE-API" version="${project.version}">
    <method rpc="validate-network-input-parameters" mode="sync">
        <block atomic="true">
            <switch test="`$network-topology-operation-input.sdnc-request-header.svc-action`">
                <outcome value="">
                    <return status="failure">
                        <parameter name="ack-final" value="Y" />
                        <parameter name="error-code" value="500" />
                        <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />
                    </return>
                </outcome>
            </switch>
            <switch test="`$network-topology-operation-input.sdnc-request-header.svc-action`">
                <outcome value="create">
                    <block atomic="true">
                        <switch test="`$network-topology-operation-input.request-information.request-action`">
                            <outcome value="CreateNetworkInstance">
                                <block atomic="true">
                                    <for index="i" start="0" end="`$network-topology-operation-input.network-request-input.network-input-parameters.param_length`">
                                        <block>
                                            <set>
                                                <parameter name="tmp.name" value="" />
                                                <parameter name="tmp.value" value="" />
                                            </set>
                                            <set>
                                                <parameter name="tmp.name" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].name`" />
                                                <parameter name="tmp.value" value="`$network-topology-operation-input.network-request-input.network-input-parameters.param[$i].value`" />
                                            </set>
                                            <switch test="`$tmp.name`">
                                                <outcome value="name">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="service-type">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="site1-name">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="site2-name">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="sna1_name">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="sna2_name">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="pe1_id">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="pe2_id">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac1-id">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac2-id">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac1-ip">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac2-ip">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac1_peer_ip">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac2_peer_ip">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac1_svlan">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="ac2_svlan">
                                                    <switch test="`$tmp.value`">
                                                        <outcome value="">
                                                            <return status="failure">
                                                                <parameter name="ack-final" value="Y" />
                                                                <parameter name="error-code" value="500" />
                                                                <parameter name="error-message" value="`'network-request-input.network-input-parameters.param '+ $tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value="">
                                                    <return status="failure">
                                                        <parameter name="ack-final" value="Y" />
                                                        <parameter name="error-code" value="500" />
                                                        <parameter name="error-message" value="`'network-topology-operation-input.network-request-input.network-input-parameters.param[' + $i + ']' + '.name is a required input'`" />
                                                    </return>
                                                </outcome>
                                            </switch>
                                        </block>
                                    </for>
                                </block>
                            </outcome>
                            <outcome value="Other">
                                <return status="failure">
                                    <parameter name="ack-final" value="Y" />
                                    <parameter name="error-code" value="500" />
                                    <parameter name="error-message" value="request-information.request-action is required to be CreateNetworkInstance for svc-action=create" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value="activate">
                    <switch test="`$network-topology-operation-input.request-information.request-action`">
                        <outcome value="ActivateDCINetworkInstance">
                            <block atomic="true">
                                <call module="GENERIC-RESOURCE-API" rpc="validate-overlay-network-input-parameters" mode="sync" />
                            </block>
                        </outcome>
                        <outcome value="Other">
                            <return status="failure">
                                <parameter name="ack-final" value="Y" />
                                <parameter name="error-code" value="500" />
                                <parameter name="error-message" value="request-information.request-action is required to be ActivateNetworkInstance for svc-action=activate" />
                            </return>
                        </outcome>
                    </switch>
                </outcome>
                <outcome value="deactivate">
                    <switch test="`$network-topology-operation-input.request-information.request-action`">
                        <outcome value="DeActivateDCINetworkInstance">
                            <block atomic="true">
                                <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">
                                    <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id" />
                                </execute>
                                <switch test="`$network-topology-operation-input.network-information.network-id`">
                                    <outcome value="">
                                        <return status="failure">
                                            <parameter name="ack-final" value="Y" />
                                            <parameter name="error-code" value="500" />
                                            <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
                                        </return>
                                    </outcome>
                                </switch>
                            </block>
                        </outcome>
                        <outcome value="Other">
                            <return status="failure">
                                <parameter name="ack-final" value="Y" />
                                <parameter name="error-code" value="500" />
                                <parameter name="error-message" value="request-information.request-action is required to be DeactivateNetworkInstance for svc-action=deactivate" />
                            </return>
                        </outcome>
                    </switch>
                </outcome>
                <outcome value="delete">
                    <block atomic="true">
                        <switch test="`$network-topology-operation-input.request-information.request-action`">
                            <outcome value="DeleteNetworkInstance">
                                <block atomic="true">
                                    <execute plugin="org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils" method="requiredParameters">
                                        <parameter name="network-topology-operation-input.network-information.network-id" value="$network-topology-operation-input.network-information.network-id" />
                                    </execute>
                                    <switch test="`$network-topology-operation-input.network-information.network-id`">
                                        <outcome value="">
                                            <return status="failure">
                                                <parameter name="ack-final" value="Y" />
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                </block>
                            </outcome>
                            <outcome value="Other">
                                <return status="failure">
                                    <parameter name="ack-final" value="Y" />
                                    <parameter name="error-code" value="500" />
                                    <parameter name="error-message" value="request-information.request-action is required to be DeleteNetworkInstance for svc-action=delete" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value="Other">
                    <return status="failure">
                        <parameter name="ack-final" value="Y" />
                        <parameter name="error-code" value="500" />
                        <parameter name="error-message" value="`$network-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />
                    </return>
                </outcome>
            </switch>
        </block>
    </method>
</service-logic>