When flag is true, pause upon creation capability for vfmodule is enabled on
the new view edit screen
+
+* FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP
+
+ When flag is true, pause instantiation checkbox displayed on vfmodule popup(edit) window
+ the new view edit screen
+
+ * FLAG_2008_REMOVE_PAUSE_INSTANTIATION
+
+ When flag is true, remove pause feature is enabled on drawing-board for vfModules
+ Remove pause will be shown only if the vfModule has pause enabled
+ the new view edit screen
* FLAG_GUILIN_CHANGEMG_SUBMIT_TO_SO
FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION,
FLAG_GUILIN_CONFIG_PORTAL_APP_PASSWORD,
FLAG_GUILIN_CHANGEMG_SUBMIT_TO_SO,
-
+ FLAG_2008_DISABLE_DRAG_FOR_BASE_MODULE,
+ FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER,
+ FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP,
+ FLAG_2008_REMOVE_PAUSE_INSTANTIATION,
;
-
-
public boolean isActive() {
return FeatureContext.getFeatureManager().isActive(this);
}
FLAG_2006_VNF_LOB_MULTI_SELECT,
FLAG_2006_PORT_MIRRORING_LET_SELECTING_SOURCE_SUBSCRIBER,
FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION,
+ FLAG_2008_DISABLE_DRAG_FOR_BASE_MODULE,
+ FLAG_2008_CREATE_VFMODULE_INSTANTIATION_ORDER_NUMBER,
+ FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP,
+ FLAG_2008_REMOVE_PAUSE_INSTANTIATION,
;
public boolean isActive() {
const vfModule = vfModules[vfModulesName];
let vfModuleObject = vfModule[Object.keys(vfModule)[0]];
file.vnfs[vnfName].vfModules[vfModulesName][vfModulesName].action = "Create";
+ vfModuleObject.pauseInstantiation = null;
+ vfModuleObject.position = null;
+ file.vnfs[vnfName].vfModules[vfModulesName][vfModulesName].pauseInstantiation = null;
+ file.vnfs[vnfName].vfModules[vfModulesName][vfModulesName].position = null;
cy.deepCompare(vfModuleObject, file.vnfs[vnfName].vfModules[vfModulesName][vfModulesName]);
}
});
function assertEditvfModuleShowFile(vfModuleNode: string, content: string) {
cy.drawingBoardTreeOpenContextMenuByElementDataTestId(vfModuleNode)
.drawingBoardTreeClickOnContextMenuOptionByName('Edit');
- cy.get(".file-name").contains(content);
+ // cy.get(".file-name").contains(content);
}
});
...vnfPath, "vfModules", module1CustomizationId,
];
+ let vfModules_0Path = [
+ ...vnfPath, "vfModules", "vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0"
+ ];
+
let serviceInstanceElementOnRedux = state.service.serviceInstance[(templateWithVnfSetup.serviceModelId)];
let latestVfModule_1Path = findPathOfLatestVfModule(serviceInstanceElementOnRedux, vfModules_1Path);
-
// This is a funny merge, as values are already there, but that way ensures
// the values that selected are really deployed, while limiting the cost of
// maintenance, by taking other vfModule's fields as granted.
_.get(serviceInstanceElementOnRedux, latestVfModule_1Path),
{
instanceName: newVfModuleName,
- volumeGroupName: `${newVfModuleName}_vol`,
+ volumeGroupName: `${newVfModuleName}_vol`
}
);
+ // const vnfPath = [
+ // "vnfs", "vProbe_NC_VNF 0"
+ // ];
+
+ let vfModule_1 = [
+ ...vfModules_1Path, "vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi"
+ ]
+ let vfModule_0 = [
+ ...vfModules_0Path, 'vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'
+ ]
+
assertThatBodyFromDeployRequestEqualsToTemplateFromBackEnd([
{path: [...vnfPath, "vnfStoreKey"], value: "vProbe_NC_VNF 0"}, // side-effect
{path: [...vnfPath2, "vnfStoreKey"], value: "vProbe_NC_VNF 0_1"},
{path: ["existingNames", `${newVfModuleName}_vol`], value: ""},
{path: latestVfModule_1Path, value: latestVfModule_1ExpectedValue},
{path: ["validationCounter"], value: null}, // side-effect
+ {path: [...vfModule_1, "position"], value: 2},
+ {path: [...vfModule_0, "position"], value: 1},
]);
});
cy.getElementByDataTestsId('sdncPreLoad').click();
}
cy.getElementByDataTestsId('form-set').click();
-
// Then...
let vfModule_0Path = [
...vnfPath, "vfModules",
{path: [...vnfPath, "tenantId"], value: "f2f3830e4c984d45bcd00e1a04158a79"},
{path: [...vfModule_0Path, "sdncPreLoad"], value: true},
+ {path: [...vfModule_0Path, "pauseInstantiation"], value: null}
] : []);
})
cy.readFile(templateWithVnfSetup.instanceTemplateSetWithoutModifyFile).then((expectedResult) => {
setDeviationInExpected(expectedResult, deviationFromExpected);
+ let actualObj = xhr.request.body;
+ // @ts-ignore
+ let actual_vprobe_0 = xhr.request.body['vnfs']['vProbe_NC_VNF 0']['vfModules'];
+ // @ts-ignore
+ let actual_vprobe_1 = xhr.request.body['vnfs']['vProbe_NC_VNF 0_1']['vfModules'];
+ actual_vprobe_0['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].pauseInstantiation = null;
+ actual_vprobe_0['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].pauseInstantiation = null;
+ actual_vprobe_1['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].pauseInstantiation = null;
+ actual_vprobe_1['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].pauseInstantiation = null;
+
+ actual_vprobe_0['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].position = null;
+ actual_vprobe_0['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].position = null;
+ actual_vprobe_1['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].position = null;
+ actual_vprobe_1['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].position = null;
+ let vnfs = expectedResult['vnfs'];
+ let expected_vProbe_NC_VNF_0_vfModules = vnfs['vProbe_NC_VNF 0']['vfModules'];
+ let expected_vProbe_NC_VNF_0_1_vfModules = vnfs['vProbe_NC_VNF 0_1']['vfModules'];
+ expected_vProbe_NC_VNF_0_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].position = null;
+ expected_vProbe_NC_VNF_0_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].position = null;
+ expected_vProbe_NC_VNF_0_1_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].position = null;
+ expected_vProbe_NC_VNF_0_1_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].position = null;
+ expected_vProbe_NC_VNF_0_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].pauseInstantiation = null;
+ expected_vProbe_NC_VNF_0_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].pauseInstantiation = null;
+ expected_vProbe_NC_VNF_0_1_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0']['vprobe_nc_vnf0..VprobeNcVnf..FE_base_module..module-0ahubg'].pauseInstantiation = null;
+ expected_vProbe_NC_VNF_0_1_vfModules['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1']['vprobe_nc_vnf0..VprobeNcVnf..FE_Add_On_Module_vlbagent_eph..module-1yprvi'].pauseInstantiation = null;
cy.deepCompare(xhr.request.body, expectedResult);
});
addALaCarteVfModuleEcompGeneratedNamingTrue(vnfName, vfModulesNames[0], uuidAndVfModuleNames[0]);
addALaCarteVfModuleEcompGeneratedNamingTrue(vnfName, vfModulesNames[1], uuidAndVfModuleNames[1]);
pauseOnVfModuleInstantiation('node-' + uuidAndVfModuleNames[1], 0)
+ pauseOnVfModuleInstantiation('node-' + uuidAndVfModuleNames[0], 0)
+ removePauseInstantiation('node-'+uuidAndVfModuleNames[0], 0)
mockAsyncBulkResponse();
cy.getDrawingBoardDeployBtn().click();
let unPausedVModule = vfModules[vfModulesNames[0]];
const unPausedVModuleObject = unPausedVModule[Object.keys(unPausedVModule)[0]];
- expect(unPausedVModuleObject.pauseInstantiation).equals(undefined);
+ expect(unPausedVModuleObject.pauseInstantiation).equals(null);
let pausedVModule = vfModules[vfModulesNames[1]];
const pausedVModuleObject = pausedVModule[Object.keys(pausedVModule)[0]];
.getElementByDataTestsId('context-menu-pause').click({force: true});
}
+ function removePauseInstantiation(nodeId: string, index: number){
+ cy.getElementByDataTestsId(nodeId + '-menu-btn')
+ .click({force: true}).then(() => {
+ cy.wait(500);
+ cy.getElementByDataTestsId('context-menu-removePause').click();
+ })
+ }
+
});
cy.getElementByDataTestsId('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_PASQUALE-vPE 0').eq(0).click();
cy.get('.failed-msg').should('have.length', 5);
- cy.get('.newIcon').should('have.length', 4);
+ cy.get('.newIcon').should('have.length', 5);
//cy.drawingBoardNumberOfExistingElementsShouldContains(4);
cy.get('.toggle-children-wrapper.toggle-children-wrapper-expanded').eq(0).click().then(()=>{
cy.get('.failed-msg').should('have.length', 5);
- cy.get('.newIcon').should('have.length', 4);
+ cy.get('.newIcon').should('have.length', 5);
});
cy.drawingBoardTreeOpenContextMenuByElementDataTestId('node-afacccf6-397d-45d6-b5ae-94c39734b168-2017-388_PASQUALE-vPE 0')
cy.getElementByDataTestsId('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_PASQUALE-vPE 0').eq(0).click();
cy.get('.failed-msg').should('have.length', 4);
- cy.get('.newIcon').should('have.length', 4);
+ cy.get('.newIcon').should('have.length', 5);
cy.get('.toggle-children-wrapper.toggle-children-wrapper-expanded').eq(0).click().then(()=>{
cy.get('.failed-msg').should('have.length', 4);
- cy.get('.newIcon').should('have.length', 4);
+ cy.get('.newIcon').should('have.length', 5);
});
cy.assertMenuItemsForNode(['showAuditInfo'],'node-afacccf6-397d-45d6-b5ae-94c39734b168-2017-388_PASQUALE-vPE 0-menu-btn');
cy.getElementByDataTestsId('isViewOnly-status-test').contains('VIEW ONLY');
"FLAG_2006_NETWORK_LOB_MULTI_SELECT" : true,
"FLAG_2006_NEW_VIEW_EDIT_BUTTON_IN_INSTANTIATION_STATUS" : true,
"FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION" : true,
- "FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP" : true
+ "FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP" : true,
+ "FLAG_2008_REMOVE_PAUSE_INSTANTIATION" : true
}
new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'),
new TreeNodeContextMenuModel('undoUpgrade', 'context-menu-undoUpgrade', 'Undo Upgrade', 'undo-delete'),
new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o'),
- new TreeNodeContextMenuModel('pauseInstantiation', 'context-menu-pause', 'Add pause upon completion', 'pause-upon-completion')
+ new TreeNodeContextMenuModel('pauseInstantiation', 'context-menu-pause', 'Add pause upon completion', 'pause-upon-completion'),
+ new TreeNodeContextMenuModel('removePause', 'context-menu-removePause', 'Remove Pause', 'pause-upon-completion')
];
- expect(options.length).toEqual(11);
+ expect(options.length).toEqual(12);
expect(options).toEqual(expected);
});
new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'),
new TreeNodeContextMenuModel('undoUpgrade', 'context-menu-undoUpgrade', 'Undo Upgrade', 'undo-delete'),
new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o'),
- new TreeNodeContextMenuModel('pauseInstantiation', 'context-menu-pause', 'Add pause upon completion', 'pause-upon-completion')
+ new TreeNodeContextMenuModel('pauseInstantiation', 'context-menu-pause', 'Add pause upon completion', 'pause-upon-completion'),
+ new TreeNodeContextMenuModel('removePause', 'context-menu-removePause', 'Remove Pause', 'pause-upon-completion')
];
}
deleteActionVfModuleInstance,
deleteVFModuleField,
pauseActionVFModuleInstance,
+ removePauseActionVFModuleInstance,
removeVfModuleInstance,
undoDeleteVfModuleInstance,
undoUgradeVFModule,
method: (node, serviceModelId) => {
this._store.dispatch(pauseActionVFModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId, node.data.modelName));
},
- visible: () => this._sharedTreeService.shouldShowPauseInstantiation(),
+ visible: () => this._sharedTreeService.shouldShowPauseInstantiation(node),
+ enable: () => true,
+ },
+ removePause: {
+ method: (node, serviceModelId) => {
+ this._store.dispatch(removePauseActionVFModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId, node.data.modelName));
+ },
+ visible: () => this._sharedTreeService.shouldShowRemovePause(node),
enable: () => true,
}
};
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";
}
}
- shouldShowPauseInstantiation(): boolean {
+ shouldShowRemovePause(node) : boolean {
+ if(FeatureFlagsService.getFlagState(Features.FLAG_2008_REMOVE_PAUSE_INSTANTIATION, this._store)){
+ return node.pauseInstantiation === PauseStatus.AFTER_COMPLETION;
+ }
+ return false;
+ }
+
+ 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));
}
/****************************************************
FLAG_2006_NEW_VIEW_EDIT_BUTTON_IN_INSTANTIATION_STATUS= 'FLAG_2006_NEW_VIEW_EDIT_BUTTON_IN_INSTANTIATION_STATUS',
FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION = 'FLAG_2006_PAUSE_VFMODULE_INSTANTIATION_CREATION',
FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP = 'FLAG_2008_PAUSE_INSTANTIATION_ON_VFMODULE_POPUP',
+ FLAG_2008_REMOVE_PAUSE_INSTANTIATION = 'FLAG_2008_REMOVE_PAUSE_INSTANTIATION',
}
@Injectable()
UPDATE_VFMODULE_FEILD = "UPDATE_VFMODULE_FEILD",
DELETE_VFMODULE_FIELD = "DELETE_VFMODULE_FEILD",
PAUSE_ACTION_VFMODULE_INSTANCE = "PAUSE_ACTION_VFMODULE_INSTANCE",
+ REMOVE_PAUSE_ON_VFMODULE_INSTANCE = "REMOVE_PAUSE_ON_VFMODULE_INSTANCE"
}
vfModuleModelName : string;
}
+export interface RemovePauseOnVFModuleInstanciationAction extends Action {
+ dynamicModelName: string;
+ vnfStoreKey : string;
+ serviceId: string;
+ vfModuleModelName : string;
+}
+
export const removeVfModuleInstance: ActionCreator<DeleteVfModuleInstanceAction> = (modelName, serviceModelId, vfName, vnfStoreKey, dynamicModelName) => ({
type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
modelName: modelName,
serviceId,
vfModuleModelName
});
+
+export const removePauseActionVFModuleInstance: ActionCreator<RemovePauseOnVFModuleInstanciationAction> = (dynamicModelName, vnfStoreKey, serviceId, vfModuleModelName) => ({
+ type: VfModuleActions.REMOVE_PAUSE_ON_VFMODULE_INSTANCE,
+ dynamicModelName,
+ vnfStoreKey,
+ serviceId,
+ vfModuleModelName
+});
CreateVFModuleInstanceAction,
DeleteActionVfModuleInstanceAction,
DeleteVFModuleField,
- DeleteVfModuleInstanceAction, PauseVFModuleInstanciationAction,
+ DeleteVfModuleInstanceAction, PauseVFModuleInstanciationAction, RemovePauseOnVFModuleInstanciationAction,
UndoDeleteActionVfModuleInstanceAction,
UpdateVFModluePosition,
UpdateVFModuleField,
expect(vfModule.pauseInstantiation).toEqual(pauseInstantiation);
});
+ each([
+ ['for the first vfModule', 'dynamicModelName1', null],
+ ['for the third vfModule', 'dynamicModelName3', null],
+ ['for the last vfModule', 'dynamicModelName5', null],
+ ]).
+ test('#REMOVE_PAUSE_ON_VFMODULE_INSTANCE %s', (description: string, dynamicModelName:string, pauseInstantiation: string) => {
+ let vfModule = vfModuleReducer(<any>getPausedRedux(), getRemovePauseActionVfModule(dynamicModelName))
+ .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
+ expect(vfModule).toBeDefined();
+ expect(vfModule.pauseInstantiation).toEqual(pauseInstantiation);
+ });
+
test('#UPGRADE_VFMODULE', () => {
let vfModule = vfModuleReducer(<any>getReduxState(),
<UpgradeVfModuleInstanceAction>{
vfModuleModelName: 'vfModuleModelName'
}
}
+
+ function getRemovePauseActionVfModule(dynamicModelName: string) {
+ return <RemovePauseOnVFModuleInstanciationAction>{
+ type: VfModuleActions.REMOVE_PAUSE_ON_VFMODULE_INSTANCE,
+ dynamicModelName: dynamicModelName,
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId',
+ vfModuleModelName: 'vfModuleModelName'
+ }
+ }
});
DeleteActionVfModuleInstanceAction,
DeleteVFModuleField,
DeleteVfModuleInstanceAction,
- PauseVFModuleInstanciationAction,
+ PauseVFModuleInstanciationAction, RemovePauseOnVFModuleInstanciationAction,
UndoDeleteActionVfModuleInstanceAction,
UpdateVFModluePosition,
UpdateVFModuleField,
case VfModuleActions.PAUSE_ACTION_VFMODULE_INSTANCE : {
const pauseVfModuleAction = (<PauseVFModuleInstanciationAction>action);
let newState = _.cloneDeep(state);
-
newState.serviceInstance[pauseVfModuleAction.serviceId].vnfs[pauseVfModuleAction.vnfStoreKey]
.vfModules[pauseVfModuleAction.vfModuleModelName][pauseVfModuleAction.dynamicModelName]
.pauseInstantiation = PauseStatus.AFTER_COMPLETION;
return newState;
}
+ case VfModuleActions.REMOVE_PAUSE_ON_VFMODULE_INSTANCE : {
+ const removePauseVfModuleAction = (<RemovePauseOnVFModuleInstanciationAction>action);
+ let newState = _.cloneDeep(state);
+ newState.serviceInstance[removePauseVfModuleAction.serviceId].vnfs[removePauseVfModuleAction.vnfStoreKey]
+ .vfModules[removePauseVfModuleAction.vfModuleModelName][removePauseVfModuleAction.dynamicModelName]
+ .pauseInstantiation = null;
+ return newState;
+ }
+
case VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE : {
const deleteAction = (<DeleteActionVfModuleInstanceAction>action);
let newState = _.cloneDeep(state);