<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-connection-attachment-input' mode='sync'>
        <block atomic="true">
            <switch test='`$connection-attachment-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='`$connection-attachment-topology-operation-input.service-information.service-instance-id`'>
                <outcome value=''>
                    <return status='failure'>
                        <parameter name='ack-final' value='Y'/>
                        <parameter name="error-code" value="500" />
                        <parameter name="error-message" value="service-information.service-instance-id is a required input" />
                    </return>
                </outcome>
            </switch>
            <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.parent-service-instance-id`'>
                <outcome value=''>
                    <return status='failure'>
                        <parameter name='ack-final' value='Y'/>
                        <parameter name="error-code" value="500" />
                        <parameter name="error-message" value="service-information.parent-service-instance-id is a required input" />
                    </return>
                </outcome>
            </switch>
            <switch test='`$connection-attachment-topology-operation-input.sdnc-request-header.svc-action`'>
                <outcome value='create'>
                    <block atomic="true">
                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
                            <outcome value='CreateSOTNAttachmentInstance'>
                                <block atomic="true">
                                    <for index="i" start="0" end="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`">
                                        <block>
                                            <set>
                                                <parameter name='tmp.name' value='' />
                                                <parameter name='tmp.value' value='' />
                                            </set>
                                            <set>
                                                <parameter name='tmp.name' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`"/>
                                                <parameter name='tmp.value' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`"/>
                                            </set>
                                            <switch test="`$tmp.name`">
                                                <outcome value='sotnVpnName'>
                                                    <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="`'$tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value='clientSignal'>
                                                    <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="`'$tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value='access-provider-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="`'$tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value='access-client-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="`'$tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value='access-topology-id'></outcome>
                                                <outcome value='access-node-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="`'$tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value='cVLAN'>
                                                    <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="`'$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='CreateSDWANAttachmentInstance'>
                                <block atomic="true">
                                    <for index="i" start="0" end="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param_length`">
                                        <block>
                                            <set>
                                                <parameter name='tmp.name' value='' />
                                                <parameter name='tmp.value' value='' />
                                            </set>
                                            <set>
                                                <parameter name='tmp.name' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].name`"/>
                                                <parameter name='tmp.value' value="`$connection-attachment-topology-operation-input.connection-attachment-request-input.param[$i].value`"/>
                                            </set>
                                            <switch test="`$tmp.name`">
                                                <outcome value='sdwanVpnName'>
                                                    <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="`'$tmp.name +' is a required input'`" />
                                                            </return>
                                                        </outcome>
                                                    </switch>
                                                </outcome>
                                                <outcome value='role'>
                                                    <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="`'$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="sdnc-request-header.request-action is invalid" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='activate'>
                    <block atomic="true">
                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
                            <outcome value='ActivateSOTNAttachmentInstance'>
                                <block atomic="true">
                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
                                    </execute>
                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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='ActivateSDWANAttachmentInstance'>
                                <block atomic="true">
                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
                                    </execute>
                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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="sdnc-request-header.request-action is invalid" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='deactivate'>
                    <block atomic="true">
                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeactivateSDWANAttachmentInstance'>
                                <block atomic="true">
                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
                                    </execute>
                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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='DeactivateSOTNAttachmentInstance'>
                                <block atomic="true">
                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
                                    </execute>
                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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='delete'>
                    <block atomic="true">
                        <switch test='`$connection-attachment-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeleteSOTNAttachmentInstance'>
                                <block atomic="true">
                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
                                    </execute>
                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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='DeleteSDWANAttachmentInstance'>
                                <block atomic="true">
                                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >
                                        <parameter name="connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id" value="$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-id"/>
                                    </execute>
                                    <switch test='`$connection-attachment-topology-operation-input.allotted-resource-information.allotted-resource-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>