Loading charts/grafana/dashboards/k8s-resources-cluster.json +1 −1 Original line number Diff line number Diff line Loading @@ -2250,6 +2250,6 @@ }, "timezone": "UTC", "title": "Kubernetes / Compute Resources / Cluster", "uid": "efa86fd1d0c121a26444b636a3f509a8", "uid": "k8s-resources-cluster", "version": 0 } charts/grafana/dashboards/k8s-resources-namespace.json +1 −1 Original line number Diff line number Diff line Loading @@ -1994,6 +1994,6 @@ }, "timezone": "UTC", "title": "Kubernetes / Compute Resources / Namespace (Pods)", "uid": "85a562078cdf77779eaa1add43ccec1e", "uid": "k8s-resources-namespace", "version": 0 } charts/grafana/dashboards/kubelet.json +1 −1 Original line number Diff line number Diff line Loading @@ -2207,6 +2207,6 @@ }, "timezone": "UTC", "title": "Kubernetes / Kubelet", "uid": "3138fa155d5915769fbded898ac09fd9", "uid": "k8s-kubelet", "version": 0 } charts/grafana/dashboards/prometheus.json +1 −1 Original line number Diff line number Diff line Loading @@ -1049,6 +1049,6 @@ }, "timezone": "utc", "title": "Prometheus Overview", "uid": "", "uid": "k8s-prometheus", "version": 0 } js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +119 −31 Original line number Diff line number Diff line Loading @@ -89,8 +89,14 @@ import { cfgElemClone } from '../../state/cfg'; import { execElemUpdate, execElemClone } from '@/js/state/exec'; import { TYPE_CFG, TYPE_EXEC, // Network element types ELEMENT_TYPE_SCENARIO, Loading Loading @@ -765,7 +771,6 @@ const NCGroups = ({ prefixes, onUpdate, element }) => { return ( <NCGroup onUpdate={onUpdate} type={TYPE_CFG} element={element} prefix={p} key={p} Loading Loading @@ -1532,7 +1537,7 @@ const TypeRelatedFormFields = ({ onUpdate, onEditLocation, onEditPath, element } } }; const elementTypes = [ const cfgElementTypes = [ { label: 'Logical Domain', options: [ELEMENT_TYPE_OPERATOR_GENERIC, ELEMENT_TYPE_OPERATOR_CELL] Loading Loading @@ -1566,6 +1571,17 @@ const elementTypes = [ } ]; const execElementTypes = [ { label: 'Process', options: [ ELEMENT_TYPE_UE_APP, ELEMENT_TYPE_EDGE_APP, ELEMENT_TYPE_CLOUD_APP ] } ]; var parentTypes = {}; parentTypes[ELEMENT_TYPE_SCENARIO] = null; parentTypes[ELEMENT_TYPE_OPERATOR] = [ELEMENT_TYPE_SCENARIO]; Loading Loading @@ -1711,13 +1727,15 @@ const getElementTypeOverrideBack = (typeOverride) => { return type; }; const HeaderGroup = ({ element, onTypeChange, onUpdate, typeDisabled, parentDisabled, nameDisabled }) => { const HeaderGroup = ({ element, onTypeChange, onUpdate, typeDisabled, parentDisabled, nameDisabled, pageType }) => { var type = getElemFieldVal(element, FIELD_TYPE) || ''; var parent = getElemFieldVal(element, FIELD_PARENT) || ''; var parentElements = element.parentElements || [parent]; var typeOverride = getElementTypeOverride(type); var elementTypes = pageType === TYPE_CFG ? cfgElementTypes : execElementTypes; return ( <> <Grid style={{ marginTop: 20 }}> Loading Loading @@ -1765,29 +1783,90 @@ export class CfgNetworkElementContainer extends Component { super(props); } updateElement(elem) { switch (this.props.type) { case TYPE_CFG: this.props.cfgElemUpdate(elem); break; case TYPE_EXEC: this.props.execElemUpdate(elem); break; default: break; } } cloneElement(elem) { switch (this.props.type) { case TYPE_CFG: this.props.cfgElemClone(elem); break; case TYPE_EXEC: this.props.execElemClone(elem); break; default: break; } } getTableEntries() { switch (this.props.type) { case TYPE_CFG: return this.props.cfgTableData; case TYPE_EXEC: return this.props.execTableData; default: return null; } } getConfiguredElement() { switch (this.props.type) { case TYPE_CFG: return this.props.cfgConfiguredElement; case TYPE_EXEC: return this.props.execConfiguredElement; default: return null; } } getConfigMode() { switch (this.props.type) { case TYPE_CFG: return this.props.cfgConfigMode; case TYPE_EXEC: return this.props.execConfigMode; default: return null; } } // Element update handler onUpdateElement(name, val, err) { var updatedElem = updateObject({}, this.props.configuredElement); var updatedElem = updateObject({}, this.getConfiguredElement()); setElemFieldVal(updatedElem, name, val); setElemFieldErr(updatedElem, name, err); this.props.cfgElemUpdate(updatedElem); // this.props.cfgElemUpdate(updatedElem); this.updateElement(updatedElem); } // Element clone handler onCloneElement(newName) { var clonedElem = updateObject({}, this.props.configuredElement); var clonedElem = updateObject({}, this.getConfiguredElement()); setElemFieldVal(clonedElem, FIELD_NAME, newName); setElemFieldVal(clonedElem, FIELD_PARENT, null); var elementType = getElemFieldVal(clonedElem, FIELD_TYPE); clonedElem.parentElements = this.elementsOfType(getParentTypes(elementType)); this.props.cfgElemClone(clonedElem); // this.props.cfgElemClone(clonedElem); this.cloneElement(clonedElem); } // Retrieve names of elements with matching type elementsOfType(types) { return _.chain(this.props.tableData) return _.chain(this.getTableEntries()) .filter(e => { var elemType = getElemFieldVal(e, FIELD_TYPE); return _.includes(types, elemType); Loading @@ -1800,7 +1879,7 @@ export class CfgNetworkElementContainer extends Component { // Element configuration type change handler onElementTypeChange(elementType) { var elem = updateObject({}, this.props.configuredElement); var elem = updateObject({}, this.getConfiguredElement()); //override the frontend terminology var elementTypeOverride = getElementTypeOverrideBack(elementType); Loading @@ -1813,24 +1892,25 @@ export class CfgNetworkElementContainer extends Component { elem.parentElements = this.elementsOfType(getParentTypes(elementTypeOverride)); if (this.props.configMode !== CFG_ELEM_MODE_CLONE) { setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementTypeOverride, this.props.tableData)); if (this.getConfigMode() !== CFG_ELEM_MODE_CLONE) { setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementTypeOverride, this.getTableEntries())); } this.props.cfgElemUpdate(elem); // this.props.cfgElemUpdate(elem); this.updateElement(elem); } onEditLocation() { var elem = updateObject({}, this.props.configuredElement); var elem = updateObject({}, this.getConfiguredElement()); this.props.onEditLocation(elem); } onEditPath() { var elem = updateObject({}, this.props.configuredElement); var elem = updateObject({}, this.getConfiguredElement()); this.props.onEditPath(elem); } render() { const element = this.props.configuredElement; const element = this.getConfiguredElement(); return ( <div className="cfg-network-element-div" style={styles.outer}> <Grid> Loading @@ -1839,18 +1919,18 @@ export class CfgNetworkElementContainer extends Component { <Typography use="headline6">Element Configuration</Typography> </div> </GridCell> <GridCell span={12}> <GridCell span={12} hidden={this.props.type === TYPE_EXEC}> <GridInner align={'left'}> <GridCell span={12}> <ElementCfgButtons configuredElement={element} configMode={this.props.configMode} configMode={this.getConfigMode()} onNewElement={this.props.onNewElement} onDeleteElement={() => { this.props.onDeleteElement(element); }} onCloneElement={() => { this.onCloneElement(createUniqueName(this.props.tableData, getElemFieldVal(element, FIELD_NAME) + '-copy')); this.onCloneElement(createUniqueName(this.getTableEntries(), getElemFieldVal(element, FIELD_NAME) + '-copy')); }} /> </GridCell> Loading @@ -1868,9 +1948,10 @@ export class CfgNetworkElementContainer extends Component { onUpdate={(name, val, err) => { this.onUpdateElement(name, val, err); }} typeDisabled={this.props.configMode === CFG_ELEM_MODE_CLONE || this.props.configMode === CFG_ELEM_MODE_EDIT} parentDisabled={this.props.configMode === CFG_ELEM_MODE_EDIT} nameDisabled={getElemFieldVal(element, FIELD_TYPE) === ELEMENT_TYPE_SCENARIO && this.props.configMode !== CFG_ELEM_MODE_NEW} typeDisabled={this.getConfigMode() === CFG_ELEM_MODE_CLONE || this.getConfigMode() === CFG_ELEM_MODE_EDIT} parentDisabled={this.getConfigMode() === CFG_ELEM_MODE_EDIT} nameDisabled={getElemFieldVal(element, FIELD_TYPE) === ELEMENT_TYPE_SCENARIO && this.getConfigMode() !== CFG_ELEM_MODE_NEW} pageType={this.props.type} /> <TypeRelatedFormFields Loading @@ -1884,14 +1965,14 @@ export class CfgNetworkElementContainer extends Component { id="new-element-error-message" className="idcc-margin-top mdc-typography--body1" > {this.props.errorMessage} {this.props.type === TYPE_CFG ? this.props.cfgErrorMessage : this.props.execErrorMessage } </div> <CancelApplyPair saveDisabled={(this.props.isModified === false) ? true : false} onCancel={this.props.onCancelElement} saveDisabled={!(this.props.type === TYPE_CFG ? this.props.cfgIsModified : this.props.execIsModified)} onCancel={e => this.props.onCancelElement(e)} onApply={() => { (this.props.configMode === CFG_ELEM_MODE_CLONE) ? this.props.onApplyCloneElement(element) : this.props.onSaveElement(element); (this.getConfigMode() === CFG_ELEM_MODE_CLONE) ? this.props.onApplyCloneElement(element) : this.props.onSaveElement(element); }} /> Loading Loading @@ -1928,18 +2009,25 @@ const styles = { const mapStateToProps = state => { return { tableData: state.cfg.table.entries, configuredElement: state.cfg.elementConfiguration.configuredElement, configMode: state.cfg.elementConfiguration.configurationMode, isModified: state.cfg.elementConfiguration.isModified, errorMessage: state.cfg.elementConfiguration.errorMessage cfgTableData: state.cfg.table.entries, cfgConfiguredElement: state.cfg.elementConfiguration.configuredElement, cfgConfigMode: state.cfg.elementConfiguration.configurationMode, cfgIsModified: state.cfg.elementConfiguration.isModified, cfgErrorMessage: state.cfg.elementConfiguration.errorMessage, execTableData: state.exec.table.entries, execConfiguredElement: state.exec.elementConfiguration.configuredElement, execConfigMode: state.exec.elementConfiguration.configurationMode, execIsModified: state.exec.elementConfiguration.isModified, execErrorMessage: state.exec.elementConfiguration.errorMessage }; }; const mapDispatchToProps = dispatch => { return { cfgElemUpdate: element => dispatch(cfgElemUpdate(element)), cfgElemClone: element => dispatch(cfgElemClone(element)) cfgElemClone: element => dispatch(cfgElemClone(element)), execElemUpdate: element => dispatch(execElemUpdate(element)), execElemClone: element => dispatch(execElemClone(element)) }; }; Loading Loading
charts/grafana/dashboards/k8s-resources-cluster.json +1 −1 Original line number Diff line number Diff line Loading @@ -2250,6 +2250,6 @@ }, "timezone": "UTC", "title": "Kubernetes / Compute Resources / Cluster", "uid": "efa86fd1d0c121a26444b636a3f509a8", "uid": "k8s-resources-cluster", "version": 0 }
charts/grafana/dashboards/k8s-resources-namespace.json +1 −1 Original line number Diff line number Diff line Loading @@ -1994,6 +1994,6 @@ }, "timezone": "UTC", "title": "Kubernetes / Compute Resources / Namespace (Pods)", "uid": "85a562078cdf77779eaa1add43ccec1e", "uid": "k8s-resources-namespace", "version": 0 }
charts/grafana/dashboards/kubelet.json +1 −1 Original line number Diff line number Diff line Loading @@ -2207,6 +2207,6 @@ }, "timezone": "UTC", "title": "Kubernetes / Kubelet", "uid": "3138fa155d5915769fbded898ac09fd9", "uid": "k8s-kubelet", "version": 0 }
charts/grafana/dashboards/prometheus.json +1 −1 Original line number Diff line number Diff line Loading @@ -1049,6 +1049,6 @@ }, "timezone": "utc", "title": "Prometheus Overview", "uid": "", "uid": "k8s-prometheus", "version": 0 }
js-apps/meep-frontend/src/js/containers/cfg/cfg-network-element-container.js +119 −31 Original line number Diff line number Diff line Loading @@ -89,8 +89,14 @@ import { cfgElemClone } from '../../state/cfg'; import { execElemUpdate, execElemClone } from '@/js/state/exec'; import { TYPE_CFG, TYPE_EXEC, // Network element types ELEMENT_TYPE_SCENARIO, Loading Loading @@ -765,7 +771,6 @@ const NCGroups = ({ prefixes, onUpdate, element }) => { return ( <NCGroup onUpdate={onUpdate} type={TYPE_CFG} element={element} prefix={p} key={p} Loading Loading @@ -1532,7 +1537,7 @@ const TypeRelatedFormFields = ({ onUpdate, onEditLocation, onEditPath, element } } }; const elementTypes = [ const cfgElementTypes = [ { label: 'Logical Domain', options: [ELEMENT_TYPE_OPERATOR_GENERIC, ELEMENT_TYPE_OPERATOR_CELL] Loading Loading @@ -1566,6 +1571,17 @@ const elementTypes = [ } ]; const execElementTypes = [ { label: 'Process', options: [ ELEMENT_TYPE_UE_APP, ELEMENT_TYPE_EDGE_APP, ELEMENT_TYPE_CLOUD_APP ] } ]; var parentTypes = {}; parentTypes[ELEMENT_TYPE_SCENARIO] = null; parentTypes[ELEMENT_TYPE_OPERATOR] = [ELEMENT_TYPE_SCENARIO]; Loading Loading @@ -1711,13 +1727,15 @@ const getElementTypeOverrideBack = (typeOverride) => { return type; }; const HeaderGroup = ({ element, onTypeChange, onUpdate, typeDisabled, parentDisabled, nameDisabled }) => { const HeaderGroup = ({ element, onTypeChange, onUpdate, typeDisabled, parentDisabled, nameDisabled, pageType }) => { var type = getElemFieldVal(element, FIELD_TYPE) || ''; var parent = getElemFieldVal(element, FIELD_PARENT) || ''; var parentElements = element.parentElements || [parent]; var typeOverride = getElementTypeOverride(type); var elementTypes = pageType === TYPE_CFG ? cfgElementTypes : execElementTypes; return ( <> <Grid style={{ marginTop: 20 }}> Loading Loading @@ -1765,29 +1783,90 @@ export class CfgNetworkElementContainer extends Component { super(props); } updateElement(elem) { switch (this.props.type) { case TYPE_CFG: this.props.cfgElemUpdate(elem); break; case TYPE_EXEC: this.props.execElemUpdate(elem); break; default: break; } } cloneElement(elem) { switch (this.props.type) { case TYPE_CFG: this.props.cfgElemClone(elem); break; case TYPE_EXEC: this.props.execElemClone(elem); break; default: break; } } getTableEntries() { switch (this.props.type) { case TYPE_CFG: return this.props.cfgTableData; case TYPE_EXEC: return this.props.execTableData; default: return null; } } getConfiguredElement() { switch (this.props.type) { case TYPE_CFG: return this.props.cfgConfiguredElement; case TYPE_EXEC: return this.props.execConfiguredElement; default: return null; } } getConfigMode() { switch (this.props.type) { case TYPE_CFG: return this.props.cfgConfigMode; case TYPE_EXEC: return this.props.execConfigMode; default: return null; } } // Element update handler onUpdateElement(name, val, err) { var updatedElem = updateObject({}, this.props.configuredElement); var updatedElem = updateObject({}, this.getConfiguredElement()); setElemFieldVal(updatedElem, name, val); setElemFieldErr(updatedElem, name, err); this.props.cfgElemUpdate(updatedElem); // this.props.cfgElemUpdate(updatedElem); this.updateElement(updatedElem); } // Element clone handler onCloneElement(newName) { var clonedElem = updateObject({}, this.props.configuredElement); var clonedElem = updateObject({}, this.getConfiguredElement()); setElemFieldVal(clonedElem, FIELD_NAME, newName); setElemFieldVal(clonedElem, FIELD_PARENT, null); var elementType = getElemFieldVal(clonedElem, FIELD_TYPE); clonedElem.parentElements = this.elementsOfType(getParentTypes(elementType)); this.props.cfgElemClone(clonedElem); // this.props.cfgElemClone(clonedElem); this.cloneElement(clonedElem); } // Retrieve names of elements with matching type elementsOfType(types) { return _.chain(this.props.tableData) return _.chain(this.getTableEntries()) .filter(e => { var elemType = getElemFieldVal(e, FIELD_TYPE); return _.includes(types, elemType); Loading @@ -1800,7 +1879,7 @@ export class CfgNetworkElementContainer extends Component { // Element configuration type change handler onElementTypeChange(elementType) { var elem = updateObject({}, this.props.configuredElement); var elem = updateObject({}, this.getConfiguredElement()); //override the frontend terminology var elementTypeOverride = getElementTypeOverrideBack(elementType); Loading @@ -1813,24 +1892,25 @@ export class CfgNetworkElementContainer extends Component { elem.parentElements = this.elementsOfType(getParentTypes(elementTypeOverride)); if (this.props.configMode !== CFG_ELEM_MODE_CLONE) { setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementTypeOverride, this.props.tableData)); if (this.getConfigMode() !== CFG_ELEM_MODE_CLONE) { setElemFieldVal(elem, FIELD_NAME, getSuggestedName(elementTypeOverride, this.getTableEntries())); } this.props.cfgElemUpdate(elem); // this.props.cfgElemUpdate(elem); this.updateElement(elem); } onEditLocation() { var elem = updateObject({}, this.props.configuredElement); var elem = updateObject({}, this.getConfiguredElement()); this.props.onEditLocation(elem); } onEditPath() { var elem = updateObject({}, this.props.configuredElement); var elem = updateObject({}, this.getConfiguredElement()); this.props.onEditPath(elem); } render() { const element = this.props.configuredElement; const element = this.getConfiguredElement(); return ( <div className="cfg-network-element-div" style={styles.outer}> <Grid> Loading @@ -1839,18 +1919,18 @@ export class CfgNetworkElementContainer extends Component { <Typography use="headline6">Element Configuration</Typography> </div> </GridCell> <GridCell span={12}> <GridCell span={12} hidden={this.props.type === TYPE_EXEC}> <GridInner align={'left'}> <GridCell span={12}> <ElementCfgButtons configuredElement={element} configMode={this.props.configMode} configMode={this.getConfigMode()} onNewElement={this.props.onNewElement} onDeleteElement={() => { this.props.onDeleteElement(element); }} onCloneElement={() => { this.onCloneElement(createUniqueName(this.props.tableData, getElemFieldVal(element, FIELD_NAME) + '-copy')); this.onCloneElement(createUniqueName(this.getTableEntries(), getElemFieldVal(element, FIELD_NAME) + '-copy')); }} /> </GridCell> Loading @@ -1868,9 +1948,10 @@ export class CfgNetworkElementContainer extends Component { onUpdate={(name, val, err) => { this.onUpdateElement(name, val, err); }} typeDisabled={this.props.configMode === CFG_ELEM_MODE_CLONE || this.props.configMode === CFG_ELEM_MODE_EDIT} parentDisabled={this.props.configMode === CFG_ELEM_MODE_EDIT} nameDisabled={getElemFieldVal(element, FIELD_TYPE) === ELEMENT_TYPE_SCENARIO && this.props.configMode !== CFG_ELEM_MODE_NEW} typeDisabled={this.getConfigMode() === CFG_ELEM_MODE_CLONE || this.getConfigMode() === CFG_ELEM_MODE_EDIT} parentDisabled={this.getConfigMode() === CFG_ELEM_MODE_EDIT} nameDisabled={getElemFieldVal(element, FIELD_TYPE) === ELEMENT_TYPE_SCENARIO && this.getConfigMode() !== CFG_ELEM_MODE_NEW} pageType={this.props.type} /> <TypeRelatedFormFields Loading @@ -1884,14 +1965,14 @@ export class CfgNetworkElementContainer extends Component { id="new-element-error-message" className="idcc-margin-top mdc-typography--body1" > {this.props.errorMessage} {this.props.type === TYPE_CFG ? this.props.cfgErrorMessage : this.props.execErrorMessage } </div> <CancelApplyPair saveDisabled={(this.props.isModified === false) ? true : false} onCancel={this.props.onCancelElement} saveDisabled={!(this.props.type === TYPE_CFG ? this.props.cfgIsModified : this.props.execIsModified)} onCancel={e => this.props.onCancelElement(e)} onApply={() => { (this.props.configMode === CFG_ELEM_MODE_CLONE) ? this.props.onApplyCloneElement(element) : this.props.onSaveElement(element); (this.getConfigMode() === CFG_ELEM_MODE_CLONE) ? this.props.onApplyCloneElement(element) : this.props.onSaveElement(element); }} /> Loading Loading @@ -1928,18 +2009,25 @@ const styles = { const mapStateToProps = state => { return { tableData: state.cfg.table.entries, configuredElement: state.cfg.elementConfiguration.configuredElement, configMode: state.cfg.elementConfiguration.configurationMode, isModified: state.cfg.elementConfiguration.isModified, errorMessage: state.cfg.elementConfiguration.errorMessage cfgTableData: state.cfg.table.entries, cfgConfiguredElement: state.cfg.elementConfiguration.configuredElement, cfgConfigMode: state.cfg.elementConfiguration.configurationMode, cfgIsModified: state.cfg.elementConfiguration.isModified, cfgErrorMessage: state.cfg.elementConfiguration.errorMessage, execTableData: state.exec.table.entries, execConfiguredElement: state.exec.elementConfiguration.configuredElement, execConfigMode: state.exec.elementConfiguration.configurationMode, execIsModified: state.exec.elementConfiguration.isModified, execErrorMessage: state.exec.elementConfiguration.errorMessage }; }; const mapDispatchToProps = dispatch => { return { cfgElemUpdate: element => dispatch(cfgElemUpdate(element)), cfgElemClone: element => dispatch(cfgElemClone(element)) cfgElemClone: element => dispatch(cfgElemClone(element)), execElemUpdate: element => dispatch(execElemUpdate(element)), execElemClone: element => dispatch(execElemClone(element)) }; }; Loading