aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/storeUtil/utils/service
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/shared/storeUtil/utils/service')
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/service/service.actions.ts19
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.spec.ts59
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts153
3 files changed, 169 insertions, 62 deletions
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.actions.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.actions.ts
index e4e7e494e..069ef82e8 100644
--- a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.actions.ts
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.actions.ts
@@ -10,7 +10,9 @@ export enum ServiceActions {
ADD_SERVICE_ACTION = 'ADD_SERVICE_ACTION',
DELETE_ACTION_SERVICE_INSTANCE = "DELETE_ACTION_SERVICE_INSTANCE",
UNDO_DELETE_ACTION_SERVICE_INSTANCE = "UNDO_DELETE_ACTION_SERVICE_INSTANCE",
- CHANGE_SERVICE_IS_DIRTY = "CHANGE_SERVICE_IS_DIRTY"
+ CHANGE_SERVICE_IS_DIRTY = "CHANGE_SERVICE_IS_DIRTY",
+ UPGRADE_SERVICE_ACTION = "UPGRADE_SERVICE_ACTION",
+ UNDO_UPGRADE_SERVICE_ACTION = "UNDO_UPGRADE_SERVICE_ACTION"
}
export interface CreateServiceInstanceAction extends Action {
@@ -40,6 +42,13 @@ export interface AddServiceAction extends Action{
action: ServiceInstanceActions;
}
+export interface UpgradeServiceAction extends Action{
+ serviceUuid: string;
+}
+
+export interface UndoUpgradeServiceAction extends Action{
+ serviceUuid: string;
+}
export interface DeleteActionServiceInstanceAction extends Action {
serviceId?: string;
@@ -99,4 +108,12 @@ export const changeServiceIsDirty: ActionCreator<ChangeServiceDirty> = (nodes, s
serviceId : serviceId
});
+export const upgradeService: ActionCreator<UpgradeServiceAction> = (serviceUuid : string) => ({
+ type: ServiceActions.UPGRADE_SERVICE_ACTION,
+ serviceUuid
+});
+export const undoUpgradeService: ActionCreator<UndoUpgradeServiceAction> = (serviceUuid : string) => ({
+ type: ServiceActions.UNDO_UPGRADE_SERVICE_ACTION,
+ serviceUuid
+});
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.spec.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.spec.ts
index cff944563..ba8b3826e 100644
--- a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.spec.ts
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.spec.ts
@@ -6,7 +6,7 @@ import {
DeleteServiceInstanceAction,
ServiceActions,
UpdateServiceInstanceAction,
- UpdateServiceModelAction
+ UpdateServiceModelAction, UpgradeServiceAction
} from "./service.actions";
import {serviceReducer} from "./service.reducers";
import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
@@ -513,7 +513,62 @@ describe('serviceReducer', () => {
expect(state.serviceInstance['serviceId'].isDirty).toBeTruthy();
});
-});
+ test('#UPGRADE_SERVICE should update service action to _Upgrade', () => {
+ const state = serviceReducer(<any>{
+ serviceInstance: {
+ 'serviceId': {
+ action: ServiceInstanceActions.None,
+ upgradedVFMSonsCounter: 0,
+ 'vnfs': {
+ 'vnf1': {
+ action: ServiceInstanceActions.None
+ },
+ 'vnf2': {
+ action: ServiceInstanceActions.Create
+ }
+ }
+
+ }
+ }
+ },
+ <UpgradeServiceAction> {
+ type: ServiceActions.UPGRADE_SERVICE_ACTION,
+ serviceUuid: 'serviceId'
+ });
+
+ expect(state.serviceInstance['serviceId'].isUpgraded).toBeTruthy();
+ expect(state.serviceInstance['serviceId'].action).toEqual(ServiceInstanceActions.None_Upgrade);
+ expect(state.serviceInstance['serviceId'].upgradedVFMSonsCounter).toEqual(1);
+ });
+ test('#UNDO_UPGRADE_SERVICE should cancel the upgrade action back to None', () => {
+ const state = serviceReducer(<any>{
+ serviceInstance: {
+ 'serviceId': {
+ isUpgraded: true,
+ upgradedVFMSonsCounter: 1,
+ action: ServiceInstanceActions.None_Upgrade,
+ 'vnfs': {
+ 'vnf1': {
+ action: ServiceInstanceActions.None_Upgrade
+ },
+ 'vnf2': {
+ action: ServiceInstanceActions.Create
+ }
+ }
+ }
+ }
+ },
+ <UpgradeServiceAction> {
+ type: ServiceActions.UNDO_UPGRADE_SERVICE_ACTION,
+ serviceUuid: 'serviceId'
+ });
+
+ expect(state.serviceInstance['serviceId'].isUpgraded).toBeFalsy();
+ expect(state.serviceInstance['serviceId'].action).toEqual(ServiceInstanceActions.None);
+ expect(state.serviceInstance['serviceId'].upgradedVFMSonsCounter).toEqual(0);
+ });
+
+});
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts
index c6d3da52a..811238385 100644
--- a/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/service/service.reducers.ts
@@ -4,8 +4,10 @@ import {
ChangeServiceDirty,
CreateServiceInstanceAction,
ServiceActions,
+ UndoUpgradeServiceAction,
UpdateServiceInstanceAction,
- UpdateServiceModelAction
+ UpdateServiceModelAction,
+ UpgradeServiceAction
} from "./service.actions";
import {ServiceInstance} from "../../../models/serviceInstance";
import {ServiceState} from "../main.reducer";
@@ -13,84 +15,99 @@ import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
import * as _ from "lodash";
export function serviceReducer(state: ServiceState, action: Action) : ServiceState{
- switch (action.type) {
- case ServiceActions.UPDATE_SERVICE_INSTANCE : {
- let newState = _.cloneDeep(state);
- const updateServiceInstanceAction = <UpdateServiceInstanceAction>action;
- const uuid = updateServiceInstanceAction.serviceUuid;
- const serviceInstance = updateServiceInstanceAction.serviceInstance;
+ switch (action.type) {
+ case ServiceActions.UPDATE_SERVICE_INSTANCE : {
+ let newState = _.cloneDeep(state);
+ const updateServiceInstanceAction = <UpdateServiceInstanceAction>action;
+ const uuid = updateServiceInstanceAction.serviceUuid;
+ const serviceInstance = updateServiceInstanceAction.serviceInstance;
- updateUniqueNames(serviceInstance.instanceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]);
+ updateUniqueNames(serviceInstance.instanceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]);
- newState.serviceInstance[uuid] = _.merge(newState.serviceInstance[uuid], serviceInstance);
- return newState;
- }
- case ServiceActions.CREATE_SERVICE_INSTANCE : {
- const updateServiceInstanceAction = <CreateServiceInstanceAction>action;
- const uuid = updateServiceInstanceAction.serviceUuid;
- let newState = _.cloneDeep(state);
+ newState.serviceInstance[uuid] = _.merge(newState.serviceInstance[uuid], serviceInstance);
+ return newState;
+ }
+ case ServiceActions.CREATE_SERVICE_INSTANCE : {
+ const updateServiceInstanceAction = <CreateServiceInstanceAction>action;
+ const uuid = updateServiceInstanceAction.serviceUuid;
+ let newState = _.cloneDeep(state);
- const serviceInstance: ServiceInstance = new ServiceInstance();
- const currentInstaceName = state.serviceInstance[uuid] ? serviceInstance.instanceName : null;
+ const serviceInstance: ServiceInstance = new ServiceInstance();
+ const currentInstaceName = state.serviceInstance[uuid] ? serviceInstance.instanceName : null;
- newState.serviceInstance[uuid] = Object.assign(serviceInstance, updateServiceInstanceAction.serviceInstance);
- newState.serviceInstance[uuid].vidNotions = _.get(state,`serviceHierarchy[${uuid}].service.vidNotions`);
- if (!_.isNil(updateServiceInstanceAction.serviceInstance)) {
- updateUniqueNames(currentInstaceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]);
- }
- return newState;
- }
- case ServiceActions.DELETE_ALL_SERVICE_INSTANCES: {
- if (state.serviceInstance) {
- let newState = _.cloneDeep(state);
- newState.serviceInstance = {};
- return Object.assign({}, state, newState);
- }
- return Object.assign({}, state);
+ newState.serviceInstance[uuid] = Object.assign(serviceInstance, updateServiceInstanceAction.serviceInstance);
+ newState.serviceInstance[uuid].vidNotions = _.get(state,`serviceHierarchy[${uuid}].service.vidNotions`);
+ if (!_.isNil(updateServiceInstanceAction.serviceInstance)) {
+ updateUniqueNames(currentInstaceName, updateServiceInstanceAction.serviceInstance.instanceName, newState.serviceInstance[uuid]);
}
- case ServiceActions.UPDATE_MODEL: {
- let uuid = (<UpdateServiceModelAction>action).serviceHierarchy.service.uuid;
- state.serviceHierarchy[uuid] = _.cloneDeep((<UpdateServiceModelAction>action).serviceHierarchy);
- return Object.assign({}, state);
+ return newState;
+ }
+ case ServiceActions.DELETE_ALL_SERVICE_INSTANCES: {
+ if (state.serviceInstance) {
+ let newState = _.cloneDeep(state);
+ newState.serviceInstance = {};
+ return Object.assign({}, state, newState);
}
- case ServiceActions.ADD_SERVICE_ACTION: {
- const uuid: string = (<AddServiceAction>action).serviceUuid;
- const actionToAdd: ServiceInstanceActions = (<AddServiceAction>action).action;
- state.serviceInstance[uuid].action = actionToAdd;
- return Object.assign({}, state);
+ return Object.assign({}, state);
+ }
+ case ServiceActions.UPDATE_MODEL: {
+ let uuid = (<UpdateServiceModelAction>action).serviceHierarchy.service.uuid;
+ state.serviceHierarchy[uuid] = _.cloneDeep((<UpdateServiceModelAction>action).serviceHierarchy);
+ return Object.assign({}, state);
+ }
+ case ServiceActions.ADD_SERVICE_ACTION: {
+ const uuid: string = (<AddServiceAction>action).serviceUuid;
+ const actionToAdd: ServiceInstanceActions = (<AddServiceAction>action).action;
+ state.serviceInstance[uuid].action = actionToAdd;
+ return Object.assign({}, state);
+ }
+ case ServiceActions.CHANGE_SERVICE_IS_DIRTY : {
+ let newState = _.cloneDeep(state);
+ let serviceInstanceAction: ServiceInstanceActions = newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].action;
+
+ if(serviceInstanceAction !== ServiceInstanceActions.None){
+ newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = true;
+ return newState;
}
- case ServiceActions.CHANGE_SERVICE_IS_DIRTY : {
- let newState = _.cloneDeep(state);
- let serviceInstanceAction: ServiceInstanceActions = newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].action;
- if(serviceInstanceAction !== ServiceInstanceActions.None){
+ const nodes = (<ChangeServiceDirty>action).nodes;
+ for(let node of nodes){
+ const dirty = isDirty(node);
+ if(dirty) {
newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = true;
return newState;
}
+ }
+ newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = false;
+ return newState;
+ }
+ case ServiceActions.UPGRADE_SERVICE_ACTION: {
+ let clonedState = _.cloneDeep(state);
+ let oldServiceAction: string = ServiceInstanceActions.None;
+ const castingAction = <UpgradeServiceAction>action;
+ const uuid: string = castingAction.serviceUuid;
+ return upgradeServiceInstance(clonedState, uuid, oldServiceAction);
+ }
- const nodes = (<ChangeServiceDirty>action).nodes;
- for(let node of nodes){
- const dirty = isDirty(node);
- if(dirty) {
- newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = true;
- return newState;
- }
- }
-
- newState.serviceInstance[(<ChangeServiceDirty>action).serviceId].isDirty = false;
- return newState;
+ case ServiceActions.UNDO_UPGRADE_SERVICE_ACTION: {
+ let clonedState = _.cloneDeep(state);
+ const castingAction = <UndoUpgradeServiceAction>action;
+ const uuid: string = castingAction.serviceUuid;
+ if(!_.isNil(clonedState.serviceInstance[uuid].action) && clonedState.serviceInstance[uuid].action.includes("Upgrade")) {
+ return undoUpgradeServiceInstance(clonedState, uuid);
}
}
+ }
}
const isDirty = (node) : boolean => {
if(node.action !== ServiceInstanceActions.None) return true;
if(!_.isNil(node.children) && node.children.length > 0){
- for(let child of node.children){
- const dirty: boolean = isDirty(child);
- if(dirty) return true;
- }
+ for(let child of node.children){
+ const dirty: boolean = isDirty(child);
+ if(dirty) return true;
+ }
}
return false;
};
@@ -105,5 +122,23 @@ const updateUniqueNames = (oldName : string, newName : string, serviceInstance :
}
};
+function upgradeServiceInstance(clonedState, uuid: string, oldServiceAction: string) {
+ if(!clonedState.serviceInstance[uuid].action.includes("Upgrade")){
+ clonedState.serviceInstance[uuid].action = (`${oldServiceAction}_Upgrade`) as ServiceInstanceActions;
+ }
+ clonedState.serviceInstance[uuid].isUpgraded = true;
+ clonedState.serviceInstance[uuid].upgradedVFMSonsCounter++;
+ return clonedState;
+}
+
+function undoUpgradeServiceInstance(clonedState, uuid: string) {
+ clonedState.serviceInstance[uuid].upgradedVFMSonsCounter--;
+ if(clonedState.serviceInstance[uuid].upgradedVFMSonsCounter == 0){
+ clonedState.serviceInstance[uuid].action = ServiceInstanceActions.None;
+ clonedState.serviceInstance[uuid].isUpgraded = false;
+ }
+ return clonedState;
+}
+