Loading go-packages/meep-model/validator.go +49 −0 Original line number Diff line number Diff line Loading @@ -597,6 +597,11 @@ func validatePhyLoc(pl *dataModel.PhysicalLocation) (err error) { if err != nil { return err } // DataNetwork err = validateDataNetwork(pl.DataNetwork, pl.Type_) if err != nil { return err } // GeoData err = validateGeoData(pl.GeoData, pl.Type_) if err != nil { Loading Loading @@ -750,6 +755,30 @@ func validateNetChar(nc *dataModel.NetworkCharacteristics) (err error) { return nil } func validateDataNetwork(dn *dataModel.DnConfig, typ string) (err error) { // Optional field if dn == nil { return nil } // DNN err = validateDnn(dn.Dnn) if err != nil { return err } if typ == NodeTypeUE && dn.Dnn != "" { return errors.New("UE must not have a configured DNN") } // ECSP err = validateEcsp(dn.Ecsp) if err != nil { return err } if typ == NodeTypeUE && dn.Ecsp != "" { return errors.New("UE must not have a configured ECSP") } return nil } func validateGeoData(gd *dataModel.GeoData, typ string) (err error) { // Optional field if gd == nil { Loading Loading @@ -1094,6 +1123,26 @@ func validateWirelessTypeList(list string) (err error) { return nil } func validateDnn(dnn string) (err error) { if dnn != "" { matched, err := regexp.MatchString(REGEX_DNN, dnn) if err != nil || !matched { return errors.New("DNN must be alphanumeric or '-' or '.'") } } return nil } func validateEcsp(ecsp string) (err error) { if ecsp != "" { matched, err := regexp.MatchString(REGEX_ECSP, ecsp) if err != nil || !matched { return errors.New("ECSP must be alphanumeric or ' '") } } return nil } func validatePath(path string, isRequired bool) (err error) { if path != "" { matched, err := regexp.MatchString(REGEX_PATH, path) Loading js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +18 −0 Original line number Diff line number Diff line Loading @@ -1768,6 +1768,23 @@ const getSuggestedName = ( type, elements ) => { return createUniqueName(elements, suggestedPrefix); }; const getSuggestedDnn = ( type ) => { var suggestedDnn = ''; switch(type) { case ELEMENT_TYPE_DC: suggestedDnn = 'internet'; break; case ELEMENT_TYPE_CN: case ELEMENT_TYPE_EDGE: case ELEMENT_TYPE_FOG: suggestedDnn = 'edn'; break; default: break; } return suggestedDnn; }; const getElementTypeOverride = (type) => { var typeOverride = ''; switch(type) { Loading Loading @@ -1965,6 +1982,7 @@ export class CfgNetworkElementContainer extends Component { if (this.getConfigMode() !== CFG_ELEM_MODE_CLONE) { setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementTypeOverride, this.getTableEntries())); setElemFieldVal(elem, FIELD_DN_NAME, getSuggestedDnn(elementTypeOverride)); } // this.props.cfgElemUpdate(elem); this.updateElement(elem); Loading js-apps/meep-frontend/src/js/util/elem-utils.js +3 −2 Original line number Diff line number Diff line Loading @@ -46,7 +46,8 @@ import { DEFAULT_LATENCY_JITTER_APP, DEFAULT_THROUGHPUT_DL_APP, DEFAULT_THROUGHPUT_UL_APP, DEFAULT_PACKET_LOSS_APP DEFAULT_PACKET_LOSS_APP, DEFAULT_CONNECTIVITY_MODEL } from '../meep-constants'; // Network Element Fields Loading Loading @@ -198,7 +199,7 @@ export const createElem = name => { setElemFieldVal(elem, FIELD_CHART_VAL, ''); setElemFieldVal(elem, FIELD_CHART_GROUP, ''); setElemFieldVal(elem, FIELD_CONNECTED, true); setElemFieldVal(elem, FIELD_CONNECTIVITY_MODEL, ''); setElemFieldVal(elem, FIELD_CONNECTIVITY_MODEL, DEFAULT_CONNECTIVITY_MODEL); setElemFieldVal(elem, FIELD_DN_NAME, ''); setElemFieldVal(elem, FIELD_DN_ECSP, ''); setElemFieldVal(elem, FIELD_WIRELESS, false); Loading Loading
go-packages/meep-model/validator.go +49 −0 Original line number Diff line number Diff line Loading @@ -597,6 +597,11 @@ func validatePhyLoc(pl *dataModel.PhysicalLocation) (err error) { if err != nil { return err } // DataNetwork err = validateDataNetwork(pl.DataNetwork, pl.Type_) if err != nil { return err } // GeoData err = validateGeoData(pl.GeoData, pl.Type_) if err != nil { Loading Loading @@ -750,6 +755,30 @@ func validateNetChar(nc *dataModel.NetworkCharacteristics) (err error) { return nil } func validateDataNetwork(dn *dataModel.DnConfig, typ string) (err error) { // Optional field if dn == nil { return nil } // DNN err = validateDnn(dn.Dnn) if err != nil { return err } if typ == NodeTypeUE && dn.Dnn != "" { return errors.New("UE must not have a configured DNN") } // ECSP err = validateEcsp(dn.Ecsp) if err != nil { return err } if typ == NodeTypeUE && dn.Ecsp != "" { return errors.New("UE must not have a configured ECSP") } return nil } func validateGeoData(gd *dataModel.GeoData, typ string) (err error) { // Optional field if gd == nil { Loading Loading @@ -1094,6 +1123,26 @@ func validateWirelessTypeList(list string) (err error) { return nil } func validateDnn(dnn string) (err error) { if dnn != "" { matched, err := regexp.MatchString(REGEX_DNN, dnn) if err != nil || !matched { return errors.New("DNN must be alphanumeric or '-' or '.'") } } return nil } func validateEcsp(ecsp string) (err error) { if ecsp != "" { matched, err := regexp.MatchString(REGEX_ECSP, ecsp) if err != nil || !matched { return errors.New("ECSP must be alphanumeric or ' '") } } return nil } func validatePath(path string, isRequired bool) (err error) { if path != "" { matched, err := regexp.MatchString(REGEX_PATH, path) Loading
js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +18 −0 Original line number Diff line number Diff line Loading @@ -1768,6 +1768,23 @@ const getSuggestedName = ( type, elements ) => { return createUniqueName(elements, suggestedPrefix); }; const getSuggestedDnn = ( type ) => { var suggestedDnn = ''; switch(type) { case ELEMENT_TYPE_DC: suggestedDnn = 'internet'; break; case ELEMENT_TYPE_CN: case ELEMENT_TYPE_EDGE: case ELEMENT_TYPE_FOG: suggestedDnn = 'edn'; break; default: break; } return suggestedDnn; }; const getElementTypeOverride = (type) => { var typeOverride = ''; switch(type) { Loading Loading @@ -1965,6 +1982,7 @@ export class CfgNetworkElementContainer extends Component { if (this.getConfigMode() !== CFG_ELEM_MODE_CLONE) { setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementTypeOverride, this.getTableEntries())); setElemFieldVal(elem, FIELD_DN_NAME, getSuggestedDnn(elementTypeOverride)); } // this.props.cfgElemUpdate(elem); this.updateElement(elem); Loading
js-apps/meep-frontend/src/js/util/elem-utils.js +3 −2 Original line number Diff line number Diff line Loading @@ -46,7 +46,8 @@ import { DEFAULT_LATENCY_JITTER_APP, DEFAULT_THROUGHPUT_DL_APP, DEFAULT_THROUGHPUT_UL_APP, DEFAULT_PACKET_LOSS_APP DEFAULT_PACKET_LOSS_APP, DEFAULT_CONNECTIVITY_MODEL } from '../meep-constants'; // Network Element Fields Loading Loading @@ -198,7 +199,7 @@ export const createElem = name => { setElemFieldVal(elem, FIELD_CHART_VAL, ''); setElemFieldVal(elem, FIELD_CHART_GROUP, ''); setElemFieldVal(elem, FIELD_CONNECTED, true); setElemFieldVal(elem, FIELD_CONNECTIVITY_MODEL, ''); setElemFieldVal(elem, FIELD_CONNECTIVITY_MODEL, DEFAULT_CONNECTIVITY_MODEL); setElemFieldVal(elem, FIELD_DN_NAME, ''); setElemFieldVal(elem, FIELD_DN_ECSP, ''); setElemFieldVal(elem, FIELD_WIRELESS, false); Loading