Prevent upgrade for base vf module with add on
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / shared.tree.service.ts
index 1e85127..8470317 100644 (file)
@@ -1,7 +1,7 @@
 import {Injectable} from "@angular/core";
 import {NgRedux} from "@angular-redux/store";
 import {AppState} from "../../../shared/store/reducers";
-import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
+import {PauseStatus, ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
 import {MessageBoxData} from "../../../shared/components/messageBox/messageBox.data";
 import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service";
 import * as _ from "lodash";
@@ -28,19 +28,21 @@ export class SharedTreeService {
    * @param dynamicInputs - from the instance
    * @param isEcompGeneratedNaming
    ************************************************************/
-  selectedVNF: string = null;
+  selectedNF: string = null;
 
-
-  getSelectedVNF(): string {
-    return this.selectedVNF;
+  getSelectedNF(): string {
+    return this.selectedNF;
   }
 
-  setSelectedVNF(node): void {
+  setSelectedNF(node): void {
     if (_.isNil(node) || node.data.type !== 'VF') {
-      this.selectedVNF = null;
-    } else {
-      this.selectedVNF = node.data.vnfStoreKey;
+      this.selectedNF = null;
+    } else if (node.data.type === 'VF'){
+      this.selectedNF = node.data.vnfStoreKey;
+    } else if (node.data.type === 'PNF'){
+      this.selectedNF = node.data.pnfStoreKey;
     }
+
   }
 
   /**
@@ -120,14 +122,24 @@ export class SharedTreeService {
 
   addingStatusProperty(node) {
     node['statusProperties'] = [];
-    node['statusProperties'].push({key: 'Prov Status:', value: node.provStatus, testId: 'provStatus'});
-    node['statusProperties'].push({key: 'Orch Status:', value: node.orchStatus, testId: 'orchStatus'});
+    node['statusProperties'].push({key: 'Prov Status: ', value: node.provStatus, testId: 'provStatus'});
+    node['statusProperties'].push({key: 'Orch Status: ', value: node.orchStatus, testId: 'orchStatus'});
+    if(node.type === 'VFmodule') {
+      node['statusProperties'].push({key: 'Model Version: ', value: this.getNodeModelVersion(node), testId: 'modelVersion'});
+    }
     if (node.inMaint) {
       node['statusProperties'].push({key: 'In-maintenance', value: '', testId: 'inMaint'});
     }
     return node;
   }
 
+   getNodeModelVersion(node): string | undefined {
+    if(!_.isNil(node.instanceModelInfo) && !_.isNil(node.instanceModelInfo.modelVersion)){
+      return node.instanceModelInfo.modelVersion;
+    }
+    return undefined;
+  }
+
   /**********************************************
    * should delete or remove child instance's
    "new" -> should remove
@@ -212,6 +224,26 @@ export class SharedTreeService {
     }
   }
 
+  shouldShowRemovePause(node) : boolean {
+    if(FeatureFlagsService.getFlagState(Features.FLAG_2008_REMOVE_PAUSE_INSTANTIATION, this._store)){
+      return node.pauseInstantiation === PauseStatus.AFTER_COMPLETION;
+    }
+    return false;
+  }
+  
+  showPauseWithOrchStatus(node): boolean {
+    if(node.orchStatus == "Active"){
+      return false;
+    }
+    return true;
+  }
+
+  shouldShowPauseInstantiation(node): boolean {
+    if(FeatureFlagsService.getFlagState(Features.FLAG_2008_REMOVE_PAUSE_INSTANTIATION, this._store)){
+      return (FeatureFlagsService.getFlagState(Features.FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION, this._store) && node.pauseInstantiation == null);
+    }
+    return (FeatureFlagsService.getFlagState(Features.FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION, this._store));
+  }
   /****************************************************
    * should return true if customer can upgrade a VFM *
    ****************************************************/
@@ -222,7 +254,10 @@ export class SharedTreeService {
 
   isVfMoudleCouldBeUpgraded(node, serviceModelId): boolean{
     return (FeatureFlagsService.getFlagState(Features.FLAG_FLASH_REPLACE_VF_MODULE, this._store) &&
-      (this.isThereAnUpdatedLatestVersion(serviceModelId) || this.isVfModuleCustomizationIdNotExistsOnModel(node, serviceModelId)))
+    (this.isThereAnUpdatedLatestVersion(serviceModelId) || this.isVfModuleCustomizationIdNotExistsOnModel(node, serviceModelId)) && 
+    (this.upgradeAllowedForBm(node,serviceModelId))) 
+
+    
   }
 
   isVfModuleCustomizationIdNotExistsOnModel(vfModuleNode, serviceModelId) {
@@ -528,4 +563,38 @@ export class SharedTreeService {
       !_.isNil(model.max) ? String(model.max) : Constants.ModelInfo.UNLIMITED_DEFAULT
     );
   }
+
+  isAddPositionFlagTrue():boolean{
+    return FeatureFlagsService.getFlagState(Features.FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER, this._store);
+  }
+
+  upgradeAllowedForBm(node, serviceModelId):boolean {
+
+    if(FeatureFlagsService.getFlagState(Features.FLAG_2012_UPGRADE_BASE_MODULE_FLAG, this._store)){
+      let returnValue = false;
+      if(node.data.type == 'VFmodule') {
+        let serviceHierarchy = this._store.getState().service.serviceHierarchy[serviceModelId];
+        let vnf = node.parent.data.modelName;
+        let baseModuleFlag= (serviceHierarchy.vnfs[vnf].vfModules[node.data.modelName].properties.baseModule) ? true: false;
+
+        if(baseModuleFlag) {
+          if(node.parent.children.length >1) {
+            return returnValue;
+          }
+          else {
+            returnValue = true;
+          }
+        }else {
+          returnValue = true;
+        }
+
+      } else {
+        returnValue= true
+      }
+      
+      return returnValue;
+    } else {
+      return true;
+    }
+  }
 }