Service Creation


Service Creation Diagram



Response from Domain Controller to SDNC:



Condition

Response Code

Response Message

(examples)

Success

200

·   Success

Input Validation Error

400

·   Service name is not unique

·   Missing service name

·   Service name exists with different request-id

·   Temporary service does not exist

·   Missing [A/Z] end CLLI

·   Include constraints not supported

Path Computation Failure

500

·   No route found for working path

·   Max latency constraint failed

·   Bandwidth not available for source (or destination) endpoint



Response from SDNC to SO:



Condition

Response Code

Response Message

(examples)

Success

200

·   Success

Input Validation Error

400

·  Request validation failed as "source" is not "SO"

·   Request validation failed as "action" is not "CREATE" or "DELETE"

·   Request validation failed as "request-id" is not present or null

·   Request validation failed as "due-date" is prior to current-date

·   Request validation failed as "service-layer" is not "OTN"

·   Service name is not unique

·   Missing service name

·   Service name exists with different request-id

·   Temporary service does not exist

·   Missing [A/Z] end CLLI

·   Include constraints not supported

Path Computation Failure

500

·   No route found for working path

·   Max latency constraint failed

·   Bandwidth not available for source (or destination) endpoint







Detailed Description:

Step no.

Impact Description

Subcomponent/Class

method

Requirement Reference

Actions(Logic)

Step no.

Impact Description

Subcomponent/Class

method

Requirement Reference

Actions(Logic)

1

SO invokes Service Create API of SDNC

/restconf/operations/opticalservice:optical-service-create



1

  • optical-service-create RPC will be invoked by SO to create service

2

Validate Request parameters received from SO

Operation in DG - > call optical-service_optical-validate-input-params for validation



2.c

  • Validate Request based on mandatory parameters

  • if(jsonObject is not null) ->validation pass

  • else->validation fails

3.

On Validation success, Domain controller RPC gets invoked based on "domain-type" attribute





2.a

  • if domain-type is MSA call MSA controller for service creation or if domain-type is TaPI call TAPI controller for service creation

Actions to be performed in DG[opticalservice:optical-service-create]:



Step no.

Subcomponent/Class

Impact Description

plugin/adaptor

method

Requirement Reference

Actions(Logic)

Step no.

Subcomponent/Class

Impact Description

plugin/adaptor

method

Requirement Reference

Actions(Logic)

7.b

opticalservice:optical-service-create

Send Service Create request to Domain controller

org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode

sendRequest

2.d

<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
<parameter name="templateFileName" value="/opt/onap/sdnc/restapi/templates/optical-service-create-msa.json" />
<parameter name="restapiUrl" value="https://167.254.204.115:8443/cxf/openroadm/openroadm-services"/>
<parameter name='restapiUser' value='admin' />
<parameter name='restapiPassword' value='admin' />
<parameter name="httpMethod" value="POST"/>
<parameter name="responsePrefix" value="service-create-response"/>
<parameter name='contentType' value='application/json' />
<parameter name='format' value='json' />
<parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.msa.jks"/>
<parameter name="trustStorePassword" value="adminadmin"/>
<parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
<parameter name="keyStorePassword" value="adminadmin"/>

Synchronous Response from Domain Controller:

Sync success response



Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

8.a(i)

opticalservice:optical-service-create

org.onap.ccsdk.sli.adaptors.aai.AAIService



3.b

Create Domain Service instance in AAI

<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance'
key='customer.global-customer-id = $optical-service-create-input.global-customer-id AND
service-subscription.service-type = $optical-service-create-input.service-type AND
service-instance.service-instance-id = $optical-service-create-input.service-id' >
<parameter name='service-instance-id' value='`$optical-service-create-input.service-id`' />
<parameter name='service-instance-name' value='`$optical-service-create-input.payload.service-name`' />
<parameter name='service-type' value='Domain-Service' />
<parameter name='orchestration-status' value='CREATING' />
<parameter name='service-rate' value='`$optical-service-create-input.payload.service-rate`' />
<parameter name='service-layer' value='`$optical-service-create-input.payload.service-layer`' />



8.a(ii)

opticalservice:optical-service-create

org.onap.ccsdk.sli.adaptors.aai.AAIService



3.b

Relate p-interfaces to service-instance

To determine Capacity:

Get the available-capacity eg:100G and subtract it with rate(received during service create eg: 10G) and update the value in available_capacity

100-10=90G

