2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 # Copyright (c) 2020, CMCC Technologies Co., Ltd.
7 # Licensed under the Apache License, Version 2.0 (the "License")
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.scripts
23 import static org.apache.commons.lang3.StringUtils.isBlank
24 import javax.ws.rs.NotFoundException
25 import org.camunda.bpm.engine.delegate.BpmnError
26 import org.camunda.bpm.engine.delegate.DelegateExecution
27 import org.onap.aai.domain.yang.Relationship
28 import org.onap.aai.domain.yang.ServiceInstance
29 import org.onap.aai.domain.yang.SliceProfile
30 import org.onap.aaiclient.client.aai.AAIResourcesClient
31 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper
32 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
33 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
34 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder
35 import org.onap.so.beans.nsmf.AllocateAnNssi
36 import org.onap.so.beans.nsmf.AllocateCnNssi
37 import org.onap.so.beans.nsmf.AllocateTnNssi
38 import org.onap.so.beans.nsmf.AnSliceProfile
39 import org.onap.so.beans.nsmf.CnSliceProfile
40 import org.onap.so.beans.nsmf.EsrInfo
41 import org.onap.so.beans.nsmf.NssiResponse
42 import org.onap.so.beans.nsmf.NssmfAdapterNBIRequest
43 import org.onap.so.beans.nsmf.ResponseDescriptor
44 import org.onap.so.beans.nsmf.ServiceInfo
45 import org.onap.so.beans.nsmf.SliceTaskInfo
46 import org.onap.so.beans.nsmf.SliceTaskParamsAdapter
47 import org.onap.so.beans.nsmf.TnSliceProfile
48 import org.onap.so.bpmn.common.scripts.ExceptionUtil
49 import org.onap.so.bpmn.core.json.JsonUtils
50 import org.slf4j.Logger
51 import org.slf4j.LoggerFactory
53 class DoAllocateNSIandNSSI extends org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor{
55 private static final Logger logger = LoggerFactory.getLogger(DoAllocateNSIandNSSI.class);
57 ExceptionUtil exceptionUtil = new ExceptionUtil()
59 JsonUtils jsonUtil = new JsonUtils()
61 AAIResourcesClient client = getAAIClient()
64 * Pre Process the BPMN Flow Request
66 * generate the nsOperationKey
67 * generate the nsParameters
70 void preProcessRequest (DelegateExecution execution) {
72 logger.trace("Enter preProcessRequest()")
73 Map<String, Object> nssiMap = new HashMap<>()
74 execution.setVariable("nssiMap", nssiMap)
75 boolean isMoreNSSTtoProcess = true
76 execution.setVariable("isMoreNSSTtoProcess", isMoreNSSTtoProcess)
77 List<String> nsstSequence = new ArrayList<>(Arrays.asList("cn"))
78 execution.setVariable("nsstSequence", nsstSequence)
79 logger.trace("Exit preProcessRequest")
86 void retriveSliceOption(DelegateExecution execution) {
87 logger.trace("Enter retriveSliceOption() of DoAllocateNSIandNSSI")
89 boolean isNSIOptionAvailable
91 SliceTaskParamsAdapter sliceParams =
92 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
94 if(isBlank(sliceParams.getSuggestNsiId())) {
95 isNSIOptionAvailable = false
98 isNSIOptionAvailable = true
99 execution.setVariable('nsiServiceInstanceId', sliceParams.getSuggestNsiId())
100 execution.setVariable('nsiServiceInstanceName', sliceParams.getSuggestNsiName())
102 execution.setVariable("isNSIOptionAvailable", isNSIOptionAvailable)
103 logger.trace("Exit retriveSliceOption() of DoAllocateNSIandNSSI")
108 * create nsi instance in aai
111 void createNSIinAAI(DelegateExecution execution) {
112 logger.debug("Enter CreateNSIinAAI in DoAllocateNSIandNSSI()")
114 String sliceInstanceId = UUID.randomUUID().toString()
115 SliceTaskParamsAdapter sliceParams =
116 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
118 //set new nsiId to sliceParams suggestNsiId
119 sliceParams.setSuggestNsiId(sliceInstanceId)
121 ServiceInstance nsi = new ServiceInstance()
124 String sliceInstanceName = "nsi_"+execution.getVariable("sliceServiceInstanceName")
125 String serviceType = execution.getVariable("serviceType")
126 String serviceStatus = "deactivated"
127 String modelInvariantUuid = sliceParams.getNSTInfo().invariantUUID
128 String modelUuid = sliceParams.getNSTInfo().UUID
130 String uuiRequest = execution.getVariable("uuiRequest")
131 String serviceInstanceLocationid = jsonUtil.getJsonValue(uuiRequest, "service.parameters.requestInputs.plmnIdList")
132 String serviceRole = "nsi"
134 execution.setVariable("sliceInstanceId", sliceInstanceId)
135 nsi.setServiceInstanceId(sliceInstanceId)
136 nsi.setServiceInstanceName(sliceInstanceName)
137 nsi.setServiceType(serviceType)
138 nsi.setOrchestrationStatus(serviceStatus)
139 nsi.setModelInvariantId(modelInvariantUuid)
140 nsi.setModelVersionId(modelUuid)
141 nsi.setServiceInstanceLocationId(serviceInstanceLocationid)
142 nsi.setServiceRole(serviceRole)
146 AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceInstanceId))
147 client.create(nsiServiceUri, nsi)
149 execution.setVariable("nsiServiceUri", nsiServiceUri)
151 } catch (BpmnError e) {
153 } catch (Exception ex) {
154 msg = "Exception in DoCreateSliceServiceInstance.instantiateSliceService. " + ex.getMessage()
156 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
159 logger.debug("Exit CreateNSIinAAI in DoAllocateNSIandNSSI()")
164 * create relationship between nsi and service profile instance
167 void createRelationship(DelegateExecution execution) {
169 String allottedResourceId = execution.getVariable("allottedResourceId")
170 SliceTaskParamsAdapter sliceParams =
171 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
173 AAIResourceUri nsiServiceUri = execution.getVariable("nsiServiceUri") as AAIResourceUri
174 logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri)
176 AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceParams.suggestNsiId).allottedResource(allottedResourceId))
178 client.connect(allottedResourceUri, nsiServiceUri)
185 void updateRelationship(DelegateExecution execution) {
186 logger.debug("Enter update relationship in DoAllocateNSIandNSSI()")
187 //todo: allottedResourceId
188 String allottedResourceId = execution.getVariable("allottedResourceId")
189 //Need to check whether nsi exist : Begin
191 SliceTaskParamsAdapter sliceParams =
192 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
194 String nsiServiceInstanceID = sliceParams.getSuggestNsiId()
195 //sliceParams.setServiceId(nsiServiceInstanceID)
197 AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(nsiServiceInstanceID))
200 AAIResultWrapper wrapper = client.get(nsiServiceUri, NotFoundException.class)
201 Optional<ServiceInstance> si = wrapper.asBean(ServiceInstance.class)
203 if (!si.ifPresent()) {
204 String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
206 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
209 AAIResourceUri allottedResourceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sliceParams.suggestNsiId).allottedResource(allottedResourceId))
211 client.connect(allottedResourceUri, nsiServiceUri)
213 execution.setVariable("sliceTaskParams", sliceParams)
214 }catch(BpmnError e) {
216 }catch (Exception ex){
217 String msg = "NSI suggested in the option doesn't exist. " + nsiServiceInstanceID
219 exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
221 logger.debug("Exit update relationship in DoAllocateNSIandNSSI()")
225 * create RAN Slice Profile Instance
228 void createAnSliceProfileInstance(DelegateExecution execution) {
230 String globalSubscriberId = execution.getVariable("globalSubscriberId")
231 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
232 String serviceInstanceId = UUID.randomUUID().toString()
233 execution.setVariable("ranSliceProfileInstanceId", serviceInstanceId) //todo:
235 String serviceType = ""
236 String serviceRole = "slice-profile"
237 String oStatus = "deactivated"
239 SliceTaskParamsAdapter sliceParams =
240 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
241 SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
242 sliceTaskInfo.setSliceInstanceId(serviceInstanceId)
244 // create slice profile
245 ServiceInstance rspi = new ServiceInstance()
246 rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
247 rspi.setServiceType(serviceType)
248 rspi.setServiceRole(serviceRole)
249 rspi.setOrchestrationStatus(oStatus)
250 rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
251 rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
252 rspi.setInputParameters(uuiRequest)
253 rspi.setWorkloadContext(useInterval)
254 rspi.setEnvironmentContext(sNSSAI_id)
256 //timestamp format YYYY-MM-DD hh:mm:ss
257 rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
259 execution.setVariable("communicationServiceInstance", rspi)
261 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId))
262 client.create(uri, rspi)
264 execution.setVariable("sliceTaskParams", sliceParams)
268 * create An Slice Profile
271 void createAnSliceProfile(DelegateExecution execution) {
273 String globalSubscriberId = execution.getVariable("globalSubscriberId")
274 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
275 //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
277 SliceTaskParamsAdapter sliceParams =
278 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
279 SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
280 AnSliceProfile anSliceProfile = sliceTaskInfo.sliceProfile
282 String profileId = UUID.randomUUID().toString()
283 anSliceProfile.setSliceProfileId(profileId)
285 SliceProfile sliceProfile = new SliceProfile()
286 sliceProfile.setProfileId(profileId)
287 sliceProfile.setCoverageAreaTAList(anSliceProfile.coverageAreaTAList as String)
289 AAIResourceUri uri = AAIUriFactory.createResourceUri(
290 AAIFluentTypeBuilder.business().customer(globalSubscriberId)
291 .serviceSubscription(subscriptionServiceType)
292 .serviceInstance(sliceTaskInfo.sliceInstanceId)
293 .sliceProfile(profileId)
295 client.create(uri, sliceProfile)
296 execution.setVariable("sliceTaskParams", sliceParams)
300 * prepare AllocateAnNssi
303 void prepareAllocateAnNssi(DelegateExecution execution) {
306 SliceTaskParamsAdapter sliceParams =
307 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
308 SliceTaskInfo<AnSliceProfile> sliceTaskInfo = sliceParams.anSliceTaskInfo
310 NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
312 AllocateAnNssi allocateAnNssi = new AllocateAnNssi()
313 allocateAnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
314 allocateAnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID
315 allocateAnNssi.nssiName = sliceTaskInfo.NSSTInfo.name
316 allocateAnNssi.sliceProfile = sliceTaskInfo.sliceProfile
317 allocateAnNssi.nsiInfo.nsiId = sliceParams.suggestNsiId
319 EsrInfo esrInfo = new EsrInfo()
320 //todo: vendor and network
321 esrInfo.setVendor(sliceTaskInfo.getVendor())
322 esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
324 String globalSubscriberId = execution.getVariable("globalSubscriberId")
325 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
328 ServiceInfo serviceInfo = new ServiceInfo()
329 serviceInfo.globalSubscriberId = globalSubscriberId
330 serviceInfo.subscriptionServiceType = subscriptionServiceType
331 serviceInfo.nsiId = sliceParams.suggestNsiId
332 serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
333 serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
335 nbiRequest.setServiceInfo(serviceInfo)
336 nbiRequest.setEsrInfo(esrInfo)
337 nbiRequest.setAllocateAnNssi(allocateAnNssi)
339 execution.setVariable("AnAllocateNssiNbiRequest", nbiRequest)
340 execution.setVariable("anBHSliceTaskInfo", sliceTaskInfo)
345 * create RAN Slice Profile Instance
348 void createCnSliceProfileInstance(DelegateExecution execution) {
350 String globalSubscriberId = execution.getVariable("globalSubscriberId")
351 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
352 String serviceInstanceId = UUID.randomUUID().toString()
353 execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo:
355 String serviceType = ""
356 String serviceRole = "slice-profile"
357 String oStatus = "deactivated"
359 SliceTaskParamsAdapter sliceParams =
360 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
361 SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
362 sliceTaskInfo.setSliceInstanceId(serviceInstanceId)
364 // create slice profile
365 ServiceInstance rspi = new ServiceInstance()
366 rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
367 rspi.setServiceType(serviceType)
368 rspi.setServiceRole(serviceRole)
369 rspi.setOrchestrationStatus(oStatus)
370 rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
371 rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
372 rspi.setInputParameters(uuiRequest)
373 rspi.setWorkloadContext(useInterval)
374 rspi.setEnvironmentContext(sNSSAI_id)
376 //timestamp format YYYY-MM-DD hh:mm:ss
377 rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
379 execution.setVariable("communicationServiceInstance", rspi)
381 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId))
382 client.create(uri, rspi)
383 execution.setVariable("sliceTaskParams", sliceParams)
387 * create An Slice Profile
390 void createCnSliceProfile(DelegateExecution execution) {
392 String globalSubscriberId = execution.getVariable("globalSubscriberId")
393 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
394 //String serviceInstanceId = execution.getVariable("ranSliceProfileInstanceId")
396 SliceTaskParamsAdapter sliceParams =
397 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
399 SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
400 CnSliceProfile cnSliceProfile = sliceTaskInfo.sliceProfile
402 String profileId = UUID.randomUUID().toString()
403 cnSliceProfile.setSliceProfileId(profileId)
405 SliceProfile sliceProfile = new SliceProfile()
406 sliceProfile.setProfileId(profileId)
407 sliceProfile.setCoverageAreaTAList(cnSliceProfile.coverageAreaTAList as String)
409 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(sliceTaskInfo.sliceInstanceId).sliceProfile(profileId))
410 client.create(uri, sliceProfile)
411 execution.setVariable("sliceTaskParams", sliceParams)
415 * prepare AllocateCnNssi
418 void prepareAllocateCnNssi(DelegateExecution execution) {
421 SliceTaskParamsAdapter sliceParams =
422 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
423 SliceTaskInfo<CnSliceProfile> sliceTaskInfo = sliceParams.cnSliceTaskInfo
425 NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
427 AllocateCnNssi allocateCnNssi = new AllocateCnNssi()
428 allocateCnNssi.nsstId = sliceTaskInfo.NSSTInfo.UUID
429 allocateCnNssi.nssiId = sliceTaskInfo.NSSTInfo.UUID
430 allocateCnNssi.nssiName = sliceTaskInfo.NSSTInfo.name
431 allocateCnNssi.sliceProfile = sliceTaskInfo.sliceProfile
432 allocateCnNssi.nsiInfo.nsiId = sliceParams.suggestNsiId
434 EsrInfo esrInfo = new EsrInfo()
435 //todo: vendor and network
436 esrInfo.setVendor(sliceTaskInfo.getVendor())
437 esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
439 String globalSubscriberId = execution.getVariable("globalSubscriberId")
440 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
443 ServiceInfo serviceInfo = new ServiceInfo()
444 serviceInfo.globalSubscriberId = globalSubscriberId
445 serviceInfo.subscriptionServiceType = subscriptionServiceType
446 serviceInfo.nsiId = sliceParams.suggestNsiId
447 serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
448 serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
450 nbiRequest.setServiceInfo(serviceInfo)
451 nbiRequest.setEsrInfo(esrInfo)
452 nbiRequest.setAllocateCnNssi(allocateCnNssi)
454 execution.setVariable("CnAllocateNssiNbiRequest", nbiRequest)
455 execution.setVariable("cnSliceTaskInfo", sliceTaskInfo)
460 * create TN Slice Profile Instance
463 void createTnBHSliceProfileInstance(DelegateExecution execution) {
464 String globalSubscriberId = execution.getVariable("globalSubscriberId")
465 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
467 String serviceType = ""
468 String serviceRole = "slice-profile"
469 String oStatus = "deactivated"
471 SliceTaskParamsAdapter sliceParams =
472 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
474 SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
475 String serviceInstanceId = UUID.randomUUID().toString()
477 sliceTaskInfo.setSliceInstanceId(serviceInstanceId)
478 //execution.setVariable("cnSliceProfileInstanceId", serviceInstanceId) //todo:
480 // create slice profile
481 ServiceInstance rspi = new ServiceInstance()
482 rspi.setServiceInstanceName(sliceTaskInfo.NSSTInfo.name)
483 rspi.setServiceType(serviceType)
484 rspi.setServiceRole(serviceRole)
485 rspi.setOrchestrationStatus(oStatus)
486 rspi.setModelInvariantId(sliceTaskInfo.NSSTInfo.invariantUUID)
487 rspi.setModelVersionId(sliceTaskInfo.NSSTInfo.UUID)
488 rspi.setInputParameters(uuiRequest)
489 rspi.setWorkloadContext(useInterval)
490 rspi.setEnvironmentContext(sNSSAI_id)
492 //timestamp format YYYY-MM-DD hh:mm:ss
493 rspi.setCreatedAt(new Date(System.currentTimeMillis()).format("yyyy-MM-dd HH:mm:ss", TimeZone.getDefault()))
495 execution.setVariable("communicationServiceInstance", rspi)
497 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(serviceInstanceId))
498 client.create(uri, rspi)
500 execution.setVariable("sliceTaskParams", sliceParams)
504 * create An Slice Profile
507 void createTnBHSliceProfile(DelegateExecution execution) {
509 String globalSubscriberId = execution.getVariable("globalSubscriberId")
510 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
512 SliceTaskParamsAdapter sliceParams =
513 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
515 SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
517 TnSliceProfile tnSliceProfile = sliceTaskInfo.sliceProfile
518 String profileId = UUID.randomUUID().toString()
519 tnSliceProfile.setSliceProfileId(profileId)
521 SliceProfile sliceProfile = new SliceProfile()
522 sliceProfile.setProfileId(profileId)
524 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(globalSubscriberId).serviceSubscription(subscriptionServiceType).serviceInstance(sliceTaskInfo.sliceInstanceId).sliceProfile(profileId))
525 client.create(uri, sliceProfile)
527 execution.setVariable("sliceTaskParams", sliceParams)
531 * prepare AllocateCnNssi
534 void prepareAllocateTnBHNssi(DelegateExecution execution) {
537 SliceTaskParamsAdapter sliceParams =
538 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
539 SliceTaskInfo<TnSliceProfile> sliceTaskInfo = sliceParams.tnBHSliceTaskInfo
541 NssmfAdapterNBIRequest nbiRequest = new NssmfAdapterNBIRequest()
543 AllocateTnNssi allocateTnNssi = new AllocateTnNssi()
544 //todo: AllocateTnNssi
545 allocateTnNssi.setTransportSliceNetworks()
546 allocateTnNssi.setNetworkSliceInfos()
549 //allocateTnNssi.networkSliceInfos
551 EsrInfo esrInfo = new EsrInfo()
552 esrInfo.setVendor(sliceTaskInfo.getVendor())
553 esrInfo.setNetworkType(sliceTaskInfo.getNetworkType())
555 String globalSubscriberId = execution.getVariable("globalSubscriberId")
556 String subscriptionServiceType = execution.getVariable("subscriptionServiceType")
558 ServiceInfo serviceInfo = new ServiceInfo()
559 serviceInfo.globalSubscriberId = globalSubscriberId
560 serviceInfo.subscriptionServiceType = subscriptionServiceType
561 serviceInfo.nsiId = sliceParams.suggestNsiId
562 serviceInfo.serviceInvariantUuid = sliceTaskInfo.NSSTInfo.invariantUUID
563 serviceInfo.serviceUuid = sliceTaskInfo.NSSTInfo.UUID
565 nbiRequest.setServiceInfo(serviceInfo)
566 nbiRequest.setEsrInfo(esrInfo)
567 nbiRequest.setAllocateTnNssi(allocateTnNssi)
569 execution.setVariable("TnBHAllocateNssiNbiRequest", nbiRequest)
570 execution.setVariable("tnBHSliceTaskInfo", sliceTaskInfo)
574 * Update relationship between
576 * 2. Slice Profile and Service Profile
577 * 3. SliceProfile and NSSI
578 * 4. sliceProfile and endpoint
582 public void updateAnRelationship(DelegateExecution execution) {
584 SliceTaskParamsAdapter sliceParams =
585 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
587 ResponseDescriptor result = execution.getVariable("anNssiAllocateResult") as ResponseDescriptor
588 String nssiId = result.getNssiId()
589 String endPointId = result.getEndPointId()
590 String nsiId = sliceParams.getSuggestNsiId()
591 String sliceProfileInstanceId = sliceParams.anSliceTaskInfo.sliceInstanceId
592 String serviceProfileInstanceId = sliceParams.serviceId
595 updateRelationship(execution, nsiId, nssiId)
597 updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId)
599 updateRelationship(execution, sliceProfileInstanceId, nssiId)
601 updateRelationship(execution, sliceProfileInstanceId, endPointId)
607 * Update relationship between
609 * 2. Slice Profile and Service Profile
610 * 3. SliceProfile and NSSI
614 public void updateCnRelationship(DelegateExecution execution) {
616 SliceTaskParamsAdapter sliceParams =
617 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
619 NssiResponse result = execution.getVariable("cnNssiAllocateResult") as NssiResponse
620 String nssiId = result.getNssiId()
621 String nsiId = sliceParams.getSuggestNsiId()
622 String sliceProfileInstanceId = sliceParams.cnSliceTaskInfo.sliceInstanceId
623 String serviceProfileInstanceId = sliceParams.serviceId
626 updateRelationship(execution, nsiId, nssiId)
628 updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId)
630 updateRelationship(execution,sliceProfileInstanceId, nssiId)
636 * Update relationship between
638 * 2. Slice Profile and Service Profile
639 * 3. SliceProfile and NSSI
643 public void updateTnBHRelationship(DelegateExecution execution) {
644 SliceTaskParamsAdapter sliceParams =
645 execution.getVariable("sliceTaskParams") as SliceTaskParamsAdapter
647 NssiResponse result = execution.getVariable("tnBHNssiAllocateResult") as NssiResponse
648 String nssiId = result.getNssiId()
649 String nsiId = sliceParams.getSuggestNsiId()
650 String sliceProfileInstanceId = sliceParams.tnBHSliceTaskInfo.sliceInstanceId
651 String serviceProfileInstanceId = sliceParams.serviceId
654 updateRelationship(execution, nsiId, nssiId)
656 updateRelationship(execution, serviceProfileInstanceId, sliceProfileInstanceId)
658 updateRelationship(execution,sliceProfileInstanceId, nssiId)
662 * sourceId -> targetId
667 void updateRelationship(DelegateExecution execution, String sourceId, String targetId) {
669 Relationship relationship = new Relationship()
671 AAIResourceUri nsiServiceUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(targetId))
673 logger.info("Creating Allotted resource relationship, nsiServiceUri: " + nsiServiceUri)
675 relationship.setRelatedLink(nsiServiceUri.build().toString())
677 AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(sourceId).relationshipAPI())
678 client.create(uri, relationship)