2 ============LICENSE_START=======================================================
\r
4 ================================================================================
\r
5 Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 ================================================================================
\r
7 Licensed under the Apache License, Version 2.0 (the "License");
\r
8 you may not use this file except in compliance with the License.
\r
9 You may obtain a copy of the License at
\r
11 http://www.apache.org/licenses/LICENSE-2.0
\r
13 Unless required by applicable law or agreed to in writing, software
\r
14 distributed under the License is distributed on an "AS IS" BASIS,
\r
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 See the License for the specific language governing permissions and
\r
17 limitations under the License.
\r
18 ============LICENSE_END=========================================================
\r
23 <div popup-window class="popupContents" ngx-show="{{popup.isVisible}}"
\r
25 <div ng-include="'app/vid/scripts/view-models/creationDialog.htm'"></div>
\r
26 <div ng-include="'app/vid/scripts/view-models/deleteResumeDialog.htm'"></div>
\r
27 <div ng-include="'app/vid/scripts/view-models/detailsDialog.htm'"></div>
\r
28 <div ng-include="'app/vid/scripts/view-models/statusDialog.htm'"></div>
\r
29 <div ng-include="'app/vid/scripts/view-models/iframeDialog.htm'"></div>
\r
31 <div ng-controller="aaiSubscriberController" ng-init="getComponentList() ">
\r
32 <div class="statusLine" ng-class="{true:'aaiVisible', false:'aaiHidden'}[isSpinnerVisible]">
\r
33 <img src="app/vid/images/spinner.gif"></img>
\r
34 <label>Status:</label><span class="status">{{status}}</span>
\r
37 <div ng-if="errorMsg != null" style="white-space: pre-line"><font color='red'>{{errorMsg}}
\r
38 <pre>{{errorDetails | json}}</pre>
\r
41 <h1 class="heading1" style="margin-top: 20px;">{{isPermitted ? "View/Edit" : "View"}} Service Instance</h1>
\r
42 <a class="btn btn-primary btn-xs pull-right" ng-click="reloadRoute();"><span
\r
43 class="glyphicon glyphicon-refresh"></span></a>
\r
48 <table att-table border="1" ng-model="service">
\r
50 <th style="text-align: center" width="33%">SUBSCRIBER:
\r
51 {{service.instance.subscriberName}}
\r
53 <th style="text-align: center" width="34%">SERVICE TYPE:
\r
54 {{service.instance.serviceType}}
\r
56 <th data-tests-id="service-instanceId-th-id" style="text-align: center" width="33%">SERVICE INSTANCE
\r
57 ID: {{service.instance.serviceInstanceId}}
\r
61 <td colspan='3' style="text-align: center">Service Instance
\r
62 Name: {{service.instance.name || "Not defined"}}
\r
69 <div ui-tree data-drag-enabled="false" data-nodrop-enabled="true" style="margin: 30px">
\r
71 <ol ui-tree-nodes="" ng-model="service">
\r
72 <li ng-repeat="aService in [service]" ui-tree-node>
\r
74 <div ng-if="isCR && collectionResource != null">
\r
75 <div ui-tree-handle class="tree-node tree-node-content">
\r
76 <a class="btn btn-success btn-xs" data-nodrag ng-click="this.toggle()">
\r
77 <span class="glyphicon"
\r
78 ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
\r
80 SERVICE INSTANCE: {{aService.instance.name}} | ORCH STATUS: {{serviceOrchestrationStatus}}
\r
81 <a ng-if="isPermitted" data-tests-id="deleteServiceButton"
\r
82 class="pull-right btn btn-danger btn-xs" data-nodrag
\r
83 ng-click="deleteService(aService.instance);">
\r
84 <span class="glyphicon glyphicon-remove"></span>
\r
87 <a class="pull-right btn btn-primary btn-xs" data-tests-id="infoServiceButton" data-nodrag
\r
88 ng-click="describeService(aService.instance)" style="margin-right: 8px;">
\r
89 <span class="glyphicon glyphicon-info-sign service-info"></span>
\r
92 <ol ui-tree-nodes="" ng-model="collections" ng-class="{hidden: collapsed}">
\r
93 <li ng-repeat="collection in collections" ui-tree-node>
\r
94 <div ui-tree-handle class="tree-node tree-node-content" data-tests-id="collectionDiv">
\r
95 <a class="btn btn-success btn-xs" data-nodrag ng-click="this.toggle()">
\r
96 <span class="glyphicon"
\r
97 ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
\r
99 COLLECTION: {{collection["collection-name"]}} | TYPE:
\r
100 {{collection["collection-type"]}}
\r
102 <ol ui-tree-nodes="" ng-model="networks" ng-class="{hidden: collapsed}">
\r
103 <li ng-repeat="network in networks" ui-tree-node>
\r
104 <div ui-tree-handle class="tree-node tree-node-content"
\r
105 data-tests-id="collectionNetworkDiv">
\r
106 NETWORK INSTANCE GROUP: {{network["network-id"]}} | ROLE:
\r
107 {{network["network-role"]}} | TYPE: {{network["network-type"]}} | # OF
\r
108 NETWORKS: {{collectionResource.networks.length}}
\r
115 <div ng-if="!isCR">
\r
116 <div ui-tree-handle class="tree-node tree-node-content">
\r
117 <a class="btn btn-success btn-xs"
\r
118 ng-if="(aService.instance.vnfs && aService.instance.vnfs.length > 0) ||(aService.instance.pnfs && aService.instance.pnfs.length > 0) || (aService.instance.networks && aService.instance.networks.length > 0)"
\r
119 data-nodrag ng-click="this.toggle()">
\r
120 <span class="glyphicon"
\r
121 ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
\r
123 SERVICE INSTANCE: {{aService.instance.name}} | ORCH STATUS: {{serviceOrchestrationStatus}}
\r
124 <a ng-if="((isMacro()) || (isObjectEmpty(aService.instance.vnfs) && isObjectEmpty(aService.instance.networks) && isObjectEmpty(aService.instance.pnfs))) && isPermitted"
\r
125 data-tests-id="deleteServiceButton" class="pull-right btn btn-danger btn-xs" data-nodrag
\r
126 ng-click="deleteService(aService.instance, serviceOrchestrationStatus);">
\r
127 <span class="glyphicon glyphicon-remove"></span>
\r
129 <div class="pull-right btn-group"
\r
130 ng-if="(aService.convertedModel.vnfs||aService.convertedModel.vnfs) &&(!isObjectEmpty(aService.convertedModel.pnfs)||!isObjectEmpty(aService.convertedModel.pnfs)) && !aService.convertedModel.isNewFlow && isPermitted">
\r
131 <button type="button" data-tests-id="addVNFButton"
\r
132 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
133 aria-haspopup="true" aria-expanded="false">
\r
134 Add node instance<span class="caret"></span>
\r
136 <ul class="dropdown-menu" ng-model="aService.convertedModel.vnfs">
\r
137 <a role="menuitem" ng-repeat="(vnfUuid, vnf) in aService.convertedModel.vnfs"
\r
138 data-tests-id="addVNFOption-{{vnf.modelCustomizationName}}"
\r
139 ng-click="addVnfInstance(vnf, aService.instance.vnfs)">{{vnf.modelCustomizationName}}</a>
\r
143 <div class="pull-right btn-group"
\r
144 ng-if="aService.convertedModel.vnfs && !isObjectEmpty(aService.convertedModel.vnfs) && aService.convertedModel.isNewFlow && isPermitted">
\r
145 <button type="button" data-tests-id="addVNFButton"
\r
146 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
147 aria-haspopup="true" aria-expanded="false">
\r
148 Add node instance<span class="caret"></span>
\r
150 <ul class="dropdown-menu" ng-model="aService.convertedModel.vnfs"
\r
151 data-tests-id="addVnfsDropdown">
\r
152 <li role="menuitem" ng-repeat="(vnfUuid, vnf) in aService.convertedModel.vnfs">
\r
153 <a data-tests-id="addVNFOption-{{vnf.modelCustomizationName}}"
\r
154 ng-click="addVnfInstance(vnf, aService.instance.vnfs)">{{vnf.modelCustomizationName}}
\r
155 {{vnf.nfType}} {{vnf.nfRole}} {{vnf.nfFunction}} {{vnf.nfCode}}</a>
\r
159 <!-- <div class="pull-right btn-group" ng-if="aService.model.networks && !equals(aService.model.networks, {})">-->
\r
160 <div class="pull-right btn-group"
\r
161 ng-if="aService.convertedModel.networks && (!(isObjectEmpty(aService.convertedModel.networks))) && isPermitted">
\r
162 <!--<div class="pull-right btn-group" ng-if="aService.model.networks">-->
\r
163 <button type="button" data-tests-id="addNetworkButton"
\r
164 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
165 aria-haspopup="true" aria-expanded="false">
\r
166 Add Network<span class="caret"></span>
\r
168 <ul class="dropdown-menu" ng-model="aService.convertedModel.networks">
\r
169 <li ng-repeat="(networkUuid, network) in aService.convertedModel.networks">
\r
170 <a data-tests-id="addNetworkOption-{{network.modelCustomizationName}}"
\r
171 ng-click="addNetworkInstance(network, aService.instance.vnfs)">{{network.modelCustomizationName}}</a>
\r
175 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
176 ng-click="describeService(aService.instance)" style="margin-right: 8px;">
\r
177 <span class="glyphicon glyphicon-info-sign service-info"></span>
\r
179 <a data-tests-id="deactivateButton" ng-disabled="!isActivateDeactivateEnabled('deactivate')"
\r
180 class="pull-right btn btn-primary btn-xs" data-nodrag ng-click="deactivateMSOInstance()"
\r
181 style="margin-right: 8px;">
\r
184 <a data-tests-id="activateButton" ng-disabled="!isActivateDeactivateEnabled('activate')"
\r
185 class="pull-right btn btn-primary btn-xs" data-nodrag ng-click="activateMSOInstance()"
\r
186 style="margin-right: 8px;">
\r
189 <a data-tests-id="showAssignmentsButton" ng-disabled="!isShowAssignmentsEnabled()"
\r
190 class="pull-right btn btn-primary btn-xs" data-nodrag style="margin-right: 8px;"
\r
191 target="_blank" ng-href="{{showAssignmentsSDNC()}}">
\r
194 <a data-tests-id="verifyServiceButton" ng-if="isShowVerifyService()" ng-disabled="!isEnableVerifyService()"
\r
195 class="pull-right btn btn-primary btn-xs" data-nodrag style="margin-right: 8px;"
\r
196 target="_blank" ng-click="activateVerifyService()">
\r
200 <ol ui-tree-nodes="" ng-model="aService.instance.vnfs" ng-class="{hidden: collapsed}">
\r
201 <li ng-repeat="vnf in aService.instance.vnfs" ui-tree-node>
\r
202 <div ui-tree-handle class="tree-node tree-node-content">
\r
203 <a class="btn btn-success btn-xs"
\r
204 ng-if="(vnf.vfModules && vnf.vfModules.length > 0) || (vnf.volumeGroups && vnf.volumeGroups.length > 0)"
\r
205 data-nodrag ng-click="this.toggle()">
\r
206 <span class="glyphicon"
\r
207 ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
\r
209 VNF: {{vnf.name}} | TYPE: {{vnf.nodeType}} | ORCH STATUS: {{vnf.nodeStatus}}
\r
211 <a ng-if="(vnf.vfModules.length == 0) && (vnf.volumeGroups.length == 0) && isPermitted"
\r
212 data-tests-id="deleteVNFButton" class="pull-right btn btn-danger btn-xs"
\r
213 data-nodrag ng-click="deleteVnf(aService.instance, vnf)">
\r
214 <span class="glyphicon glyphicon-remove"></span>
\r
216 <!-- <div class="pull-right btn-group" ng-if="aService.convertedModel.vnfs[vnf.object['model-invariant-id']][vnf.object['model-version-id']].vfModules">-->
\r
217 <div class="pull-right btn-group"
\r
218 ng-if="(hasVfModules(vnf.object) && (aService.convertedModel.isNewFlow)) && isPermitted">
\r
220 <button type="button" data-tests-id="addVFModuleButton"
\r
221 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
222 aria-haspopup="true" aria-expanded="false">
\r
223 Add VF-Module<span class="caret"></span>
\r
225 <ul class="dropdown-menu" ng-model="vfModule">
\r
226 <a ng-repeat="(vfModuleCustomizationUuid, vfModule) in aService.convertedModel.vnfs[vnf.object['model-customization-id']].vfModules"
\r
227 data-tests-id="addVFModuleOption-{{vfModule.modelCustomizationName}}"
\r
228 ng-click="addVfModuleInstance(vnf, vfModule)">{{vfModule.modelCustomizationName}} </a>
\r
233 <div class="pull-right btn-group"
\r
234 ng-if="(hasVfModules(vnf.object) && (!(aService.convertedModel.isNewFlow))) && isPermitted">
\r
236 <button type="button" data-tests-id="addVFModuleButton"
\r
237 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
238 aria-haspopup="true" aria-expanded="false">
\r
239 Add VF-Module<span class="caret"></span>
\r
241 <ul class="dropdown-menu" ng-model="vnf">
\r
242 <a ng-repeat="(vfModuleUuid, vfModule) in aService.convertedModel.vnfs[vnf.object['model-version-id']].vfModules"
\r
243 data-tests-id="addVFModuleOption-{{vfModule.modelCustomizationName}}"
\r
244 ng-click="addVfModuleInstance(vnf, vfModule)">{{vfModule.modelCustomizationName}}</a>
\r
250 <div class="pull-right btn-group"
\r
251 ng-if="(hasVolumeGroups(vnf.object) && (aService.convertedModel.isNewFlow)) && isPermitted">
\r
252 <button type="button" data-tests-id="addVolumeGroupButton"
\r
253 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
254 aria-haspopup="true" aria-expanded="false">
\r
255 Add Volume Group<span class="caret"></span>
\r
257 <ul class="dropdown-menu" ng-model="volumeGroup">
\r
258 <a ng-repeat="(volumeGroupCustomizationUuid, volumeGroup) in aService.convertedModel.vnfs[vnf.object['model-customization-id']].volumeGroups"
\r
259 data-tests-id="addVolumeGroupOption-{{volumeGroup.modelCustomizationName}}"
\r
260 ng-click="addVolumeGroupInstance(vnf, volumeGroup)">{{volumeGroup.modelCustomizationName}}</a>
\r
264 <div class="pull-right btn-group"
\r
265 ng-if="(hasVolumeGroups(vnf.object) && (!(aService.convertedModel.isNewFlow))) && isPermitted">
\r
267 <button type="button" data-tests-id="addVolumeGroupButton"
\r
268 class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown"
\r
269 aria-haspopup="true" aria-expanded="false">
\r
270 Add Volume Group<span class="caret"></span>
\r
272 <ul class="dropdown-menu" ng-model="vnf">
\r
273 <a ng-repeat="(volumeGroupUuid, volumeGroup) in aService.convertedModel.vnfs[vnf.object['model-version-id']].volumeGroups"
\r
274 data-tests-id="addVolumeGroupOption-{{volumeGroup.modelCustomizationName}}"
\r
275 ng-click="addVolumeGroupInstance(vnf, volumeGroup)">{{volumeGroup.modelCustomizationName}}</a>
\r
281 <!-- VID-374/378 - switching-off feature <a class="pull-right btn btn-primary btn-xs" data-nodrag ng-click="getStatusOfVnf(aService.instance, vnf)" style="margin-right: 8px;">
\r
282 <span class="glyphicon glyphicon-exclamation-sign"></span>
\r
284 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
285 ng-click="describeVnf(aService.instance, vnf)" style="margin-right: 8px;">
\r
286 <span class="glyphicon glyphicon-info-sign vnf-info"></span>
\r
289 <ol ui-tree-nodes="" ng-model="vnf.instanceGroups" ng-class="{hidden: collapsed}">
\r
290 <li ng-repeat="instanceGroup in vnf.instanceGroups" ui-tree-node>
\r
291 <div ui-tree-handle class="tree-node tree-node-content"
\r
292 ng-class="'instanceGroupTreeNode'">
\r
293 INSTANCE-GROUP: {{instanceGroup.name}} | TYPE: Instance-Group
\r
299 <ol ui-tree-nodes="" ng-model="vnf.vfModules" ng-class="{hidden: collapsed}">
\r
300 <li ng-repeat="vfModule in vnf.vfModules" ui-tree-node>
\r
301 <div ui-tree-handle class="tree-node tree-node-content"
\r
302 ng-class="'vfModuleTreeNode-' + vfModule.nodeStatus.toLowerCase()">
\r
303 <a class="btn btn-success btn-xs"
\r
304 ng-if="(vfModule.volumeGroups && vfModule.volumeGroups.length > 0)"
\r
305 data-nodrag ng-click="this.toggle()">
\r
306 <span class="glyphicon"
\r
307 ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
\r
309 VFMODULE: {{vfModule.name}} | TYPE: {{vfModule.nodeType}} | ORCH STATUS:
\r
310 {{vfModule.nodeStatus}}
\r
312 <a class="pull-right btn btn-danger btn-xs" ng-if="isPermitted"
\r
313 data-tests-id="deleteVFModuleButton-{{vfModule.name}}" data-nodrag
\r
314 ng-click="deleteVfModule(aService.instance, vfModule, vnf)">
\r
315 <span class="glyphicon glyphicon-remove"></span>
\r
317 <div class="pull-right btn-group">
\r
318 <!-- <button type="button" class="btn btn-success btn-xs dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
\r
319 Attach Volume Group<span class="caret"></span>
\r
321 <ul class="dropdown-menu" ng-model="vnf.volumeGroups">
\r
322 <li ng-repeat="volumeGroup in vnf.availableVolumeGroups">
\r
323 <a ng-click="attachVolumeGroupInstance(vfModule, volumeGroup)">{{volumeGroup.name}}</a>
\r
327 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
328 ng-click="describeVfModule(aService.instance, vfModule, vnf)"
\r
329 style="margin-right: 8px;">
\r
330 <span class="glyphicon glyphicon-info-sign vfmodule-info"></span>
\r
332 <div class="resume"
\r
333 ng-if="isPermitted && isResumeShown(vfModule.nodeStatus)">
\r
334 <a data-tests-id="resumeVFModuleButton-{{vfModule.name}}"
\r
335 class="pull-right btn btn-success btn-xs button-margin"
\r
336 ng-click="resume(aService.instance, vfModule, vnf)">
\r
342 <ol ui-tree-nodes="" ng-model="vfModule.volumeGroups"
\r
343 ng-class="{hidden: collapsed}">
\r
344 <li ng-repeat="volumeGroup in vfModule.volumeGroups" ui-tree-node>
\r
345 <div ui-tree-handle class="tree-node tree-node-content">
\r
346 VOLUME GROUP: {{volumeGroup.name}} | TYPE: {{volumeGroup.nodeType}}
\r
347 | ORCH STATUS: {{volumeGroup.nodeStatus}}
\r
348 <!-- <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="deleteVolumeGroup(aService.instance, vnf, vfModule, volumeGroup)">
\r
349 <span class="glyphicon glyphicon-remove"></span>
\r
351 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
352 ng-click="describeVolumeGroup(aService.instance, vnf, volumeGroup)"
\r
353 style="margin-right: 8px;">
\r
354 <span class="glyphicon glyphicon-info-sign"></span>
\r
361 <ol ui-tree-nodes="" ng-model="vnf.availableVolumeGroups"
\r
362 ng-class="{hidden: collapsed}">
\r
363 <li ng-repeat="volumeGroup in vnf.availableVolumeGroups" ui-tree-node>
\r
364 <div ui-tree-handle class="tree-node tree-node-content">
\r
365 VOLUME GROUP: {{volumeGroup.name}} | TYPE: {{volumeGroup.nodeType}} | ORCH
\r
366 STATUS: {{volumeGroup.nodeStatus}}
\r
367 <a class="pull-right btn btn-danger btn-xs" ng-if="isPermitted"
\r
368 data-tests-id="deleteVNFVolumeGroupButton" data-nodrag
\r
369 ng-click="deleteVnfVolumeGroup(aService.instance, vnf, volumeGroup)">
\r
370 <span class="glyphicon glyphicon-remove"></span>
\r
372 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
373 ng-click="describeVolumeGroup(aService.instance, vnf, volumeGroup)"
\r
374 style="margin-right: 8px;">
\r
375 <span class="glyphicon glyphicon-info-sign volume-group-info"></span>
\r
383 <ol ui-tree-nodes="" ng-model="aService.instance.networks" ng-class="{hidden: collapsed}">
\r
384 <li ng-repeat="network in aService.instance.networks" ui-tree-node>
\r
385 <div ui-tree-handle class="tree-node tree-node-content">
\r
386 NETWORK: {{network.name}} | TYPE: {{network.nodeType}} | ORCH STATUS:
\r
387 {{network.nodeStatus}}
\r
389 <a class="pull-right btn btn-danger btn-xs" ng-if="!isMacro() && isPermitted"
\r
390 data-tests-id="deleteNetworkButton" data-nodrag
\r
391 ng-click="deleteNetwork(aService.instance, network)">
\r
392 <span class="glyphicon glyphicon-remove"></span>
\r
394 <!-- <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="deleteNetwork(aService.instance, network)">
\r
395 <span class="glyphicon glyphicon-remove"></span>
\r
397 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
398 ng-click="describeNetwork(aService.instance, network)"
\r
399 style="margin-right: 8px;">
\r
400 <span class="glyphicon glyphicon-info-sign network-info"></span>
\r
406 <ol ui-tree-nodes="" ng-model="aService.instance.configurations" ng-class="{hidden: collapsed}">
\r
407 <li ng-repeat="configuration in aService.instance.configurations" ui-tree-node>
\r
408 <div ui-tree-handle class="tree-node tree-node-content">
\r
409 <a class="btn btn-success btn-xs"
\r
410 ng-if="(configuration.ports && configuration.ports.length > 0)" data-nodrag
\r
411 ng-click="this.toggle()">
\r
412 <span class="glyphicon"
\r
413 ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
\r
415 CONFIGURATION: {{configuration.name}} | TYPE: {{configuration.nodeType}} | ORCH
\r
416 STATUS: {{configuration.nodeStatus}}
\r
418 <a class="pull-right btn btn-danger btn-xs"
\r
419 ng-if="!isMacro() && isPermitted && configuration.nodeStatus !== STATUS_CONSTANTS.AAI_ACTIVE"
\r
420 ng-disabled="!isConfigurationDataAvailiable(configuration)"
\r
421 data-tests-id="deleteConfigurationButton"
\r
423 ng-click="deleteConfiguration(aService, configuration)">
\r
424 <span class="glyphicon glyphicon-remove"></span>
\r
428 <a class="pull-right btn btn-primary btn-xs" data-nodrag
\r
429 ng-click="toggleConfigurationStatus(aService, configuration)"
\r
430 ng-if="isPermitted && allowConfigurationActions"
\r
431 ng-disabled="!isConfigurationDataAvailiable(configuration)"
\r
432 data-tests-id="activateDeactivateButton">
\r
433 {{configuration.nodeStatus === STATUS_CONSTANTS.AAI_ACTIVE ? "Deactivate" :
\r
437 <ol ui-tree-nodes="" ng-model="configuration.ports" ng-class="{hidden: collapsed}">
\r
438 <li ng-repeat="port in configuration.ports" ui-tree-node>
\r
439 <div ui-tree-handle class="tree-node tree-node-content">
\r
440 PORT: {{port.portName}} | ORCH STATUS: {{port.portStatus}}
\r
442 <button type="button" data-tests-id="enableDisableButton"
\r
443 class="pull-right btn btn-primary btn-xs"
\r
444 ng-if="configuration.nodeStatus == STATUS_CONSTANTS.AAI_ACTIVE"
\r
445 ng-disabled="!isConfigurationDataAvailiable(configuration)"
\r
446 ng-click="togglePortStatus(aService, configuration, port)">
\r
447 {{port.portStatus === STATUS_CONSTANTS.AAI_ENABLED ? "Disable" :
\r
456 <ol id="pnfs-tree" ui-tree-nodes="" ng-model="pnfs"
\r
457 ng-class="{hidden: collapsed || pnf.length === 0}">
\r
458 <li ng-repeat="pnf in pnfs" ui-tree-node>
\r
459 <div ui-tree-handle class="tree-node tree-node-content">
\r
462 <a class="dissociate-pnf pull-right btn btn-primary btn-xs" data-nodrag
\r
463 ng-click="dissociatePnf(pnf)" style="margin-right: 8px;">
\r
464 <span>Dissociate</span>
\r