<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='service-instance:relationship-list'

key='customer.global-customer-id = $optical-service-create-input.global-customer-id AND

service-subscription.service-type = $optical-service-create-input.service-type AND

service-instance.service-instance-id = $optical-service-create-input.service-id' force="true" pfx="tmp.AnAI-data">

<parameter name="relationship-list.relationship[0].related-to" value="p-interface" />

<parameter name="relationship-list.relationship[0].related-link" value="`'/network/pnfs/pnf/' + $a-end-pnf-name + '/p-interfaces/p-interface/' + $optical-service-create-input.payload.service-aend.port-id `" />

<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="pnf.pnf-name" />

<parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$a-end-pnf-name`" />

<parameter name="relationship-list.relationship[1].related-to" value="p-interface" />

<parameter name="relationship-list.relationship[1].related-link" value="`'/network/pnfs/pnf/' + $z-end-pnf-name + '/p-interfaces/p-interface/' + $optical-service-create-input.payload.service-zend.port-id `" />

<parameter name="relationship-list.relationship[1].relationship-data[0].relationship-key" value="pnf.pnf-name" />

<parameter name="relationship-list.relationship[1].relationship-data[0].relationship-value" value="`$z-end-pnf-name`" />





8.a.(iii)

opticalservice:optical-service-create

org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource





Create request entry in DB

<save plugin="org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource" resource="SQL" key="INSERT INTO REQUEST_DETAILS (request_id, status, service_rate, service_instance_id, service_type, global_customer_id, notification_url) VALUES ( $optical-service-create-input.request-id , 'CREATING' , $optical-service-create-input.payload.service-rate , $optical-service-create-input.service-id , $optical-service-create-input.service-type , $optical-service-create-input.global-customer-id , $optical-service-create-input.notification-url );">



8.a.(iv)

opticalservice:optical-service-create





3.a



Return RPC response to SO

{
 "output": {
    "response-code": "200",
    "response-message": "Service-creation in Progress"
  }
}



Sync failure response



Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

8.b(i) 

opticalservice:optical-service-create









Return RPC response to SO

{
  "output": {
    "response-code": "500",
    "response-message": "{Virtuora-response}"
  }
}

Asynchronous Response from Domain Controller:

Async success response



Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

9.a(i)

opticalservice:

AsyncNotificationHandling.java

org.onap.ccsdk.sli.adaptors.aai.AAIService



4.a

Update Orchestration-status under service-instance node in AAI



<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='createdResource'>
<parameter name="Orchestration status " value="Created ">

9.a(ii)

opticalservice:

AsyncNotificationHandling.java

org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource



4.c

Update request_status in Config DB

<save plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
key = 'UPDATE sdnc_mdons SET request_status=$sdnc_mdons.request_status where request_id=$sdnc_mdons.request_id'
force='true' pfx='save-result'>
Status: CREATED

9.a(iii)

opticalservice:

AsyncNotificationHandling.java





4.b

call SO API to post notification

{

    "configuration-response-common":{

         "request-id":"3e35dcad-8e2d-420a-b434-822daa38b2ff",

         "response-code":"200",

         "response-message":"SUCCESS",

         "ack-final-indicator":"Y"

      }

}



Async failure response



Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

Step no.

Subcomponent/Class

plugin/adaptor

method

Requirement Reference

Description

Actions(Logic)

9.b(i)

opticalservice:

AsyncNotificationHandling.java

org.onap.ccsdk.sli.adaptors.aai.AAIService





Delete service-instance from AAI

Capacity:

Append the available_capacity with rate value

<delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='service-instance'
key='customer.global-customer-id = $optical-service-delete-input.global-customer-id AND
service-subscription.service-type = $optical-service-delete-input.service-type AND
service-instance.service-instance-id = $instance'>



9.b(ii)

opticalservice:

AsyncNotificationHandling.java



org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource



5.b

Delete DB entry

<delete plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
key = 'delete from request_details where  request_id=$sdnc_mdons.request_id'
force='true' pfx='save-result'>

9.b(iii)

opticalservice:

AsyncNotificationHandling.java





5.a

Post notification to SO

Call SO notification API to post notification.

{

      "configuration-response-common":{

         "request-id":"3e35dcad-8e2d-420a-b434-822daa38b2ff",

         "response-code":"500",

         "response-message":"Failed due to service time-out",

         "ack-final-indicator":"Y"

      }

}