2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
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=========================================================
22 * The Instantiation (or View/Edit) Controller controls the instantiation/removal of
23 * deployable objects (Services, VNFs, VF-Modules, Networks, and Volume-Groups)
28 app.requires.push('ui.tree');
30 app.controller("InstantiationController", function ($scope, $route, $location, $timeout, COMPONENT, DataService, PropertyService, UtilityService, $http, vidService) {
32 $scope.popup = new Object();
33 $scope.defaultBaseUrl = "";
34 $scope.responseTimeoutMsec = 60000;
35 $scope.properties = UtilityService.getProperties();
36 $scope.init = function() {
39 * These 2 statements should be included in non-test code.
41 // takes a default value, retrieves the prop value from the file system and sets it
42 var msecs = PropertyService.retrieveMsoMaxPollingIntervalMsec(1000);
43 PropertyService.setMsoMaxPollingIntervalMsec(msecs);
45 // takes a default value, retrieves the prop value from the file system and sets it
46 var polls = PropertyService.retrieveMsoMaxPolls(7);
47 PropertyService.setMsoMaxPolls(polls);
49 //PropertyService.setMsoBaseUrl("testmso");
50 PropertyService.setServerResponseTimeoutMsec(10000);
53 * Common parameters that shows an example of how the view edit screen
54 * is expected to pass some common service instance values to the
58 // DataService.setSubscriberName("Mobility");
59 // DataService.setGlobalCustomerId("CUSTID12345")
60 // DataService.setServiceType("Mobility Type 1");
61 // DataService.setServiceInstanceName("Example Service Instance Name");
62 // DataService.setServiceName("Mobility Service 1");
63 // DataService.setServiceInstanceId("mmsc-test-service-instance");
64 // DataService.setServiceUuid("XXXX-YYYY-ZZZZ");
65 // DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
68 //PropertyService.setMsoBaseUrl("testmso");
70 $scope.convertModel = function(asdcModel) {
72 if (!asdcModel) return undefined;
74 var convertedAsdcModel = {
75 "service": asdcModel.service,
80 for (var networkUuid in asdcModel.networks) {
81 var networkModel = asdcModel.networks[networkUuid];
82 convertedAsdcModel.networks[networkModel.invariantUuid] = {};
83 convertedAsdcModel.networks[networkModel.invariantUuid][networkModel.version] = networkModel;
86 for (var vnfUuid in asdcModel.vnfs) {
87 var vnfModel = asdcModel.vnfs[vnfUuid];
88 convertedAsdcModel.vnfs[vnfModel.invariantUuid] = {};
89 convertedAsdcModel.vnfs[vnfModel.invariantUuid][vnfModel.version] = {
90 "uuid": vnfModel.uuid,
91 "invariantUuid": vnfModel.invariantUuid,
92 "version": vnfModel.version,
93 "name": vnfModel.name,
94 "modelCustomizationName": vnfModel.modelCustomizationName,
96 "description": vnfModel.description,
101 for (var vfModuleUuid in asdcModel.vnfs[vnfUuid].vfModules) {
102 var vfModuleModel = asdcModel.vnfs[vnfUuid].vfModules[vfModuleUuid];
103 convertedAsdcModel.vnfs[vnfModel.invariantUuid][vnfModel.version].vfModules[vfModuleModel.invariantUuid] = {};
104 convertedAsdcModel.vnfs[vnfModel.invariantUuid][vnfModel.version].vfModules[vfModuleModel.invariantUuid][vfModuleModel.version] = vfModuleModel;
107 for (var volumeGroupUuid in asdcModel.vnfs[vnfUuid].volumeGroups) {
108 var volumeGroupModel = asdcModel.vnfs[vnfUuid].volumeGroups[volumeGroupUuid];
109 convertedAsdcModel.vnfs[vnfModel.invariantUuid][vnfModel.version].volumeGroups[volumeGroupModel.invariantUuid] = {};
110 convertedAsdcModel.vnfs[vnfModel.invariantUuid][vnfModel.version].volumeGroups[volumeGroupModel.invariantUuid][volumeGroupModel.version] = volumeGroupModel;
113 console.log ("convertedAsdcModel: "); console.log (JSON.stringify ( convertedAsdcModel, null, 4 ) );
114 return convertedAsdcModel;
118 "model": vidService.getModel(),
119 "modelByInvariantUuid": $scope.convertModel(vidService.getModel()),
120 "instance": vidService.getInstance()
123 $scope.deleteNetwork = function(serviceObject, network) {
125 console.log("Removing Network " + network.name);
127 //Send delete network request to MSO
129 //var networks = this.service.instance.networks;
131 //networks.splice(networks.indexOf(network), 1);
133 //Retrieve updated data from A&AI
134 var serviceInstance = serviceObject.object;
136 DataService.setInventoryItem(network);
137 DataService.setModelInfo(COMPONENT.NETWORK, $scope.service.model);
139 DataService.setSubscriberName(serviceObject['subscriberName']);
140 DataService.setServiceType(serviceObject['serviceType']);
141 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
143 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
144 DataService.setServiceInstanceName($scope.service.instance.name);
146 //DataService.setServiceName($scope.service.model.name);
148 //DataService.setServiceUuid("XXXX-YYYY-ZZZZ");
149 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
151 $scope.$broadcast("deleteComponent", {
152 componentId : COMPONENT.NETWORK,
153 callbackFunction : deleteCallbackFunction
157 $scope.deleteService = function(serviceObject) {
159 var serviceInstance = serviceObject.object;
161 console.log("Removing Service " + $scope.service.instance.name);
163 DataService.setInventoryItem(serviceInstance);
164 //DataService.setModelInfo(COMPONENT.SERVICE, $scope.service.model);
166 DataService.setModelInfo(COMPONENT.SERVICE, {
167 "modelInvariantId": $scope.service.model.service.invariantUuid,
168 "modelVersion": $scope.service.model.service.version,
169 "modelNameVersionId": $scope.service.model.service.uuid,
170 "modelCustomizationName": "",
171 "modelName": $scope.service.model.service.name,
175 DataService.setSubscriberName(serviceObject['subscriberName']);
176 DataService.setServiceType(serviceObject['serviceType']);
177 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
179 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
180 DataService.setServiceInstanceName($scope.service.instance.name);
182 DataService.setServiceName($scope.service.model.service.name);
184 DataService.setServiceUuid($scope.service.model.service.uuid);
185 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
187 $scope.$broadcast("deleteComponent", {
188 componentId : COMPONENT.SERVICE,
189 callbackFunction : deleteServiceInstanceCallbackFunction
194 $scope.deleteVfModule = function(serviceObject, vfModule, vnf) {
196 console.log("Removing VF-Module " + vfModule.name);
198 var serviceInstance = serviceObject.object;
200 DataService.setInventoryItem(vfModule.object);
202 var svcModel = $scope.service.modelByInvariantUuid;
203 var vnfModelInvariantUuid = vnf.object["persona-model-id"];
204 var vnfModelVersion = vnf.object["persona-model-version"];
205 if (svcModel != null && vnfModelInvariantUuid != null && vnfModelVersion != null )
207 if ( ( UtilityService.hasContents(svcModel.vnfs) && UtilityService.hasContents(svcModel.vnfs[vnfModelInvariantUuid] ) ) &&
208 ( UtilityService.hasContents(svcModel.vnfs[vnfModelInvariantUuid][vnfModelVersion] ) ) ) {
209 var vnfModel = svcModel.vnfs[vnfModelInvariantUuid][vnfModelVersion];
211 // volume groups don't have persona-model-id/version in a&ai.
212 // Their persona-model-id/version is the one for the associated vfModule
214 var vfModuleInvariantUuid = vfModule.object["persona-model-id"];
215 var vfModuleModelVersion = vfModule.object["persona-model-version"];
217 if ( UtilityService.hasContents(vnfModel) && UtilityService.hasContents(vnfModel.vfModules) && UtilityService.hasContents(vfModuleInvariantUuid) && UtilityService.hasContents(vfModuleModelVersion) )
219 var vfModelGroupModel = vnfModel.vfModules[vfModuleInvariantUuid][vfModuleModelVersion];
221 var vfModeluuid = vfModelGroupModel.uuid;
222 if (vfModeluuid == null)
225 var vnfModelCustomizationName = vnfModel.modelCustomizationName;
226 if (vnfModelCustomizationName == null)
227 vnfModelCustomizationName = "";
229 var vfModelName = vfModelGroupModel.name;
230 if (vfModelName == null)
233 var vfModelVersionID = vfModule.object['vf-module-id'];
234 if (vfModelVersionID == null)
235 vfModelVersionID = "";
237 DataService.setModelInfo(COMPONENT.VF_MODULE, {
238 "modelInvariantId": vfModuleInvariantUuid,
239 "modelVersion": vfModuleModelVersion,
240 "modelNameVersionId": vfModeluuid,
241 "modelCustomizationName": vnfModelCustomizationName,
242 "modelName": vfModelName,
246 DataService.setVnfInstanceId(vnf.object['vnf-id']);
247 DataService.setVfModuleInstanceId(vfModelVersionID);
249 DataService.setSubscriberName(serviceObject['subscriberName']);
250 DataService.setServiceType(serviceObject['serviceType']);
251 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
253 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
254 DataService.setServiceInstanceName($scope.service.instance.name);
256 DataService.setServiceName($scope.service.model.service.name);
258 DataService.setServiceUuid($scope.service.model.service.uuid);
259 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
261 $scope.$broadcast("deleteComponent", {
262 componentId : COMPONENT.VF_MODULE,
263 callbackFunction : deleteCallbackFunction
272 console.log("Removing VNF " + vnf.name + " could not proceed due to missing ASDC model information.");
275 //Retrieve updated data from A&AI
278 $scope.deleteVnf = function(serviceObject, vnf) {
280 console.log("Removing VNF " + vnf.name);
282 var serviceInstance = serviceObject.object;
284 DataService.setInventoryItem(vnf.object);
286 var vnftype = vnf.object['vnf-type'];
291 var n = vnftype.search("/");
293 vnftype = vnftype.substring(n+1);
297 var svcModel = $scope.service.modelByInvariantUuid;
298 var vnfModelInvariantUuid = vnf.object["persona-model-id"];
299 var vnfModelVersion = vnf.object["persona-model-version"];
300 if (svcModel != null && vnfModelInvariantUuid != null && vnfModelVersion != null )
303 console.log ( "vnf models: "); console.log ( JSON.stringify ($scope.service.modelByInvariantUuid.vnfs, null, 4) );
305 var vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
306 if (vnfModel == null)
308 DataService.setModelInfo(COMPONENT.VNF, {
309 "modelInvariantId": vnfModelInvariantUuid,
310 "modelVersion": vnfModelVersion,
311 "modelNameVersionId": "",
312 "modelCustomizationName": vnftype,
319 DataService.setModelInfo(COMPONENT.VNF, {
320 "modelInvariantId": vnfModelInvariantUuid,
321 "modelVersion": vnfModelVersion,
322 "modelNameVersionId": vnfModel.uuid,
323 "modelCustomizationName": vnftype,
324 "modelName": vnfModel.name,
331 console.log("Removing VNF name = " + vnf.name + " didn't get the correponding model details so sending empty model values to MSO!");
332 DataService.setModelInfo(COMPONENT.VNF, {
333 "modelInvariantId": "",
335 "modelNameVersionId": "",
336 "modelCustomizationName": vnftype,
342 DataService.setVnfInstanceId(vnf.object['vnf-id']);
344 DataService.setSubscriberName(serviceObject['subscriberName']);
345 DataService.setServiceType(serviceObject['serviceType']);
346 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
348 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
349 DataService.setServiceInstanceName($scope.service.instance.name);
351 DataService.setServiceName($scope.service.model.service.name);
353 DataService.setServiceUuid($scope.service.model.service.uuid);
354 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
356 $scope.$broadcast("deleteComponent", {
357 componentId : COMPONENT.VNF,
358 callbackFunction : deleteCallbackFunction
364 $scope.deleteVnf = function(serviceObject, vnf) {
366 console.log("Removing VNF " + vnf.name);
368 //Send delete VF-Module request to MSO
370 var svcModel = $scope.service.modelByInvariantUuid;
371 var vnfModelInvariantUuid = vnf.object["persona-model-id"];
372 var vnfModelVersion = vnf.object["persona-model-version"];
373 console.log ( "vnf models: "); console.log ( JSON.stringify ($scope.service.modelByInvariantUuid.vnfs, null, 4) );
375 DataService.setInventoryItem(vnf);
377 var vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
379 DataService.setModelInfo(COMPONENT.VNF, {
380 "modelInvariantId": vnfModelInvariantUuid,
381 "modelVersion": vnfModelVersion,
382 "modelNameVersionId": vnfModel.uuid,
383 "modelCustomizationName": vnfModel.modelCustomizationName,
384 "modelName": vnfModel.name,
385 "inputs": vnfModel.inputs
388 DataService.setSubscriberName(serviceObject['globalCustomerId']);
389 DataService.setServiceType(serviceObject['serviceType']);
390 DataService.setServiceInstanceId(serviceObject['service-instance-id']);
392 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
393 DataService.setServiceInstanceName($scope.service.instance.name);
395 DataService.setServiceName(vnf.name);
397 DataService.setServiceUuid($scope.service.model.service.uuid);
398 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
400 $scope.$broadcast("deleteComponent", {
401 componentId : COMPONENT.VNF,
402 callbackFunction : deleteCallbackFunction
405 //var vnfs = this.service.instance.vnfs;
407 //vnfs.splice(vnfs.indexOf(vnf), 1);
409 //Retrieve updated data from A&AI
412 $scope.deleteVolumeGroup = function(serviceObject, vnf, vfModule, volumeGroup) {
414 console.log("Removing Volume Group " + volumeGroup.name);
415 var haveModel = false;
416 var svcModel = $scope.service.modelByInvariantUuid;
418 var vnfModelInvariantUuid = vnf.object["persona-model-id"];
419 var vnfModelVersion = vnf.object["persona-model-version"];
421 if ( ( UtilityService.hasContents(vnfModelInvariantUuid) ) && (UtilityService.hasContents(vnfModelVersion) ) ) {
422 if ( UtilityService.hasContents(svcModel) && UtilityService.hasContents($scope.service.modelByInvariantUuid.vnfs) ) {
423 //console.log ( "vnf models "); console.log (JSON.stringify ($scope.service.modelByInvariantUuid.vnfs, null, 4) );
424 if ( ( UtilityService.hasContents($scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid] ) ) &&
425 ( UtilityService.hasContents($scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion] ) ) ) {
426 var vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
428 // volume groups don't have persona-model-id/version in a&ai.
429 // Their persona-model-id/version is the one for the associated vfModule
431 var vfModuleInvariantUuid = vfModule.object["persona-model-id"];
432 var vfModuleModelVersion = vfModule.object["persona-model-version"];
434 if ( UtilityService.hasContents(vnfModel.volumeGroups) && UtilityService.hasContents(vfModuleInvariantUuid) && UtilityService.hasContents(vfModuleModelVersion) ) {
436 if ( ( UtilityService.hasContents (vnfModel.volumeGroups[vfModuleInvariantUuid]) ) &&
437 (UtilityService.hasContents (vnfModel.volumeGroups[vfModuleInvariantUuid][vfModuleModelVersion]) ) ) {
438 var volGroupModel = vnfModel.volumeGroups[vfModuleInvariantUuid][vfModuleModelVersion];
440 DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {
441 "modelInvariantId": vfModuleInvariantUuid,
442 "modelVersion": vfModuleModelVersion,
443 "modelNameVersionId": volGroupModel.uuid,
444 "modelCustomizationName": vnfModel.modelCustomizationName,
445 "modelName": volGroupModel.name,
456 DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {
457 "modelInvariantId": "",
459 "modelNameVersionId": "",
460 "modelCustomizationName": "",
466 var serviceInstance = serviceObject.object;
468 DataService.setInventoryItem(volumeGroup.object);
470 DataService.setSubscriberName(serviceObject['subscriberName']);
471 DataService.setServiceType(serviceObject['serviceType']);
472 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
474 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
475 DataService.setServiceInstanceName($scope.service.instance.name);
477 DataService.setServiceName($scope.service.model.service.name);
479 DataService.setServiceUuid($scope.service.model.service.uuid);
480 DataService.setVnfInstanceId(vnf.nodeId);
481 DataService.setVolumeGroupInstanceId(volumeGroup.nodeId);
483 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
485 $scope.$broadcast("deleteComponent", {
486 componentId : COMPONENT.VOLUME_GROUP,
487 callbackFunction : deleteCallbackFunction
491 $scope.deleteVnfVolumeGroup = function(serviceObject, vnf, volumeGroup) {
493 console.log("Removing Volume Group " + volumeGroup.name);
494 var serviceInstance = serviceObject.object;
496 DataService.setInventoryItem(volumeGroup.object);
498 var svcModel = $scope.service.modelByInvariantUuid;
499 var vnfModelInvariantUuid = vnf.object["persona-model-id"];
500 var vnfModelVersion = vnf.object["persona-model-version"];
503 var volGroupModelInvariantUuid = null;
504 var volGroupModelVersion = null;
506 // send an empty model by default since model is not required for deletes
507 DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {});
509 if ( (volumeGroup.object != null) && ( volumeGroup.object["persona-model-id"] != null ) &&
510 (volumeGroup.object["persona-model-version"] != null) ) {
512 volGroupModelInvariantUuid = volumeGroup.object["persona-model-id"];
513 volGroupModelVersion = volumeGroup.object["persona-model-version"];
515 if (svcModel != null && vnfModelInvariantUuid != null && vnfModelVersion != null ) {
516 console.log ( "vnf models: "); console.log ( JSON.stringify ($scope.service.modelByInvariantUuid.vnfs, null, 4) );
517 if ( ($scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid] != null) &&
518 ($scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion]) != null ) {
520 vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
521 if ( (vnfModel.volumeGroups != null) && ( vnfModel.volumeGroups[volGroupModelInvariantUuid] != null )
522 && ( vnfModel.volumeGroups[volGroupModelInvariantUuid][volGroupModelVersion] != null ) ) {
524 var volumeGroupModel = vnfModel.volumeGroups[volGroupModelInvariantUuid][volGroupModelVersion];
526 DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {
527 "modelInvariantId": volumeGroupModel.invariantUuid,
528 "modelVersion": volumeGroupModel.version,
529 "modelNameVersionId": volumeGroupModel.uuid,
530 "modelName": volumeGroupModel.name,
531 "modelCustomizationName": volumeGroupModel.modelCustomizationName,
539 DataService.setVnfInstanceId(vnf.object['vnf-id']);
541 DataService.setSubscriberName(serviceObject['subscriberName']);
542 DataService.setServiceType(serviceObject['serviceType']);
543 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
545 DataService.setGlobalCustomerId(serviceObject['globalCustomerId']);
546 DataService.setServiceInstanceName($scope.service.instance.name);
548 DataService.setServiceName($scope.service.model.service.name);
550 DataService.setServiceUuid($scope.service.model.service.uuid);
551 DataService.setVnfInstanceId(vnf.nodeId);
552 DataService.setVolumeGroupInstanceId(volumeGroup.nodeId);
554 //DataService.setUserServiceInstanceName("USER_SERVICE_INSTANCE_NAME");
556 $scope.$broadcast("deleteComponent", {
557 componentId : COMPONENT.VOLUME_GROUP,
558 callbackFunction : deleteCallbackFunction
562 $scope.describeNetwork = function(serviceObject, networkObject) {
563 var serviceInstance = serviceObject.object;
564 var network = networkObject.object;
566 //Display popup with additional network information
567 DataService.setNetworkInstanceId(network['network-id']);
568 DataService.setInventoryItem(network);
569 //DataService.setModelInfo(network['network-id'], network);
571 DataService.setSubscriberName(serviceObject['subscriber-name']);
572 DataService.setServiceType(serviceObject['serviceType']);
573 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
575 //DataService.setVnfInstanceId("Testing");
576 $scope.$broadcast("showComponentDetails", {
577 componentId : COMPONENT.NETWORK
581 // for service instance id - no need for this!
582 $scope.describeService = function(serviceObject) {
583 var serviceInstance = serviceObject.object;
585 DataService.setInventoryItem(serviceInstance);
586 //DataService.setModelInfo(serviceInstance['service-instance-id'], serviceInstance);
588 DataService.setSubscriberName(serviceObject['subscriberName']);
589 DataService.setServiceType(serviceObject['serviceType']);
590 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
592 //Display popup with additional service information
593 $scope.$broadcast("showComponentDetails", {
594 componentId : COMPONENT.SERVICE
599 $scope.describeVfModule = function(serviceObject, vfModuleObject) {
600 var serviceInstance = serviceObject.object;
601 var vfModule = vfModuleObject.object;
603 //Display popup with additional VF-Module information
604 DataService.setVfModuleInstanceId(vfModule['vf-module-id']);
605 DataService.setInventoryItem(vfModule);
606 //DataService.setModelInfo(vfModule['vf-module-id'], vfModule);
608 DataService.setSubscriberName(serviceObject['subscriberName']);
609 DataService.setServiceType(serviceObject['serviceType']);
610 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
612 $scope.$broadcast("showComponentDetails", {
613 componentId : COMPONENT.VF_MODULE
617 $scope.describeVnf = function(serviceObject, vnfObject) {
618 var serviceInstance = serviceObject.object;
619 var vnf = vnfObject.object;
621 //Display popup with additional VNF information
622 DataService.setVnfInstanceId(vnf['vnf-id']);
623 DataService.setInventoryItem(vnf);
624 //DataService.setModelInfo(vnf['vnf-id'], vnf);
626 DataService.setSubscriberName(serviceObject['subscriberName']);
627 DataService.setServiceType(serviceObject['serviceType']);
628 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
630 $scope.$broadcast("showComponentDetails", {
631 componentId : COMPONENT.VNF
635 $scope.describeVolumeGroup = function(serviceObject, volumeGroupObject) {
636 var serviceInstance = serviceObject.object;
637 var volumeGroup = volumeGroupObject.object;
639 DataService.setVolumeGroupInstanceId(volumeGroup['volume-group-id']);
640 DataService.setInventoryItem(volumeGroup);
641 DataService.setModelInfo(volumeGroup['volume-group-id'], volumeGroup);
643 DataService.setSubscriberName(serviceObject['subscriberName']);
644 DataService.setServiceType(serviceObject['serviceType']);
645 DataService.setServiceInstanceId(serviceInstance['service-instance-id']);
647 //Display popup with additional Volume Group information
648 //DataService.setVnfInstanceId("Testing");
649 $scope.$broadcast("showComponentDetails", {
650 componentId : COMPONENT.VOLUME_GROUP
654 $scope.addNetworkInstance = function(network) {
655 console.log("Unsupported in 1610: Adding Network instance of type " + network.name + " to service instance" + this.service.instance.name);
658 $scope.addVnfInstance = function(vnf) {
659 //console.log ("addVnfInstance invoked VNF="); console.log (JSON.stringify (vnf,null,4));
661 DataService.setSubscriberName($scope.service.instance.subscriberName);
662 DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);
663 DataService.setServiceType($scope.service.instance.serviceType);
664 DataService.setServiceInstanceName($scope.service.instance.name);
665 DataService.setServiceInstanceId($scope.service.instance.id);
666 DataService.setServiceName($scope.service.model.service.name);
668 DataService.setModelInfo(COMPONENT.VNF, {
670 "modelInvariantId": vnf.invariantUuid,
671 "modelVersion": vnf.version,
672 "modelNameVersionId": vnf.uuid,
673 "modelName": vnf.name,
674 "modelCustomizationName": vnf.modelCustomizationName,
678 DataService.setModelInstanceName($scope.service.model.service.name);
680 DataService.setModelInfo(COMPONENT.SERVICE, {
681 "modelInvariantId": $scope.service.model.service.invariantUuid,
682 "modelVersion": $scope.service.model.service.version,
683 "modelNameVersionId": $scope.service.model.service.uuid,
684 "modelName": $scope.service.model.service.name,
688 $scope.$broadcast("createComponent", {
689 componentId : COMPONENT.VNF,
690 callbackFunction : createVnfCallbackFunction
694 $scope.addVfModuleInstance = function(vnfInstance, vfModuleModel) {
696 DataService.setSubscriberName($scope.service.instance.subscriberName);
697 DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);
698 DataService.setServiceType($scope.service.instance.serviceType);
699 DataService.setServiceInstanceName($scope.service.instance.name);
700 DataService.setServiceInstanceId($scope.service.instance.id);
701 DataService.setServiceName($scope.service.model.service.name);
703 var vnfModelInvariantUuid = vnfInstance.object["persona-model-id"];
704 var vnfModelVersion = vnfInstance.object["persona-model-version"];
705 var vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
707 var availableVolumeGroupList = [];
708 angular.forEach(vnfInstance["availableVolumeGroups"], function(volumeGroupInstance, key) {
709 availableVolumeGroupList.push({"instance": volumeGroupInstance});
712 if (vfModuleModel.volumeGroupAllowed) {
713 DataService.setAvailableVolumeGroupList(availableVolumeGroupList);
716 DataService.setModelInfo(COMPONENT.SERVICE, {
717 "modelInvariantId": $scope.service.model.service.invariantUuid,
718 "modelVersion": $scope.service.model.service.version,
719 "modelNameVersionId": $scope.service.model.service.uuid,
720 "modelName": $scope.service.model.service.name,
724 DataService.setVnfInstanceId(vnfInstance.object["vnf-id"]);
726 DataService.setModelInfo(COMPONENT.VNF, {
727 "modelInvariantId": vnfModel.invariantUuid,
728 "modelVersion": vnfModel.version,
729 "modelNameVersionId": vnfModel.uuid,
730 "modelName": vnfModel.name,
731 "modelCustomizationName": vnfModel.modelCustomizationName,
735 DataService.setModelInfo(COMPONENT.VF_MODULE, {
736 "modelInvariantId": vfModuleModel.invariantUuid,
737 "modelVersion": vfModuleModel.version,
738 "modelNameVersionId": vfModuleModel.uuid,
739 "modelName": vfModuleModel.name,
743 $scope.$broadcast("createComponent", {
744 componentId : COMPONENT.VF_MODULE,
745 callbackFunction : createVfModuleCallbackFunction
750 $scope.addVolumeGroupInstance = function(vnfInstance, volumeGroupModel) {
752 DataService.setSubscriberName($scope.service.instance.subscriberName);
753 DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);
754 DataService.setServiceType($scope.service.instance.serviceType);
755 DataService.setServiceInstanceName($scope.service.instance.name);
756 DataService.setServiceInstanceId($scope.service.instance.id);
757 DataService.setServiceName($scope.service.model.service.name);
759 DataService.setModelInfo(COMPONENT.SERVICE, {
760 "modelInvariantId": $scope.service.model.service.invariantUuid,
761 "modelVersion": $scope.service.model.service.version,
762 "modelNameVersionId": $scope.service.model.service.uuid,
763 "modelName": $scope.service.model.service.name,
767 DataService.setVnfInstanceId(vnfInstance.object["vnf-id"]);
769 var vnfModelInvariantUuid = vnfInstance.object["persona-model-id"];
770 var vnfModelVersion = vnfInstance.object["persona-model-version"];
771 var vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
773 DataService.setModelInfo(COMPONENT.VNF, {
774 "modelInvariantId": vnfModel.invariantUuid,
775 "modelVersion": vnfModel.version,
776 "modelNameVersionId": vnfModel.uuid,
777 "modelName": vnfModel.name,
778 "modelCustomizationName": vnfModel.modelCustomizationName,
782 DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {
783 "modelInvariantId": volumeGroupModel.invariantUuid,
784 "modelVersion": volumeGroupModel.version,
785 "modelNameVersionId": volumeGroupModel.uuid,
786 "modelName": volumeGroupModel.name,
790 $scope.$broadcast("createComponent", {
791 componentId : COMPONENT.VOLUME_GROUP,
792 callbackFunction : createVolumeGroupCallbackFunction
796 $scope.attachVolumeGroupInstance = function(vfModuleInstance, volumeGroupInstance) {
798 var vnfInstance = this.vnf;
799 var vnfModelInvariantUuid = vnfInstance.object["persona-model-id"];
800 var vnfModelVersion = vnfInstance.object["persona-model-version"];
801 var vnfModel = $scope.service.modelByInvariantUuid.vnfs[vnfModelInvariantUuid][vnfModelVersion];
803 var vfModuleModelInvariantUuid = vfModuleInstance.object["persona-model-id"];
804 var vfModuleVersion = vfModuleInstance.object["persona-model-version"];
805 var vfModuleModel = vnfModel.vfModules[vfModuleModelInvariantUuid][vfModuleVersion];
807 var volumeGroupModelInvariantUuid = volumeGroupInstance.object["persona-model-id"];
808 var volumeGroupModelVersion = volumeGroupInstance.object["persona-model-version"];
809 var volumeGroupModel = vnfModel.volumeGroups[volumeGroupModelInvariantUuid][volumeGroupModelVersion];
811 if (vfModuleModel.uuid != volumeGroupModel.uuid) alert("Cannot attach this volume group to this VF module (models do not match)");
813 DataService.setSubscriberName($scope.service.instance.subscriberName);
814 DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);
815 DataService.setServiceName($scope.service.model.name);
816 DataService.setServiceType($scope.service.instance.serviceType);
817 DataService.setServiceInstanceName($scope.service.instance.name);
818 DataService.setServiceInstanceId($scope.service.instance.id);
820 DataService.setModelInfo(COMPONENT.SERVICE, {
821 "modelInvariantId": $scope.service.model.service.invariantUuid,
822 "modelVersion": $scope.service.model.service.version,
823 "modelNameVersionId": $scope.service.model.service.uuid,
824 "modelName": $scope.service.model.service.name,
828 DataService.setVnfInstanceId(vnfInstance.object["vnf-id"]);
830 DataService.setModelInfo(COMPONENT.VNF, {
831 "modelInvariantId": vnfModel.invariantUuid,
832 "modelVersion": vnfModel.version,
833 "modelNameVersionId": vnfModel.uuid,
834 "modelName": vnfModel.name,
835 "modelCustomizationName": vnfModel.modelCustomizationName,
839 DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {
840 "modelInvariantId": volumeGroupModel.invariantUuid,
841 "modelVersion": volumeGroupModel.version,
842 "modelNameVersionId": volumeGroupModel.uuid,
843 "modelName": volumeGroupModel.name,
847 $scope.$broadcast("createComponent", {
848 componentId : COMPONENT.VOLUME_GROUP,
849 callbackFunction : createVolumeGroupCallbackFunction
852 * Code to manipulate the angular ui-tree
853 var volumeGroups = this.vnf.volumeGroups;
854 volumeGroups.splice(volumeGroups.indexOf(volumeGroup), 1);
855 vfModule.volumeGroups.push(volumeGroup);
859 $scope.resetProgress = function() {
860 $scope.percentProgress = 0;
861 $scope.progressClass = "progress-bar progress-bar-info";
864 $scope.setProgress = function(percentProgress) {
865 percentProgress = parseInt(percentProgress);
866 if (percentProgress >= 100) {
867 $scope.progressClass = "progress-bar progress-bar-success";
870 if (percentProgress < $scope.percentProgress) {
874 $scope.percentProgress = percentProgress;
875 $scope.progressWidth = {width: percentProgress + "%"};
876 if (percentProgress >= 5) {
877 $scope.progressText = percentProgress + " %";
879 // Hidden since color combination is barely visible when progress portion is narrow.
880 $scope.progressText = "";
884 $scope.reloadRoute = function() {
888 var createVnfCallbackFunction = function(response) {
889 $scope.callbackResults = "";
891 $scope.callbackStyle = {
892 "background-color" : color
896 * This 1/2 delay was only added to visually highlight the status
897 * change. Probably not needed in the real application code.
899 $timeout(function() {
900 $scope.callbackResults = UtilityService.getCurrentTime()
901 + " isSuccessful: " + response.isSuccessful;
902 if (response.isSuccessful) {
904 $scope.reloadRoute();
908 $scope.callbackStyle = {
909 "background-color" : color
917 var deleteCallbackFunction = function(response) {
918 $scope.callbackResults = "";
920 $scope.callbackStyle = {
921 "background-color" : color
925 * This 1/2 delay was only added to visually highlight the status
926 * change. Probably not needed in the real application code.
928 $timeout(function() {
929 $scope.callbackResults = UtilityService.getCurrentTime()
930 + " isSuccessful: " + response.isSuccessful;
931 if (response.isSuccessful) {
933 $scope.reloadRoute();
937 $scope.callbackStyle = {
938 "background-color" : color
944 var createVfModuleCallbackFunction = function(response) {
945 $scope.callbackResults = "";
947 $scope.callbackStyle = {
948 "background-color" : color
952 * This 1/2 delay was only added to visually highlight the status
953 * change. Probably not needed in the real application code.
955 $timeout(function() {
956 $scope.callbackResults = UtilityService.getCurrentTime()
957 + " isSuccessful: " + response.isSuccessful;
958 if (response.isSuccessful) {
960 $scope.reloadRoute();
964 $scope.callbackStyle = {
965 "background-color" : color
971 var deleteServiceInstanceCallbackFunction = function(response) {
972 $scope.callbackResults = "";
974 $scope.callbackStyle = {
975 "background-color" : color
979 * This 1/2 delay was only added to visually highlight the status
980 * change. Probably not needed in the real application code.
982 $timeout(function() {
983 $scope.callbackResults = UtilityService.getCurrentTime()
984 + " isSuccessful: " + response.isSuccessful;
985 if (response.isSuccessful) {
987 $location.path("/instances/services")
991 $scope.callbackStyle = {
992 "background-color" : color
998 var createVolumeGroupCallbackFunction = function(response) {
999 $scope.callbackResults = "";
1001 $scope.callbackStyle = {
1002 "background-color" : color
1006 * This 1/2 delay was only added to visually highlight the status
1007 * change. Probably not needed in the real application code.
1009 $timeout(function() {
1010 $scope.callbackResults = UtilityService.getCurrentTime()
1011 + " isSuccessful: " + response.isSuccessful;
1012 if (response.isSuccessful) {
1014 $scope.reloadRoute();
1018 $scope.callbackStyle = {
1019 "background-color" : color