aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/storeUtil/utils/network
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/shared/storeUtil/utils/network')
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/network/network.actions.ts94
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.spec.ts114
-rw-r--r--vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.ts102
3 files changed, 310 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.actions.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.actions.ts
new file mode 100644
index 000000000..c90d8eb3d
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.actions.ts
@@ -0,0 +1,94 @@
+import {Action, ActionCreator} from "redux";
+import {NetworkInstance} from "../../../models/networkInstance";
+
+export enum NetworkActions {
+ UPDATE_NETWORK_INSTANCE = "UPDATE_NETWORK_INSTANCE",
+ UPDATE_NETWORK_FUNCTION = 'UPDATE_NETWORK_FUNCTION',
+ CREATE_NETWORK_INSTANCE = 'CREATE_NETWORK_INSTANCE',
+ DELETE_ACTION_NETWORK_INSTANCE = "DELETE_ACTION_NETWORK_INSTANCE",
+ UNDO_DELETE_ACTION_NETWORK_INSTANCE = "UNDO_DELETE_ACTION_NETWORK_INSTANCE",
+ UPDATE_NETWORK_POSITION = "UPDATE_NETWORK_POSITION"
+
+}
+
+
+export interface UpdateNetworkPosition extends Action {
+ node: any,
+ instanceId : string,
+ networkStoreKey?: string;
+}
+
+export interface UpdateNetworkInstanceAction extends Action {
+ networkInstance?: NetworkInstance;
+ networkModelName?: string;
+ serviceUuid?: string;
+ networkStoreKey?:string;
+}
+
+export interface UpdateNetworkCollectionFunction extends Action {
+ networksAccordingToNetworkCollection: any;
+ network_function: any;
+}
+
+export interface CreateNetworkInstanceAction extends Action {
+ networkInstance?: NetworkInstance;
+ networkModelName?: string;
+ serviceUuid?: string;
+ networkStoreKey?:string;
+}
+
+export interface DeleteActionNetworkInstanceAction extends Action {
+ networkStoreKey: string;
+ serviceId?: string;
+}
+
+export interface UndoDeleteActionNetworkInstanceAction extends Action {
+ networkStoreKey: string;
+ serviceId?: string;
+}
+
+export const updateNetworkInstance: ActionCreator<UpdateNetworkInstanceAction> = (networkInstance, networkfModelName, serviceUuid, networkStoreKey) => ({
+ type: NetworkActions.UPDATE_NETWORK_INSTANCE,
+ networkInstance: networkInstance,
+ networkModelName: networkfModelName,
+ serviceUuid: serviceUuid,
+ networkStoreKey : networkStoreKey
+});
+
+
+export const updateNetworkCollectionFunction: ActionCreator<UpdateNetworkCollectionFunction> = (ncf, networksAccordingToNetworkCollection) => ({
+ type: NetworkActions.UPDATE_NETWORK_FUNCTION,
+ networksAccordingToNetworkCollection: networksAccordingToNetworkCollection["results"],
+ network_function: ncf
+});
+
+export const createNetworkInstance: ActionCreator<CreateNetworkInstanceAction> = (networkInstance, networkModelName, serviceUuid, networkStoreKey) => ({
+ type: NetworkActions.CREATE_NETWORK_INSTANCE,
+ networkInstance: networkInstance,
+ networkModelName: networkModelName,
+ serviceUuid: serviceUuid,
+ networkStoreKey : networkStoreKey
+});
+
+
+export const deleteActionNetworkInstance: ActionCreator<DeleteActionNetworkInstanceAction> = (networkStoreKey, serviceId) => ({
+ type: NetworkActions.DELETE_ACTION_NETWORK_INSTANCE,
+ networkStoreKey: networkStoreKey,
+ serviceId: serviceId
+});
+
+export const undoDeleteActionNetworkInstance: ActionCreator<UndoDeleteActionNetworkInstanceAction> = (networkStoreKey, serviceId) => ({
+ type: NetworkActions.UNDO_DELETE_ACTION_NETWORK_INSTANCE,
+ networkStoreKey: networkStoreKey,
+ serviceId: serviceId
+});
+
+
+export const updateNetworkPosition: ActionCreator<UpdateNetworkPosition> = (node, instanceId, networkStoreKey) => ({
+ type: NetworkActions.UPDATE_NETWORK_POSITION,
+ node: node,
+ instanceId: instanceId,
+ networkStoreKey : networkStoreKey
+});
+
+
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.spec.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.spec.ts
new file mode 100644
index 000000000..ba41ad6e6
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.spec.ts
@@ -0,0 +1,114 @@
+import {networkReducer} from "./network.reducers";
+import {
+ CreateNetworkInstanceAction, DeleteActionNetworkInstanceAction,
+ NetworkActions, UndoDeleteActionNetworkInstanceAction,
+ UpdateNetworkCollectionFunction,
+ UpdateNetworkInstanceAction
+} from "./network.actions";
+import {NetworkInstance} from "../../../models/networkInstance";
+import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
+
+
+describe('networkReducer', () => {
+ test('#CREATE_SERVICE_INSTANCE', () => {
+ let networkInstance: NetworkInstance = new NetworkInstance();
+ networkInstance.isMissingData = false;
+ networkInstance.instanceName = 'instanceName';
+ let networkState = networkReducer(<any>{serviceInstance : {
+ 'serviceModelId' : {
+ networks : {
+ 'networkStoreKey' : {
+ isMissingData : true
+ }
+ }
+ }
+ }},
+ <UpdateNetworkInstanceAction>{
+ type: NetworkActions.UPDATE_NETWORK_INSTANCE,
+ networkInstance : new NetworkInstance(),
+ networkStoreKey : 'networkStoreKey',
+ networkModelName : 'networkModelName',
+ serviceUuid : 'serviceModelId'
+ }).serviceInstance['serviceModelId'].networks['networkStoreKey'];
+
+ expect(networkState).toBeDefined();
+ expect(networkState.isMissingData).toBeFalsy();
+ });
+
+ test('#CREATE_NETWORK_INSTANCE', () => {
+ let networkInstance: NetworkInstance = new NetworkInstance();
+ networkInstance.isMissingData = false;
+ networkInstance.instanceName = 'instanceName';
+ let networkState = networkReducer(<any>{serviceInstance : {
+ 'serviceModelId' : {
+ networks : {}
+ }
+ }},
+ <CreateNetworkInstanceAction>{
+ type: NetworkActions.CREATE_NETWORK_INSTANCE,
+ networkInstance : new NetworkInstance(),
+ networkStoreKey : null,
+ networkModelName : 'networkModelName',
+ serviceUuid : 'serviceModelId'
+ }).serviceInstance['serviceModelId'].networks['networkModelName'];
+
+ expect(networkState).toBeDefined();
+ expect(networkState.isMissingData).toBeFalsy();
+ });
+
+ test('#UPDATE_NETWORK_FUNCTION', () => {
+ let state = networkReducer(<any>{serviceInstance : {}},
+ <UpdateNetworkCollectionFunction>{
+ type: NetworkActions.UPDATE_NETWORK_FUNCTION,
+ networksAccordingToNetworkCollection: 'networksAccordingToNetworkCollection',
+ network_function: 'network_function'
+ });
+
+ expect(state).toBeDefined();
+ });
+
+ test('#DELETE_ACTION_NETWORK_INSTANCE', () => {
+ let networkState = networkReducer(<any>{serviceInstance : {
+ 'serviceModelId' : {
+ networks : {
+ 'networkStoreKey' : {
+ isMissingData : true,
+ action : 'None'
+ }
+ }
+ }
+ }},
+ <DeleteActionNetworkInstanceAction>{
+ type: NetworkActions.DELETE_ACTION_NETWORK_INSTANCE,
+ networkStoreKey: 'networkStoreKey',
+ serviceId: 'serviceModelId'
+ }).serviceInstance['serviceModelId'].networks['networkStoreKey'];
+
+ expect(networkState).toBeDefined();
+ expect(networkState.action).toEqual(ServiceInstanceActions.None_Delete);
+ });
+
+ test('#UNDO_DELETE_ACTION_NETWORK_INSTANCE', () => {
+ let networkState = networkReducer(<any>{serviceInstance : {
+ 'serviceModelId' : {
+ networks : {
+ 'networkStoreKey' : {
+ isMissingData : true,
+ action : 'Update_Delete'
+ }
+ }
+ }
+ }},
+ <UndoDeleteActionNetworkInstanceAction>{
+ type: NetworkActions.UNDO_DELETE_ACTION_NETWORK_INSTANCE,
+ networkStoreKey: 'networkStoreKey',
+ serviceId: 'serviceModelId'
+ }).serviceInstance['serviceModelId'].networks['networkStoreKey'];
+
+ expect(networkState).toBeDefined();
+ expect(networkState.action).toEqual(ServiceInstanceActions.Update);
+ });
+});
+
+
+
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.ts
new file mode 100644
index 000000000..bcbbea57d
--- /dev/null
+++ b/vid-webpack-master/src/app/shared/storeUtil/utils/network/network.reducers.ts
@@ -0,0 +1,102 @@
+import {Action} from "redux";
+import * as _ from "lodash";
+import {NetworkInstance} from "../../../models/networkInstance";
+import {
+ CreateNetworkInstanceAction, DeleteActionNetworkInstanceAction,
+ NetworkActions, UndoDeleteActionNetworkInstanceAction,
+ UpdateNetworkCollectionFunction,
+ UpdateNetworkInstanceAction
+} from "./network.actions";
+import {ServiceInstance} from "../../../models/serviceInstance";
+import {calculateNextUniqueModelName} from "../vnf/vnf.reducers";
+import {ServiceState} from "../main.reducer";
+import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
+
+
+export function networkReducer(state: ServiceState , action: Action) : ServiceState {
+ switch (action.type) {
+ case NetworkActions.CREATE_NETWORK_INSTANCE: {
+ const updateNetworkInstanceAction = <CreateNetworkInstanceAction>action;
+ const serviceUuid = updateNetworkInstanceAction.serviceUuid;
+ let networkModelName = updateNetworkInstanceAction.networkModelName;
+
+
+ let newState = _.cloneDeep(state);
+
+ updateNetworkInstanceAction.networkInstance.originalName = networkModelName;
+ updateNetworkInstanceAction.networkModelName = calculateNextUniqueModelName(networkModelName, serviceUuid, newState, 'networks');
+
+ let networkInstance: NetworkInstance = newState.serviceInstance[serviceUuid].networks[networkModelName];
+ networkInstance = new NetworkInstance();
+ updateNetworkInstanceAction.networkInstance.networkStoreKey = updateNetworkInstanceAction.networkModelName;
+ updateNetworkInstanceAction.networkInstance.originalName = networkModelName;
+ networkInstance.originalName = updateNetworkInstanceAction.networkInstance.originalName;
+ networkInstance.networkStoreKey = updateNetworkInstanceAction.networkInstance.networkStoreKey;
+ updateServiceValidationCounter(newState, networkInstance['isMissingData'], updateNetworkInstanceAction.networkInstance['isMissingData'], serviceUuid);
+
+ newState.serviceInstance[serviceUuid].networks[updateNetworkInstanceAction.networkModelName] = Object.assign(networkInstance, updateNetworkInstanceAction.networkInstance);
+ return newState;
+ }
+ case NetworkActions.UPDATE_NETWORK_INSTANCE: {
+ const updateNetworkInstanceAction = <UpdateNetworkInstanceAction>action;
+ const serviceUuid = updateNetworkInstanceAction.serviceUuid;
+ let networkStoreKey = updateNetworkInstanceAction.networkStoreKey;
+
+ let newState = _.cloneDeep(state);
+ let networkInstance: NetworkInstance = newState.serviceInstance[serviceUuid].networks[networkStoreKey];
+ updateUniqueNames(networkInstance? networkInstance.instanceName : null, updateNetworkInstanceAction.networkInstance.instanceName, newState.serviceInstance[serviceUuid]);
+
+ networkInstance = networkInstance || new NetworkInstance();
+ updateServiceValidationCounter(newState, networkInstance['isMissingData'], updateNetworkInstanceAction.networkInstance['isMissingData'], serviceUuid);
+
+ newState.serviceInstance[serviceUuid].networks[networkStoreKey] = Object.assign(networkInstance, updateNetworkInstanceAction.networkInstance);
+ return newState;
+ }
+ case NetworkActions.UPDATE_NETWORK_FUNCTION: {
+ let networkFunctionReduxObj = state['networkFunctions'] == undefined ? {} : state['networkFunctions'];
+ networkFunctionReduxObj[(<UpdateNetworkCollectionFunction>action).network_function] = (<UpdateNetworkCollectionFunction>action).networksAccordingToNetworkCollection;
+ Object.assign(state, {'networkFunctions': networkFunctionReduxObj});
+ return Object.assign({}, state);
+ }
+ case NetworkActions.DELETE_ACTION_NETWORK_INSTANCE : {
+ let newState = _.cloneDeep(state);
+ let network = newState.serviceInstance[(<DeleteActionNetworkInstanceAction>action).serviceId].networks[(<DeleteActionNetworkInstanceAction>action).networkStoreKey];
+ let oldAction = network.action;
+ if(oldAction === ServiceInstanceActions.None_Delete || oldAction === ServiceInstanceActions.Update_Delete) return newState;
+ newState.serviceInstance[(<DeleteActionNetworkInstanceAction>action).serviceId].networks[(<DeleteActionNetworkInstanceAction>action).networkStoreKey].action = (oldAction + '_Delete') as ServiceInstanceActions;
+ updateServiceValidationCounter(newState, network['isMissingData'], false , (<DeleteActionNetworkInstanceAction>action).serviceId);
+
+ return newState;
+ }
+
+ case NetworkActions.UNDO_DELETE_ACTION_NETWORK_INSTANCE : {
+ let newState = _.cloneDeep(state);
+ let network = newState.serviceInstance[(<UndoDeleteActionNetworkInstanceAction>action).serviceId].networks[(<UndoDeleteActionNetworkInstanceAction>action).networkStoreKey];
+ let oldState = network.action;
+ newState.serviceInstance[(<UndoDeleteActionNetworkInstanceAction>action).serviceId].networks[(<UndoDeleteActionNetworkInstanceAction>action).networkStoreKey].action = (oldState.split('_')[0]) as ServiceInstanceActions;
+ updateServiceValidationCounter(newState, network['isMissingData'], false , (<DeleteActionNetworkInstanceAction>action).serviceId);
+ return newState;
+ }
+ }
+}
+
+const updateUniqueNames = (oldName : string, newName : string, serviceInstance : ServiceInstance) : void => {
+ let existingNames = serviceInstance.existingNames;
+ if (!_.isNil(oldName) && oldName.toLowerCase() in existingNames) {
+ delete existingNames[oldName.toLowerCase()];
+ }
+ if(!_.isNil(newName)) {
+ existingNames[newName.toLowerCase()] = "";
+ }
+};
+
+
+const updateServiceValidationCounter = (newState: any, oldValidationState: boolean, newValidationState: boolean, serviceUuid: string) => {
+ if (oldValidationState && !newValidationState) {
+ newState.serviceInstance[serviceUuid].validationCounter--;
+ } else if (!oldValidationState && newValidationState) {
+ newState.serviceInstance[serviceUuid].validationCounter++;
+ }
+};
+
+