<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-contrail-route-input' mode='sync'>
        <block atomic="true">
            <switch test='`$contrail-route-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-action is a required input" />
                    </return>
                </outcome>
            </switch>
            <switch test='`$contrail-route-topology-operation-input.sdnc-request-header.svc-request-id`'>
                <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='`$contrail-route-topology-operation-input.request-information.request-action`'>
                <outcome value='CreateContrailRouteInstance'>
                    <block></block>
                </outcome>
                <outcome value='DeleteContrailRouteInstance'>
                    <block></block>
                </outcome>
                <outcome value=''>
                    <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 a required input" />
                    </return>
                </outcome>
                <outcome value='Other'>
                    <return status='failure'>
                        <parameter name='ack-final' value='Y'/>
                        <parameter name="error-code" value="500" />
                        <parameter name="error-message" value="Invalid request-information.request-action " />
                    </return>
                </outcome>
            </switch>
            <switch test='`$contrail-route-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='`$contrail-route-topology-operation-input.sdnc-request-header.svc-action`'>
                <outcome value='assign'>
                    <block atomic="true">
                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
                            <outcome value='CreateContrailRouteInstance'>
                                <block atomic="true">
                                    <switch test='`$contrail-route-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="allotted-resource-information.allotted-resource-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.allotted-resource-type`'>
                                        <outcome value=''>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="allotted-resource-information.allotted-resource-type is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-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="allotted-resource-information.parent-service-instance-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`'>
                                        <outcome value=''>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="contrail-route-information.onap-model-information.model-customization-uuid is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id`'>
                                        <outcome value=''>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role`'>
                                        <outcome value=''>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="contrail-route-topology-operation-input.contrail-route-request-input.source-network.network-role is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.dest-network.network-role`'>
                                        <outcome value=''>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="contrail-topology-operation-input.contrail-route-request-input.dest-network.network-role is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.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="contrail-route-topology-operation-input.contrail-route-request-input.contrail-applied-service-info.service-instance-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'
  key='SELECT * from ALLOTTED_RESOURCE_MODEL WHERE customization_uuid = $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid'
  pfx='ar-model'>
                                        <outcome value='not-found'>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
                                            </return>
                                        </outcome>
                                        <outcome value='failure'>
                                            <return status='failure'>
                                                <parameter name='ack-final' value='Y'/>
                                                <parameter name="error-code" value="500" />
                                                <parameter name="error-message" value="`'No alloted resource model found for model customization UUID ' + $contrail-route-topology-operation-input.allotted-resource-information.onap-model-information.model-customization-uuid`" />
                                            </return>
                                        </outcome>
                                    </get-resource>
                                </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 a required to be CreateContrailRouteInstance for svc-action=assign" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='create'>
                    <block atomic="true">
                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
                            <outcome value='CreateContrailRouteInstance'>
                                <block atomic="true">
                                    <switch test='`$contrail-route-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="allotted-resource-information.allotted-resource-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-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="allotted-resource-information.parent-service-instance-id 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 a required to be CreateNetworkInstance for svc-action=create" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='activate'>
                    <block atomic="true">
                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
                            <outcome value='CreateContrailRouteInstance'>
                                <block atomic="true">
                                    <switch test='`$contrail-route-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="allotted-resource-information.allotted-resource-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-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="allotted-resource-information.parent-service-instance-id 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 a required to be CreateContrailRouteInstance for svc-action=activate" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='deactivate'>
                    <block atomic="true">
                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeleteContrailRouteInstance'>
                                <block atomic="true">
                                    <switch test='`$contrail-route-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="allotted-resource-information.allotted-resource-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-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="allotted-resource-information.parent-service-instance-id 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 a required to be DeleteContrailRouteInstance for svc-action=deactivate" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='delete'>
                    <block atomic="true">
                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeleteContrailRouteInstance'>
                                <block atomic="true">
                                    <switch test='`$contrail-route-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="allotted-resource-information.allotted-resource-id is a required input" />
                                            </return>
                                        </outcome>
                                    </switch>
                                    <switch test='`$contrail-route-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="allotted-resource-information.parent-service-instance-id 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 a required to be DeleteContrailRouteInstance for svc-action=delete" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
                <outcome value='unassign'>
                    <block atomic="true">
                        <switch test='`$contrail-route-topology-operation-input.request-information.request-action`'>
                            <outcome value='DeleteContrailRouteInstance'>
                                <block atomic="true">
                                    <switch test='`$contrail-route-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="allotted-resource-information.allotted-resource-id 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 a required to be DeleteContrailRouteInstance for svc-action=unassign" />
                                </return>
                            </outcome>
                        </switch>
                    </block>
                </outcome>
            </switch>
            <return status='success'>
                <parameter name="ack-final-indicator" value="Y" />
                <parameter name="error-code" value="200" />
                <parameter name="error-message" value="`$error-message`" />
            </return>
        </block>
    </method>
</service-logic>