1 import {ServiceState} from "../main.reducer";
2 import {Action} from "redux";
3 import * as _ from "lodash";
5 AssociateVRFMemberInstanceAction,
6 ClearAssociateVRFMemberInstanceAction,
7 CreateVRFInstanceAction, DeleteActionVrfInstanceAction, UndoDeleteActionVrfInstanceAction,
9 } from "./vrf.actions";
10 import {calculateNextUniqueModelName} from "../vnf/vnf.reducers";
11 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
13 export function vrfReducer(state: ServiceState, action: Action): ServiceState {
14 switch (action.type) {
15 case VrfActions.CREATE_VRF_INSTANCE: {
16 const createVRFInstanceAction = <CreateVRFInstanceAction>action;
17 const serviceUuid = createVRFInstanceAction.serviceModelId;
19 let newState = _.cloneDeep(state);
21 const vrfModelName = calculateNextUniqueModelName(createVRFInstanceAction.vrfModel['name'], serviceUuid, newState, 'vrfs');
22 newState.serviceInstance[serviceUuid].vrfs[vrfModelName] = <any>{
23 ...createVRFInstanceAction.vrfModel
27 case VrfActions.VRF_ASSOCIATE_MEMBER: {
28 const associateVRFMemberInstanceAction = <AssociateVRFMemberInstanceAction>action;
29 const serviceUuid = associateVRFMemberInstanceAction.serviceModelId;
30 const member = associateVRFMemberInstanceAction.member;
31 const vrfStoreKey = associateVRFMemberInstanceAction.vrfStoreKey;
32 const memberType = associateVRFMemberInstanceAction.memberType;
34 let newState = _.cloneDeep(state);
36 if(_.isNil(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType])){
37 newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType] = {};
40 const numberOfKeys = Object.keys(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType]).length;
41 newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType][`${vrfStoreKey} ${memberType} ${numberOfKeys+1}`] = member;
45 case VrfActions.VRF_ASSOCIATE_MEMBER: {
46 const associateVRFMemberInstanceAction = <AssociateVRFMemberInstanceAction>action;
47 const serviceUuid = associateVRFMemberInstanceAction.serviceModelId;
48 const member = associateVRFMemberInstanceAction.member;
49 const vrfStoreKey = associateVRFMemberInstanceAction.vrfStoreKey;
50 const memberType = associateVRFMemberInstanceAction.memberType;
52 let newState = _.cloneDeep(state);
54 if(_.isNil(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType])){
55 newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType] = {};
58 const numberOfKeys = Object.keys(newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType]).length;
59 newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType][`${vrfStoreKey} ${memberType} ${numberOfKeys+1}`] = member;
63 case VrfActions.CLAER_ASSOCIATE__VRF_MEMBERS: {
64 const clearAssociateVRFMemberInstanceAction = <ClearAssociateVRFMemberInstanceAction>action;
65 const serviceUuid = clearAssociateVRFMemberInstanceAction.serviceModelId;
66 const vrfStoreKey = clearAssociateVRFMemberInstanceAction.vrfStoreKey;
67 const memberType = clearAssociateVRFMemberInstanceAction.memberType;
69 let newState = _.cloneDeep(state);
70 newState.serviceInstance[serviceUuid].vrfs[vrfStoreKey][memberType] = {};
73 case VrfActions.DELETE_ACTION_VRF_INSTANCE : {
74 let newState = _.cloneDeep(state);
75 let vrf = newState.serviceInstance[(<DeleteActionVrfInstanceAction>action).serviceId].vrfs[(<DeleteActionVrfInstanceAction>action).vrfStoreKey];
76 let oldAction = vrf.action;
77 if(oldAction === ServiceInstanceActions.None_Delete || oldAction === ServiceInstanceActions.Update_Delete) return newState;
78 newState.serviceInstance[(<DeleteActionVrfInstanceAction>action).serviceId].vrfs[(<DeleteActionVrfInstanceAction>action).vrfStoreKey].action = (oldAction + '_Delete') as ServiceInstanceActions;
82 case VrfActions.UNDO_DELETE_ACTION_VRF_INSTANCE : {
83 let newState = _.cloneDeep(state);
84 let vnf = newState.serviceInstance[(<UndoDeleteActionVrfInstanceAction>action).serviceId].vrfs[(<UndoDeleteActionVrfInstanceAction>action).vrfStoreKey];
85 let oldState = vnf.action;
86 newState.serviceInstance[(<UndoDeleteActionVrfInstanceAction>action).serviceId].vrfs[(<UndoDeleteActionVrfInstanceAction>action).vrfStoreKey].action = (oldState.split('_')[0]) as ServiceInstanceActions;