Loading js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +92 −8 Original line number Diff line number Diff line Loading @@ -48,6 +48,10 @@ import { FIELD_CMD_ARGS, FIELD_EXT_PORT, FIELD_IS_EXTERNAL, FIELD_MCC, FIELD_MNC, FIELD_DEFAULT_CELL_ID, FIELD_CELL_ID, FIELD_CHART_ENABLED, FIELD_CHART_LOC, FIELD_CHART_VAL, Loading @@ -74,6 +78,7 @@ import { ELEMENT_TYPE_OPERATOR, ELEMENT_TYPE_ZONE, ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G, ELEMENT_TYPE_DC, ELEMENT_TYPE_CN, ELEMENT_TYPE_EDGE, Loading Loading @@ -111,6 +116,10 @@ import { CFG_ELEM_CMD, CFG_ELEM_ARGS, CFG_ELEM_EXTERNAL_CHECK, CFG_ELEM_MNC, CFG_ELEM_MCC, CFG_ELEM_DEFAULT_CELL_ID, CFG_ELEM_CELL_ID, CFG_ELEM_CHART_CHECK, CFG_ELEM_CHART_LOC, CFG_ELEM_CHART_GROUP, Loading Loading @@ -246,6 +255,28 @@ const validateGpuCount = count => { return null; }; const validateCellularMccMnc = val => { if (val) { if (val.length > 3) { return 'Maximum 3 numeric characters'; } else if (!val.match(/^(([0-9][0-9]*)?[0-9])+$/)) { return 'Numeric characters only'; } } return null; }; const validateCellularCellId = val => { if (val) { if (val.length > 7) { return 'Maximum 7 characters'; } else if (!val.match(/^(([_a-f0-9A-F][_-a-f0-9]*)?[_a-f0-9A-F])+$/)) { return 'Alphanumeric hex characters only'; } } return null; }; const validateExternalPort = port => { if (port === '') { return null; Loading Loading @@ -592,11 +623,42 @@ const TypeRelatedFormFields = ({ onUpdate, element }) => { ); case ELEMENT_TYPE_OPERATOR: return ( <> <NCGroups onUpdate={onUpdate} element={element} prefixes={[PREFIX_INT_ZONE]} /> <Grid> <CfgTextFieldCell span={3} onUpdate={onUpdate} element={element} validate={validateCellularMccMnc} label="MCC" fieldName={FIELD_MCC} cydata={CFG_ELEM_MCC} /> <CfgTextFieldCell span={3} onUpdate={onUpdate} element={element} validate={validateCellularMccMnc} label="MNC" fieldName={FIELD_MNC} cydata={CFG_ELEM_MNC} /> <CfgTextFieldCell span={6} onUpdate={onUpdate} element={element} validate={validateCellularCellId} label="Default cell Id" fieldName={FIELD_DEFAULT_CELL_ID} cydata={CFG_ELEM_DEFAULT_CELL_ID} /> </Grid> </> ); case ELEMENT_TYPE_ZONE: return ( Loading @@ -614,6 +676,24 @@ const TypeRelatedFormFields = ({ onUpdate, element }) => { prefixes={[PREFIX_TERM_LINK]} /> ); case ELEMENT_TYPE_POA_CELL_4G: return ( <> <NCGroups onUpdate={onUpdate} element={element} prefixes={[PREFIX_TERM_LINK]} /> <CfgTextFieldCell onUpdate={onUpdate} element={element} validate={validateCellularCellId} label="Cell Id" fieldName={FIELD_CELL_ID} cydata={CFG_ELEM_CELL_ID} /> </> ); case ELEMENT_TYPE_UE: case ELEMENT_TYPE_DC: case ELEMENT_TYPE_EDGE: Loading Loading @@ -878,7 +958,7 @@ const elementTypes = [ }, { label: 'Network Location', options: [ELEMENT_TYPE_DC, ELEMENT_TYPE_POA] options: [ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G] }, { label: 'Physical Location', Loading Loading @@ -906,9 +986,10 @@ parentTypes[ELEMENT_TYPE_OPERATOR] = [ELEMENT_TYPE_SCENARIO]; parentTypes[ELEMENT_TYPE_EDGE] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_ZONE] = [ELEMENT_TYPE_OPERATOR]; parentTypes[ELEMENT_TYPE_POA] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_POA_CELL_4G] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_CN] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_FOG] = [ELEMENT_TYPE_POA]; parentTypes[ELEMENT_TYPE_UE] = [ELEMENT_TYPE_POA]; parentTypes[ELEMENT_TYPE_FOG] = [ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G]; parentTypes[ELEMENT_TYPE_UE] = [ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G]; parentTypes[ELEMENT_TYPE_DC] = [ELEMENT_TYPE_SCENARIO]; parentTypes[ELEMENT_TYPE_UE_APP] = [ELEMENT_TYPE_UE]; parentTypes[ELEMENT_TYPE_MECSVC] = [ Loading Loading @@ -993,6 +1074,9 @@ const getSuggestedName = ( type, elements ) => { case ELEMENT_TYPE_DC: suggestedPrefix = 'cloud'; break; case ELEMENT_TYPE_POA_CELL_4G: suggestedPrefix = 'poa-cell-4g'; break; default: suggestedPrefix = type.toLowerCase(); } Loading js-apps/meep-frontend/src/js/containers/exec/network-characteristics-event-pane.js +3 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import { ELEMENT_TYPE_OPERATOR, ELEMENT_TYPE_ZONE, ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G, ELEMENT_TYPE_DC, //ELEMENT_TYPE_CN, ELEMENT_TYPE_EDGE, Loading Loading @@ -98,6 +99,7 @@ const ncApplicableTypes = [ ELEMENT_TYPE_OPERATOR, ELEMENT_TYPE_ZONE, ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G, ELEMENT_TYPE_DC, ELEMENT_TYPE_EDGE, ELEMENT_TYPE_FOG, Loading Loading @@ -182,6 +184,7 @@ class NetworkCharacteristicsEventPane extends Component { case ELEMENT_TYPE_ZONE: return PREFIX_INTRA_ZONE; case ELEMENT_TYPE_POA: case ELEMENT_TYPE_POA_CELL_4G: return PREFIX_TERM_LINK; case ELEMENT_TYPE_EDGE: return PREFIX_LINK; Loading js-apps/meep-frontend/src/js/meep-constants.js +7 −1 Original line number Diff line number Diff line Loading @@ -104,6 +104,9 @@ export const CFG_ELEM_PLACEMENT_ID = 'cfg-elem-placement-id'; export const CFG_ELEM_CMD = 'cfg-elem-cmd'; export const CFG_ELEM_ARGS = 'cfg-elem-args'; export const CFG_ELEM_EXTERNAL_CHECK = 'cfg-elem-external-check'; export const CFG_ELEM_MNC = 'cfg-elem-mnc'; export const CFG_ELEM_MCC = 'cfg-elem-mcc'; export const CFG_ELEM_DEFAULT_CELL_ID = 'cfg-elem-default-cell-id'; export const CFG_ELEM_CHART_CHECK = 'cfg-elem-chart-check'; export const CFG_ELEM_CHART_LOC = 'cfg-elem-chart-loc'; export const CFG_ELEM_CHART_GROUP = 'cfg-elem-chart-group'; Loading Loading @@ -147,6 +150,8 @@ export const PUBLIC_DOMAIN_TYPE_STR = 'PUBLIC'; export const ZONE_TYPE_STR = 'ZONE'; export const COMMON_ZONE_TYPE_STR = 'COMMON'; export const NL_TYPE_STR = 'POA'; export const POA_TYPE_STR = 'POA'; export const POA_CELL_4G_TYPE_STR = 'POA-CELL-4G'; export const DEFAULT_NL_TYPE_STR = 'DEFAULT'; export const UE_TYPE_STR = 'UE'; export const FOG_TYPE_STR = 'FOG'; Loading @@ -162,6 +167,7 @@ export const ELEMENT_TYPE_SCENARIO = 'SCENARIO'; export const ELEMENT_TYPE_OPERATOR = 'OPERATOR'; export const ELEMENT_TYPE_ZONE = 'ZONE'; export const ELEMENT_TYPE_POA = 'POA'; export const ELEMENT_TYPE_POA_CELL_4G = 'POA CELLULAR 4G'; export const ELEMENT_TYPE_DC = 'DISTANT CLOUD'; export const ELEMENT_TYPE_CN = 'CORE NETWORK'; export const ELEMENT_TYPE_EDGE = 'EDGE'; Loading js-apps/meep-frontend/src/js/state/exec/index.js +6 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,12 @@ const execZones = createSelector( const execPOAs = createSelector( [execTableElements], elems => { return _.filter(elems, elem => getElemFieldVal(elem, FIELD_TYPE) === 'POA'); return _.filter( elems, elem => getElemFieldVal(elem, FIELD_TYPE) === 'POA' || getElemFieldVal(elem, FIELD_TYPE) === 'POA-CELL-4G' ); } ); Loading js-apps/meep-frontend/src/js/util/elem-utils.js +8 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,10 @@ export const FIELD_CMD = 'cmd'; export const FIELD_CMD_ARGS = 'cmdArgs'; export const FIELD_EXT_PORT = 'externalPort'; export const FIELD_IS_EXTERNAL = 'isExternal'; export const FIELD_MCC = 'mcc'; export const FIELD_MNC = 'mnc'; export const FIELD_DEFAULT_CELL_ID = 'defaultCellId'; export const FIELD_CELL_ID = 'cellId'; export const FIELD_CHART_ENABLED = 'userChartEnabled'; export const FIELD_CHART_LOC = 'userChartLocation'; export const FIELD_CHART_VAL = 'userChartAlternateValues'; Loading Loading @@ -124,6 +128,10 @@ export const createElem = name => { setElemFieldVal(elem, FIELD_CMD_ARGS, ''); setElemFieldVal(elem, FIELD_EXT_PORT, ''); setElemFieldVal(elem, FIELD_IS_EXTERNAL, false); setElemFieldVal(elem, FIELD_MNC, ''); setElemFieldVal(elem, FIELD_MCC, ''); setElemFieldVal(elem, FIELD_DEFAULT_CELL_ID, ''); setElemFieldVal(elem, FIELD_CELL_ID, ''); setElemFieldVal(elem, FIELD_CHART_ENABLED, false); setElemFieldVal(elem, FIELD_CHART_LOC, ''); setElemFieldVal(elem, FIELD_CHART_VAL, ''); Loading Loading
js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +92 −8 Original line number Diff line number Diff line Loading @@ -48,6 +48,10 @@ import { FIELD_CMD_ARGS, FIELD_EXT_PORT, FIELD_IS_EXTERNAL, FIELD_MCC, FIELD_MNC, FIELD_DEFAULT_CELL_ID, FIELD_CELL_ID, FIELD_CHART_ENABLED, FIELD_CHART_LOC, FIELD_CHART_VAL, Loading @@ -74,6 +78,7 @@ import { ELEMENT_TYPE_OPERATOR, ELEMENT_TYPE_ZONE, ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G, ELEMENT_TYPE_DC, ELEMENT_TYPE_CN, ELEMENT_TYPE_EDGE, Loading Loading @@ -111,6 +116,10 @@ import { CFG_ELEM_CMD, CFG_ELEM_ARGS, CFG_ELEM_EXTERNAL_CHECK, CFG_ELEM_MNC, CFG_ELEM_MCC, CFG_ELEM_DEFAULT_CELL_ID, CFG_ELEM_CELL_ID, CFG_ELEM_CHART_CHECK, CFG_ELEM_CHART_LOC, CFG_ELEM_CHART_GROUP, Loading Loading @@ -246,6 +255,28 @@ const validateGpuCount = count => { return null; }; const validateCellularMccMnc = val => { if (val) { if (val.length > 3) { return 'Maximum 3 numeric characters'; } else if (!val.match(/^(([0-9][0-9]*)?[0-9])+$/)) { return 'Numeric characters only'; } } return null; }; const validateCellularCellId = val => { if (val) { if (val.length > 7) { return 'Maximum 7 characters'; } else if (!val.match(/^(([_a-f0-9A-F][_-a-f0-9]*)?[_a-f0-9A-F])+$/)) { return 'Alphanumeric hex characters only'; } } return null; }; const validateExternalPort = port => { if (port === '') { return null; Loading Loading @@ -592,11 +623,42 @@ const TypeRelatedFormFields = ({ onUpdate, element }) => { ); case ELEMENT_TYPE_OPERATOR: return ( <> <NCGroups onUpdate={onUpdate} element={element} prefixes={[PREFIX_INT_ZONE]} /> <Grid> <CfgTextFieldCell span={3} onUpdate={onUpdate} element={element} validate={validateCellularMccMnc} label="MCC" fieldName={FIELD_MCC} cydata={CFG_ELEM_MCC} /> <CfgTextFieldCell span={3} onUpdate={onUpdate} element={element} validate={validateCellularMccMnc} label="MNC" fieldName={FIELD_MNC} cydata={CFG_ELEM_MNC} /> <CfgTextFieldCell span={6} onUpdate={onUpdate} element={element} validate={validateCellularCellId} label="Default cell Id" fieldName={FIELD_DEFAULT_CELL_ID} cydata={CFG_ELEM_DEFAULT_CELL_ID} /> </Grid> </> ); case ELEMENT_TYPE_ZONE: return ( Loading @@ -614,6 +676,24 @@ const TypeRelatedFormFields = ({ onUpdate, element }) => { prefixes={[PREFIX_TERM_LINK]} /> ); case ELEMENT_TYPE_POA_CELL_4G: return ( <> <NCGroups onUpdate={onUpdate} element={element} prefixes={[PREFIX_TERM_LINK]} /> <CfgTextFieldCell onUpdate={onUpdate} element={element} validate={validateCellularCellId} label="Cell Id" fieldName={FIELD_CELL_ID} cydata={CFG_ELEM_CELL_ID} /> </> ); case ELEMENT_TYPE_UE: case ELEMENT_TYPE_DC: case ELEMENT_TYPE_EDGE: Loading Loading @@ -878,7 +958,7 @@ const elementTypes = [ }, { label: 'Network Location', options: [ELEMENT_TYPE_DC, ELEMENT_TYPE_POA] options: [ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G] }, { label: 'Physical Location', Loading Loading @@ -906,9 +986,10 @@ parentTypes[ELEMENT_TYPE_OPERATOR] = [ELEMENT_TYPE_SCENARIO]; parentTypes[ELEMENT_TYPE_EDGE] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_ZONE] = [ELEMENT_TYPE_OPERATOR]; parentTypes[ELEMENT_TYPE_POA] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_POA_CELL_4G] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_CN] = [ELEMENT_TYPE_ZONE]; parentTypes[ELEMENT_TYPE_FOG] = [ELEMENT_TYPE_POA]; parentTypes[ELEMENT_TYPE_UE] = [ELEMENT_TYPE_POA]; parentTypes[ELEMENT_TYPE_FOG] = [ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G]; parentTypes[ELEMENT_TYPE_UE] = [ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G]; parentTypes[ELEMENT_TYPE_DC] = [ELEMENT_TYPE_SCENARIO]; parentTypes[ELEMENT_TYPE_UE_APP] = [ELEMENT_TYPE_UE]; parentTypes[ELEMENT_TYPE_MECSVC] = [ Loading Loading @@ -993,6 +1074,9 @@ const getSuggestedName = ( type, elements ) => { case ELEMENT_TYPE_DC: suggestedPrefix = 'cloud'; break; case ELEMENT_TYPE_POA_CELL_4G: suggestedPrefix = 'poa-cell-4g'; break; default: suggestedPrefix = type.toLowerCase(); } Loading
js-apps/meep-frontend/src/js/containers/exec/network-characteristics-event-pane.js +3 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import { ELEMENT_TYPE_OPERATOR, ELEMENT_TYPE_ZONE, ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G, ELEMENT_TYPE_DC, //ELEMENT_TYPE_CN, ELEMENT_TYPE_EDGE, Loading Loading @@ -98,6 +99,7 @@ const ncApplicableTypes = [ ELEMENT_TYPE_OPERATOR, ELEMENT_TYPE_ZONE, ELEMENT_TYPE_POA, ELEMENT_TYPE_POA_CELL_4G, ELEMENT_TYPE_DC, ELEMENT_TYPE_EDGE, ELEMENT_TYPE_FOG, Loading Loading @@ -182,6 +184,7 @@ class NetworkCharacteristicsEventPane extends Component { case ELEMENT_TYPE_ZONE: return PREFIX_INTRA_ZONE; case ELEMENT_TYPE_POA: case ELEMENT_TYPE_POA_CELL_4G: return PREFIX_TERM_LINK; case ELEMENT_TYPE_EDGE: return PREFIX_LINK; Loading
js-apps/meep-frontend/src/js/meep-constants.js +7 −1 Original line number Diff line number Diff line Loading @@ -104,6 +104,9 @@ export const CFG_ELEM_PLACEMENT_ID = 'cfg-elem-placement-id'; export const CFG_ELEM_CMD = 'cfg-elem-cmd'; export const CFG_ELEM_ARGS = 'cfg-elem-args'; export const CFG_ELEM_EXTERNAL_CHECK = 'cfg-elem-external-check'; export const CFG_ELEM_MNC = 'cfg-elem-mnc'; export const CFG_ELEM_MCC = 'cfg-elem-mcc'; export const CFG_ELEM_DEFAULT_CELL_ID = 'cfg-elem-default-cell-id'; export const CFG_ELEM_CHART_CHECK = 'cfg-elem-chart-check'; export const CFG_ELEM_CHART_LOC = 'cfg-elem-chart-loc'; export const CFG_ELEM_CHART_GROUP = 'cfg-elem-chart-group'; Loading Loading @@ -147,6 +150,8 @@ export const PUBLIC_DOMAIN_TYPE_STR = 'PUBLIC'; export const ZONE_TYPE_STR = 'ZONE'; export const COMMON_ZONE_TYPE_STR = 'COMMON'; export const NL_TYPE_STR = 'POA'; export const POA_TYPE_STR = 'POA'; export const POA_CELL_4G_TYPE_STR = 'POA-CELL-4G'; export const DEFAULT_NL_TYPE_STR = 'DEFAULT'; export const UE_TYPE_STR = 'UE'; export const FOG_TYPE_STR = 'FOG'; Loading @@ -162,6 +167,7 @@ export const ELEMENT_TYPE_SCENARIO = 'SCENARIO'; export const ELEMENT_TYPE_OPERATOR = 'OPERATOR'; export const ELEMENT_TYPE_ZONE = 'ZONE'; export const ELEMENT_TYPE_POA = 'POA'; export const ELEMENT_TYPE_POA_CELL_4G = 'POA CELLULAR 4G'; export const ELEMENT_TYPE_DC = 'DISTANT CLOUD'; export const ELEMENT_TYPE_CN = 'CORE NETWORK'; export const ELEMENT_TYPE_EDGE = 'EDGE'; Loading
js-apps/meep-frontend/src/js/state/exec/index.js +6 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,12 @@ const execZones = createSelector( const execPOAs = createSelector( [execTableElements], elems => { return _.filter(elems, elem => getElemFieldVal(elem, FIELD_TYPE) === 'POA'); return _.filter( elems, elem => getElemFieldVal(elem, FIELD_TYPE) === 'POA' || getElemFieldVal(elem, FIELD_TYPE) === 'POA-CELL-4G' ); } ); Loading
js-apps/meep-frontend/src/js/util/elem-utils.js +8 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,10 @@ export const FIELD_CMD = 'cmd'; export const FIELD_CMD_ARGS = 'cmdArgs'; export const FIELD_EXT_PORT = 'externalPort'; export const FIELD_IS_EXTERNAL = 'isExternal'; export const FIELD_MCC = 'mcc'; export const FIELD_MNC = 'mnc'; export const FIELD_DEFAULT_CELL_ID = 'defaultCellId'; export const FIELD_CELL_ID = 'cellId'; export const FIELD_CHART_ENABLED = 'userChartEnabled'; export const FIELD_CHART_LOC = 'userChartLocation'; export const FIELD_CHART_VAL = 'userChartAlternateValues'; Loading Loading @@ -124,6 +128,10 @@ export const createElem = name => { setElemFieldVal(elem, FIELD_CMD_ARGS, ''); setElemFieldVal(elem, FIELD_EXT_PORT, ''); setElemFieldVal(elem, FIELD_IS_EXTERNAL, false); setElemFieldVal(elem, FIELD_MNC, ''); setElemFieldVal(elem, FIELD_MCC, ''); setElemFieldVal(elem, FIELD_DEFAULT_CELL_ID, ''); setElemFieldVal(elem, FIELD_CELL_ID, ''); setElemFieldVal(elem, FIELD_CHART_ENABLED, false); setElemFieldVal(elem, FIELD_CHART_LOC, ''); setElemFieldVal(elem, FIELD_CHART_VAL, ''); Loading