diff options
165 files changed, 32898 insertions, 2145 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/internalTypes/InternalSeverity.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/internalTypes/InternalSeverity.java index 20c3193b1..fcdb5e8ef 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/internalTypes/InternalSeverity.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/internalTypes/InternalSeverity.java @@ -6,9 +6,9 @@ * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under @@ -21,6 +21,8 @@ */ package org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes; +import javax.annotation.Nullable; + public enum InternalSeverity { NonAlarmed, @@ -122,4 +124,28 @@ public enum InternalSeverity { } return null; } + + /** + * convert a text string into Severity + * @param severityString with textes non[-]alarmed, warning minor major critical + * @return related enum or null + */ + public static @Nullable InternalSeverity valueOfString(String severityString) { + + switch( severityString.toLowerCase().trim() ) { + case "non-alarmed": + case "nonalarmed": + return InternalSeverity.NonAlarmed; + case "warning": + return InternalSeverity.Warning; + case "minor": + return InternalSeverity.Minor; + case "major": + return InternalSeverity.Major; + case "critical": + return InternalSeverity.Critical; + } + return null; + + } } diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/toggleAlarmFilter/NotificationDelayService.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/toggleAlarmFilter/NotificationDelayService.java index 47482b248..8ef302afa 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/toggleAlarmFilter/NotificationDelayService.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/base/toggleAlarmFilter/NotificationDelayService.java @@ -24,7 +24,7 @@ import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.ToggleAlarmConf import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class NotificationDelayService<T> implements AutoCloseable { +public class NotificationDelayService<T> implements AutoCloseable, IConfigChangedListener { private static final Logger LOG = LoggerFactory.getLogger(NotificationDelayService.class); private final HashMap<String, NotificationDelayFilter<T>> filters; @@ -42,16 +42,17 @@ public class NotificationDelayService<T> implements AutoCloseable { public NotificationDelayService(HtDevicemanagerConfiguration htconfig) { this.filters = new HashMap<>(); - htconfig.registerConfigChangedListener(configChangedListener); + htconfig.registerConfigChangedListener(this); NotificationDelayFilter.setDelay(htconfig.getToggleAlarm().getDelay()); NotificationDelayFilter.setEnabled(htconfig.getToggleAlarm().isEnabled()); } - private final IConfigChangedListener configChangedListener = () -> { + @Override + public void onConfigChanged() { ToggleAlarmConfig cfg = ToggleAlarmConfig.reload(); NotificationDelayFilter.setDelay(cfg.getDelay()); NotificationDelayFilter.setEnabled(cfg.isEnabled()); - }; + } @Override public void close() throws Exception { diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/HtDevicemanagerConfiguration.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/HtDevicemanagerConfiguration.java index c07bf4620..1f2dde235 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/HtDevicemanagerConfiguration.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/HtDevicemanagerConfiguration.java @@ -23,6 +23,7 @@ import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.IniConfi import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.IniConfigurationFile.ConfigurationException; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.AaiConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.DcaeConfig; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.DmConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.EsConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.PmConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.ToggleAlarmConfig; @@ -82,7 +83,7 @@ public class HtDevicemanagerConfiguration { public static HtDevicemanagerConfiguration getTestConfiguration() { return getTestConfiguration(CONFIGURATIONTESTFILE,false); } - + public static HtDevicemanagerConfiguration getTestConfiguration(boolean newInstance) { return getTestConfiguration(CONFIGURATIONTESTFILE,newInstance); } @@ -136,6 +137,10 @@ public class HtDevicemanagerConfiguration { return ToggleAlarmConfig.getTa(mConfig, this.subconfigHandler); } + public DmConfig getDmConfig() { + return DmConfig.getDmConfig(mConfig, this.subconfigHandler); + } + public ISubConfigHandler getSubconfigHandler() { return subconfigHandler; } @@ -148,5 +153,6 @@ public class HtDevicemanagerConfiguration { EsConfig.clear(); PmConfig.clear(); ToggleAlarmConfig.clear(); + DmConfig.clear(); } } diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/impl/DmConfig.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/impl/DmConfig.java new file mode 100644 index 000000000..c62a8eca6 --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/config/impl/DmConfig.java @@ -0,0 +1,132 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl; + +import java.util.EnumMap; +import java.util.Map; + +import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.IniConfigurationFile; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.IniConfigurationFile.ConfigurationException; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.InternalSeverity; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.BaseSubConfig; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.ISubConfigHandler; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl.DeviceMonitorProblems; + +/** + * Configuration of devicemonitor, section [devicemonitor] + * SeverityConnectionlossNeOAM=minor + * SeverityConnectionlossOAM=major + * SeverityConnectionlossMediator=critical + */ +public class DmConfig extends BaseSubConfig{ + + private static final String SECTION_MARKER_TA = "devicemonitor"; + private static final String PROPERTY_KEY_PREFIX_Severity = "Severity"; + + private static DmConfig dmConfig = null; + + private Map<DeviceMonitorProblems, InternalSeverity> severty = new EnumMap<>(DeviceMonitorProblems.class); + + /* + * Constructor + */ + private DmConfig() { + super(); + } + + public DmConfig(IniConfigurationFile config, ISubConfigHandler configHandler) throws ConfigurationException { + this(config, configHandler, true); + } + + public DmConfig(IniConfigurationFile config, ISubConfigHandler configHandler, boolean save) + throws ConfigurationException { + + super(config, configHandler, SECTION_MARKER_TA); + + for (DeviceMonitorProblems problem : DeviceMonitorProblems.values()) { + severty.put(problem, readProperty(problem)); + } + + if (save) { + for (DeviceMonitorProblems problem : DeviceMonitorProblems.values()) { + configSetPropertyp(config, problem, severty.get(problem)); + } + this.save(); + } + } + + public InternalSeverity getSeverity(DeviceMonitorProblems problem) { + return severty.get(problem); + } + + public static DmConfig getDefaultConfiguration() { + DmConfig c = new DmConfig(); + for (DeviceMonitorProblems problem : DeviceMonitorProblems.values()) { + c.severty.put(problem, InternalSeverity.Major); + } + return c; + } + public static boolean isInstantiated() { + return dmConfig != null; + } + + public static DmConfig getDmConfig(IniConfigurationFile config, ISubConfigHandler configHandler) { + if (dmConfig == null) { + try { + dmConfig = new DmConfig(config, configHandler); + } catch (ConfigurationException e) { + dmConfig = DmConfig.getDefaultConfiguration(); + } + } + return dmConfig; + } + + public static DmConfig reload() { + if (dmConfig == null) { + return null; + } + DmConfig tmpConfig; + try { + tmpConfig = new DmConfig(dmConfig.getConfig(), dmConfig.getConfigHandler(), false); + } catch (ConfigurationException e) { + tmpConfig = DmConfig.getDefaultConfiguration(); + } + dmConfig = tmpConfig; + return dmConfig; + } + + public static void clear() { + dmConfig=null; + } + + /* + * Private Helper functions + */ + private static String getPropertyName(DeviceMonitorProblems problem) { + return PROPERTY_KEY_PREFIX_Severity+problem.name(); + } + + private static void configSetPropertyp(IniConfigurationFile config, DeviceMonitorProblems problem, InternalSeverity value) { + config.setProperty(SECTION_MARKER_TA + "."+getPropertyName(problem), value.getValueAsString()); + } + + private InternalSeverity readProperty(DeviceMonitorProblems problem) { + return InternalSeverity.valueOfString(getString(getPropertyName(problem), InternalSeverity.Major.getValueAsString())); + } + +} diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitor.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitor.java new file mode 100644 index 000000000..dd5ffd40b --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitor.java @@ -0,0 +1,53 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl; + +public interface DeviceMonitor extends AutoCloseable { + + /** + * Referesh database by raising all alarms again. + */ + void refreshAlarmsInDb(); + + /** + * removeMountpointIndication deregisters a mountpoint for registration services + * @param mountPointNodeName to deregister + */ + void removeMountpointIndication(String mountPointNodeName); + + /** + * Notify of device state change to "disconnected" + * Mount point supervision + * @param mountPointNodeName to deregister + */ + void deviceDisconnectIndication(String mountPointNodeName); + + /** + * Notify of device state changes to "connected" + * @param mountPointNodeName name of mount point + * @param ne to monitor + */ + void deviceConnectMasterIndication(String mountPointNodeName, DeviceMonitoredNe ne); + + /** + * Notify of device state changes to "connected" for slave nodes + * @param mountPointNodeName name of mount point + */ + void deviceConnectSlaveIndication(String mountPointNodeName); + +} diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorEmptyImpl.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorEmptyImpl.java new file mode 100644 index 000000000..ef2af1ae3 --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorEmptyImpl.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl; + +public class DeviceMonitorEmptyImpl implements DeviceMonitor { + + @Override + public void refreshAlarmsInDb() { + } + + @Override + public void removeMountpointIndication(String mountPointNodeName) { + } + + @Override + public void deviceConnectMasterIndication(String mountPointNodeName, DeviceMonitoredNe ne) { + } + + @Override + public void deviceDisconnectIndication(String mountPointNodeName) { + } + + @Override + public void deviceConnectSlaveIndication(String mountPointNodeName) { + } + + @Override + public void close() throws Exception { + } + + +} diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorImpl.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorImpl.java index 89ee376da..fc9fb75c4 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorImpl.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorImpl.java @@ -25,6 +25,12 @@ import java.util.Enumeration; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; + +import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.toggleAlarmFilter.NotificationDelayFilter; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.HtDevicemanagerConfiguration; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.IConfigChangedListener; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.DmConfig; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.ToggleAlarmConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.listener.ODLEventListener; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.slf4j.Logger; @@ -62,7 +68,7 @@ import org.slf4j.LoggerFactory; */ @SuppressWarnings("deprecation") -public class DeviceMonitorImpl implements AutoCloseable { +public class DeviceMonitorImpl implements DeviceMonitor, IConfigChangedListener { private static final Logger LOG = LoggerFactory.getLogger(DeviceMonitorImpl.class); @@ -80,11 +86,16 @@ public class DeviceMonitorImpl implements AutoCloseable { * Basic implementation of devicemonitoring * @param odlEventListener as destination for problems */ - public DeviceMonitorImpl(DataBroker dataBroker, ODLEventListener odlEventListener) { + public DeviceMonitorImpl(DataBroker dataBroker, ODLEventListener odlEventListener, HtDevicemanagerConfiguration htconfig) { LOG.info("Construct {}", this.getClass().getSimpleName()); this.odlEventListener = odlEventListener; this.dataBroker = dataBroker; + + htconfig.registerConfigChangedListener(this); + DmConfig dmConfig = htconfig.getDmConfig(); + setDmConfig(dmConfig); + this.queue = new ConcurrentHashMap<>(); this.scheduler = Executors.newScheduledThreadPool(10); } @@ -104,6 +115,18 @@ public class DeviceMonitorImpl implements AutoCloseable { scheduler.shutdown(); } + @Override + public void onConfigChanged() { + DmConfig cfg = DmConfig.reload(); + setDmConfig(cfg); + } + + private void setDmConfig(DmConfig dmConfig) { + for (DeviceMonitorProblems problem : DeviceMonitorProblems.values()) { + problem.setSeverity(dmConfig.getSeverity(problem)); + } + } + /*------------------------------------------------------------- * Start/ stop/ update service for Mountpoint */ @@ -160,7 +183,6 @@ public class DeviceMonitorImpl implements AutoCloseable { DeviceMonitorTask task = queue.get(mountPointNodeName); //Remove from here queue.remove(mountPointNodeName); - //Clear all problems task.removeMountpointIndication(); LOG.debug("Task stopped: {}", mountPointNodeName); diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorProblems.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorProblems.java index 003c2002c..812d4dcf3 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorProblems.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/devicemonitor/impl/DeviceMonitorProblems.java @@ -6,9 +6,9 @@ * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under @@ -23,7 +23,11 @@ */ package org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl; +import javax.annotation.Nullable; + import org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.InternalSeverity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public enum DeviceMonitorProblems { @@ -43,15 +47,23 @@ public enum DeviceMonitorProblems { */ connectionLossNeOAM(InternalSeverity.Major); + private static final Logger LOG = LoggerFactory.getLogger(DeviceMonitorProblems.class); InternalSeverity severity; - DeviceMonitorProblems(InternalSeverity severity) { - this.severity = severity; + DeviceMonitorProblems(@Nullable InternalSeverity severity) { + if (severity != null) { + this.severity = severity; + } } InternalSeverity getSeverity() { return severity; } + public void setSeverity(InternalSeverity severity) { + LOG.info("Change severity for {} from {} to {}", name(), this.severity, severity); + this.severity=severity; + } + } diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/DeviceManagerImpl.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/DeviceManagerImpl.java index 97595ddac..6a693b735 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/DeviceManagerImpl.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/DeviceManagerImpl.java @@ -35,6 +35,8 @@ import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.EsConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.GeoConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.config.impl.PmConfig; import org.onap.ccsdk.features.sdnr.wt.devicemanager.dcaeconnector.impl.DcaeProviderClient; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl.DeviceMonitor; +import org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl.DeviceMonitorEmptyImpl; import org.onap.ccsdk.features.sdnr.wt.devicemanager.devicemonitor.impl.DeviceMonitorImpl; import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.database.service.HtDatabaseEventsService; import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.listener.NetconfChangeListener; @@ -61,6 +63,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.ClusteredConnectionStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; @@ -108,8 +111,8 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R private @Nullable PerformanceManagerImpl performanceManager = null; private ProviderClient dcaeProviderClient; private ProviderClient aotsMProvider; - private @Nullable AaiProviderClient aaiProviderClient; - private DeviceMonitorImpl deviceMonitor; + private @Nullable AaiProviderClient aaiProviderClient = null; + private @Nullable DeviceMonitor deviceMonitor = new DeviceMonitorEmptyImpl(); private IndexUpdateService updateService; private IndexConfigService configService; private IndexMwtnService mwtnService; @@ -219,9 +222,6 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R LOG.warn("No configuration available. Don't start event manager"); } else { this.databaseClientEvents = new HtDatabaseEventsService(htDatabase); - //Make sure to start for one cluster node only - if (akkaConfig == null || akkaConfig.isClusterAndFirstNode() || akkaConfig.isSingleNode()) { - } String myDbKeyNameExtended = MYDBKEYNAMEBASE + "-" + dbConfig.getCluster(); @@ -256,7 +256,7 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R // DeviceMonitor has to be available before netconfSubscriptionManager is // configured LOG.debug("start DeviceMonitor Service"); - this.deviceMonitor = new DeviceMonitorImpl(dataBroker, odlEventListener); + this.deviceMonitor = new DeviceMonitorImpl(dataBroker, odlEventListener, config); // netconfSubscriptionManager should be the last one because this is a callback // service @@ -340,7 +340,7 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R return; } - if (!isMaster(nNode)) { + if (!isNetconfNodeMaster(nNode)) { // Change Devicemonitor-status to connected ... for non master mountpoints. deviceMonitor.deviceConnectSlaveIndication(mountPointNodeName); return; @@ -398,9 +398,8 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R ne.initialReadFromNetworkElement(); ne.initSynchronizationExtension(); - // Setup Service that monitors registration/ deregistration of session - ConnectionStatus csts = nNode.getConnectionStatus(); - sendCreateOrUpdateNotification(mountPointNodeName, action, csts); + + sendUpdateNotification(mountPointNodeName, nNode.getConnectionStatus()); if (aaiProviderClient != null) { aaiProviderClient.onDeviceRegistered(mountPointNodeName); @@ -426,15 +425,14 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R public void enterNonConnectedState(Action action, NodeId nNodeId, NetconfNode nNode) { String mountPointNodeName = nNodeId.getValue(); ConnectionStatus csts = nNode.getConnectionStatus(); - - sendCreateOrUpdateNotification(mountPointNodeName, action, csts); + if (isNetconfNodeMaster(nNode)) { + sendUpdateNotification(mountPointNodeName, csts); + } // Handling if mountpoint exist. connected -> connecting/UnableToConnect stopListenerOnNodeForConnectedState(mountPointNodeName); - if (deviceMonitor != null) { - deviceMonitor.deviceDisconnectIndication(mountPointNodeName); - } + deviceMonitor.deviceDisconnectIndication(mountPointNodeName); } @@ -473,12 +471,10 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R } } - private void sendCreateOrUpdateNotification(String mountPointNodeName, Action action, ConnectionStatus csts) { - LOG.info("enter Non ConnectedState for device :: Name : {} Action {} ConnectionStatus {}", mountPointNodeName, action, csts); - if (action == Action.CREATE) { - odlEventListener.registration(mountPointNodeName); - } else { - odlEventListener.updateRegistration(mountPointNodeName, ConnectionStatus.class.getSimpleName(), csts != null ? csts.getName() : "null"); + private void sendUpdateNotification(String mountPointNodeName, ConnectionStatus csts) { + LOG.info("enter Non ConnectedState for device :: Name : {} ConnectionStatus {}", mountPointNodeName, csts); + if (odlEventListener != null) { + odlEventListener.updateRegistration(mountPointNodeName, ConnectionStatus.class.getSimpleName(), csts != null ? csts.getName() : "null"); } } @@ -486,32 +482,44 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R * Handle netconf/mountpoint changes */ @Override - public void netconfChangeHandler(Action action, @Nullable ConnectionStatus csts, NodeId nodeId, NetconfNode nnode) { - switch (action) { - case REMOVE: - removeMountpointState(nodeId); // Stop Monitor - //deviceManagerService.enterNonConnectedState(nodeId, nnode); // Remove Mountpoint handler - break; - - case UPDATE: - case CREATE: - if (csts != null) { - switch (csts) { - case Connected: { - startListenerOnNodeForConnectedState(action, nodeId, nnode); - break; - } - case UnableToConnect: - case Connecting: { - enterNonConnectedState(action, nodeId, nnode); - break; - } - } - } else { - LOG.debug("NETCONF Node handled with null status for action", action); - } - break; - } + public void netconfChangeHandler(Action action, @Nullable ConnectionStatus csts, NodeId nodeId, NetconfNode nNode) { + + ClusteredConnectionStatus ccsts = nNode.getClusteredConnectionStatus(); + String nodeIdString = nodeId.getValue(); + if (action == Action.CREATE) { + if (odlEventListener != null) { + odlEventListener.registration(nodeIdString); + } + } + boolean isCluster = akkaConfig == null && akkaConfig.isCluster(); + if (isCluster && ccsts == null) { + LOG.debug("NETCONF Node {} {} does not provide cluster status. Stop execution.", nodeIdString, action); + } else { + switch (action) { + case REMOVE: + removeMountpointState(nodeId); // Stop Monitor + break; + + case UPDATE: + case CREATE: + if (csts != null) { + switch (csts) { + case Connected: { + startListenerOnNodeForConnectedState(action, nodeId, nNode); + break; + } + case UnableToConnect: + case Connecting: { + enterNonConnectedState(action, nodeId, nNode); + break; + } + } + } else { + LOG.debug("NETCONF Node handled with null status for action", action); + } + break; + } + } } /*------------------------------------------------------------------------------------------- @@ -590,9 +598,7 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R } // Force a sync - if (this.deviceMonitor != null) { - this.deviceMonitor.refreshAlarmsInDb(); - } + this.deviceMonitor.refreshAlarmsInDb(); threadDoClearCurrentFaultByNodename = new Thread(() -> { refreshCounter++; @@ -697,17 +703,11 @@ public class DeviceManagerImpl implements DeviceManagerService, AutoCloseable, R return this.akkaConfig == null ? "" : this.akkaConfig.getClusterConfig().getClusterSeedNodeName("abc"); } - private boolean isMaster(NetconfNode nnode) { + private boolean isNetconfNodeMaster(NetconfNode nnode) { if (isInClusterMode()) { LOG.debug("check if me is responsible for node"); String masterNodeName = nnode.getClusteredConnectionStatus() == null ? "null" : nnode.getClusteredConnectionStatus().getNetconfMasterNode(); - /* - * List<NodeStatus> clusterNodeStatusList=nnode.getClusteredConnectionStatus()==null?null:nnode. - * getClusteredConnectionStatus().getNodeStatus(); if(clusterNodeStatusList!=null) { for(NodeStatus - * s: clusterNodeStatusList) LOG.debug("node "+s.getNode()+ - * " with status "+(s.getStatus()==null?"null":s.getStatus().getName())); } - */ String myNodeName = getClusterNetconfNodeName(); LOG.debug("sdnMasterNode=" + masterNodeName + " and sdnMyNode=" + myNodeName); if (!masterNodeName.equals(myNodeName)) { diff --git a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/listener/NetconfChangeListener.java b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/listener/NetconfChangeListener.java index a521bb94c..80aac1ac4 100644 --- a/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/listener/NetconfChangeListener.java +++ b/sdnr/wt/devicemanager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/impl/listener/NetconfChangeListener.java @@ -29,6 +29,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus; +import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.ClusteredConnectionStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; @@ -145,24 +146,24 @@ public class NetconfChangeListener implements ClusteredDataTreeChangeListener<No } if (node == null || nnode == null || nodeId == null || nodeKey == null) { - LOG.warn("Unexpected node {}, netconf node {} or key {} or id {}", node, nnode, nodeKey, nodeId); + LOG.warn("Unexpected node {}, netconf node {} or key {} or id {}", node, nnode, nodeKey, nodeId); } else { - - String nodeIdString = nodeId.getValue(); - ConnectionStatus csts = nnode.getConnectionStatus(); - LOG.debug("NETCONF Node processing with id {} action {} status {} cluster status {}", nodeIdString, - action, csts, nnode.getClusteredConnectionStatus()); - - // Do not forward any controller related events to devicemanager - if (nodeIdString.equals(CONTROLLER)) { - LOG.debug("Stop processing for [{}]", nodeIdString); - } else { - // Action forwarded to devicehandler - deviceManagerService.netconfChangeHandler(action, csts, nodeId, nnode); - } + String nodeIdString = nodeId.getValue(); + // Do not forward any controller related events to devicemanager + if (nodeIdString.equals(CONTROLLER)) { + LOG.debug("Stop processing for [{}]", nodeIdString); + } else { + + ClusteredConnectionStatus ccsts = nnode.getClusteredConnectionStatus(); + ConnectionStatus csts = nnode.getConnectionStatus(); + LOG.debug("NETCONF Node processing with id {} action {} status {} cluster status {}", nodeIdString, + action, csts, ccsts); + // Action forwarded to devicehandler + deviceManagerService.netconfChangeHandler(action, csts, nodeId, nnode); + } } } catch (NullPointerException e) { - LOG.warn("Unexpected null .. stop processing.", e); + LOG.warn("Unexpected null .. stop processing.", e); } } diff --git a/sdnr/wt/odlux/LICENSE b/sdnr/wt/odlux/LICENSE index 3556ffa71..c5487c33a 100644 --- a/sdnr/wt/odlux/LICENSE +++ b/sdnr/wt/odlux/LICENSE @@ -1,13 +1,15 @@ -/* - * ============LICENSE_START============================================================================================================= - * Copyright (c) 2018 highstreet-technolgies. - * =================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS - * OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - * ============LICENSE_END=============================================================================================================== - * - */
\ No newline at end of file +============LICENSE_START======================================================================== +ONAP : ccsdk feature sdnr wt +================================================================================================= +Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. +================================================================================================= +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License +is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +or implied. See the License for the specific language governing permissions and limitations under +the License. +============LICENSE_END========================================================================== diff --git a/sdnr/wt/odlux/README.md b/sdnr/wt/odlux/README.md index a0b23fea2..6e02db0e0 100644 --- a/sdnr/wt/odlux/README.md +++ b/sdnr/wt/odlux/README.md @@ -63,6 +63,7 @@ You can install these globally or let it be installed by maven due "mvn clean in ### Default menu positions * from 0 for top to 999 for bottom. + ``` 0 Connect 10 Fault diff --git a/sdnr/wt/odlux/apps/apiDemo/pom.xml b/sdnr/wt/odlux/apps/apiDemo/pom.xml index 8cf7e3243..ae19899b5 100644 --- a/sdnr/wt/odlux/apps/apiDemo/pom.xml +++ b/sdnr/wt/odlux/apps/apiDemo/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -133,7 +135,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/app-feature/pom.xml b/sdnr/wt/odlux/apps/app-feature/pom.xml index ce74a3a0b..491d72858 100644 --- a/sdnr/wt/odlux/apps/app-feature/pom.xml +++ b/sdnr/wt/odlux/apps/app-feature/pom.xml @@ -1,68 +1,81 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- * ============LICENSE_START======================================================= - * ONAP : CCSDK.feature.sdnr.wt * ================================================================================ - * Copyright (C) 2018 highstreet technologies GmbH Intellectual Property. - * All rights reserved. * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); * you may - not use this file except in compliance with the License. * You may obtain - a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, software * distributed - under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES - OR CONDITIONS OF ANY KIND, either express or implied. * See the License for - the specific language governing permissions and * limitations under the License. - * ============LICENSE_END========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> +<!-- * ============LICENSE_START======================================================= + * ONAP : CCSDK.feature.sdnr.wt * ================================================================================ + * Copyright (C) 2018 highstreet technologies GmbH Intellectual Property. + * All rights reserved. * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); * you may + not use this file except in compliance with the License. * You may obtain + a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * + * Unless required by applicable law or agreed to in writing, software * distributed + under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES + OR CONDITIONS OF ANY KIND, either express or implied. * See the License for + the specific language governing permissions and * limitations under the License. + * ============LICENSE_END========================================================= --> - <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> - <artifactId>sdnr-wt-odlux-apps-feature</artifactId> - <version>0.4.2-SNAPSHOT</version> - <packaging>feature</packaging> - <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onap.ccsdk.parent</groupId> - <artifactId>single-feature-parent</artifactId> - <version>1.2.2-SNAPSHOT</version> - <relativePath/> - </parent> - <licenses> - <license> - <name>Apache License, Version 2.0</name> - <url>http://www.apache.org/licenses/LICENSE-2.0</url> - </license> - </licenses> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>sdnr-wt-odlux-apps-feature</artifactId> + <version>0.4.2-SNAPSHOT</version> + <packaging>feature</packaging> + <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name> - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-connectApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-faultApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-helpApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-inventoryApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-mediatorApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-maintenanceApp</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> + <parent> + <groupId>org.onap.ccsdk.parent</groupId> + <artifactId>single-feature-parent</artifactId> + <version>1.2.2-SNAPSHOT</version> + <relativePath /> + </parent> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0</url> + </license> + </licenses> + + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-connectApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-faultApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-helpApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-inventoryApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-mediatorApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-maintenanceApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-performanceHistoryApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-configurationApp</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> </project> diff --git a/sdnr/wt/odlux/apps/app-installer/pom.xml b/sdnr/wt/odlux/apps/app-installer/pom.xml index 1c26e2bf0..24baf0e9c 100755 --- a/sdnr/wt/odlux/apps/app-installer/pom.xml +++ b/sdnr/wt/odlux/apps/app-installer/pom.xml @@ -1,139 +1,151 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> - <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> - <artifactId>sdnr-wt-odlux-apps-installer</artifactId> - <version>0.4.2-SNAPSHOT</version> - <packaging>pom</packaging> - <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>sdnr-wt-odlux-apps-installer</artifactId> + <version>0.4.2-SNAPSHOT</version> + <packaging>pom</packaging> + <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name> - <parent> - <groupId>org.onap.ccsdk.parent</groupId> - <artifactId>odlparent-lite</artifactId> - <version>1.2.2-SNAPSHOT</version> - <relativePath/> - </parent> + <parent> + <groupId>org.onap.ccsdk.parent</groupId> + <artifactId>odlparent-lite</artifactId> + <version>1.2.2-SNAPSHOT</version> + <relativePath /> + </parent> - <properties> - <application.name>sdnr-wt-odlux-apps</application.name> - <include.transitive.dependencies>false</include.transitive.dependencies> - </properties> - <licenses> - <license> - <name>Apache License, Version 2.0</name> - <url>http://www.apache.org/licenses/LICENSE-2.0</url> - </license> - </licenses> + <properties> + <application.name>sdnr-wt-odlux-apps</application.name> + <include.transitive.dependencies>false</include.transitive.dependencies> + </properties> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0</url> + </license> + </licenses> - <dependencies> - <dependency> - <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> - <artifactId>${application.name}-feature</artifactId> - <version>${project.version}</version> - <type>xml</type> - <classifier>features</classifier> - <exclusions> - <exclusion> - <groupId>*</groupId> - <artifactId>*</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-apiDemo</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-connectApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-demoApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-faultApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-helpApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-inventoryApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-minimumApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-mediatorApp</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>sdnr-wt-odlux-app-maintenanceApp</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> + <dependencies> + <dependency> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>${application.name}-feature</artifactId> + <version>${project.version}</version> + <type>xml</type> + <classifier>features</classifier> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-apiDemo</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-connectApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-demoApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-faultApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-helpApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-inventoryApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-minimumApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-mediatorApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-maintenanceApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-performanceHistoryApp</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-app-configurationApp</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> - <build> - <plugins> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <executions> - <execution> - <id>maven-repo-zip</id> - <goals> - <goal>single</goal> - </goals> - <phase>package</phase> - <configuration> - <attach>true</attach> - <finalName>stage/${application.name}-${project.version}</finalName> - <descriptors> - <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> - </descriptors> - <appendAssemblyId>true</appendAssemblyId> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-dependency-plugin</artifactId> - <executions> - <execution> - <id>copy-nested-dependencies</id> - <goals> - <goal>copy-dependencies</goal> - </goals> - <phase>prepare-package</phase> - <configuration> - <transitive>true</transitive> - <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> - <overWriteReleases>false</overWriteReleases> - <overWriteSnapshots>true</overWriteSnapshots> - <overWriteIfNewer>true</overWriteIfNewer> - <useRepositoryLayout>true</useRepositoryLayout> - <addParentPoms>false</addParentPoms> - <copyPom>false</copyPom> - <!--<includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> --> - <!--<scope>provided</scope> --> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>maven-repo-zip</id> + <goals> + <goal>single</goal> + </goals> + <phase>package</phase> + <configuration> + <attach>true</attach> + <finalName>stage/${application.name}-${project.version}</finalName> + <descriptors> + <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor> + </descriptors> + <appendAssemblyId>true</appendAssemblyId> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-nested-dependencies</id> + <goals> + <goal>copy-dependencies</goal> + </goals> + <phase>prepare-package</phase> + <configuration> + <transitive>true</transitive> + <outputDirectory>${project.build.directory}/assembly/system</outputDirectory> + <overWriteReleases>false</overWriteReleases> + <overWriteSnapshots>true</overWriteSnapshots> + <overWriteIfNewer>true</overWriteIfNewer> + <useRepositoryLayout>true</useRepositoryLayout> + <addParentPoms>false</addParentPoms> + <copyPom>false</copyPom> + <!--<includeArtifactIds>sdnr-wt-apigateway-provider,${application.name}</includeArtifactIds> --> + <!--<scope>provided</scope> --> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </project> diff --git a/sdnr/wt/odlux/apps/configurationApp/.babelrc b/sdnr/wt/odlux/apps/configurationApp/.babelrc new file mode 100644 index 000000000..3d8cd1260 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/.babelrc @@ -0,0 +1,17 @@ +{ + "presets": [ + ["@babel/preset-react"], + ["@babel/preset-env", { + "targets": { + "chrome": "66" + }, + "spec": true, + "loose": false, + "modules": false, + "debug": false, + "useBuiltIns": "usage", + "forceAllTransforms": true + }] + ], + "plugins": [] +} diff --git a/sdnr/wt/odlux/apps/configurationApp/package.json b/sdnr/wt/odlux/apps/configurationApp/package.json new file mode 100644 index 000000000..b97d84d6b --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/package.json @@ -0,0 +1,40 @@ +{ + "name": "@odlux/configuration-app", + "version": "0.1.0", + "description": "A react based modular UI for the configuration app.", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --env debug", + "build": "webpack --env release --config webpack.config.js", + "build:dev": "webpack --env debug --config webpack.config.js" + }, + "repository": { + "type": "git", + "url": "https://git.mfico.de/highstreet-technologies/odlux.git" + }, + "keywords": [ + "reactjs", + "redux", + "ui", + "framework" + ], + "author": "Matthias Fischer", + "license": "MIT", + "dependencies": { + "@odlux/framework": "*" + }, + "peerDependencies": { + "@types/react": "16.4.14", + "@types/react-dom": "16.0.8", + "@types/react-router-dom": "4.3.1", + "@material-ui/core": "3.8.3", + "@material-ui/icons": "3.0.2", + "@types/classnames": "2.2.6", + "@types/flux": "3.1.8", + "@types/jquery": "3.3.10", + "jquery": "3.3.1", + "react": "16.5.2", + "react-dom": "16.5.2", + "react-router-dom": "4.3.1" + } +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/pom.xml b/sdnr/wt/odlux/apps/configurationApp/pom.xml new file mode 100644 index 000000000..55037b5b0 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/pom.xml @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <parent> + <groupId>org.onap.ccsdk.parent</groupId> + <artifactId>odlparent</artifactId> + <version>1.2.2-SNAPSHOT</version> + <relativePath /> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>sdnr-wt-odlux-app-configurationApp</artifactId> + <version>0.4.2-SNAPSHOT</version> + <packaging>bundle</packaging> + <name>sdnr-wt-odlux-app-configurationApp</name> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0</url> + </license> + </licenses> + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-core-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-core-provider</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <sourceDirectory>src2/main/java</sourceDirectory> + <plugins> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <configuration> + <filesets> + <fileset> + <directory>dist</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>node</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>node_modules</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>../node_modules</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <!-- eclipse bug build bin folder in basedir --> + <fileset> + <directory>bin</directory> + <followSymlinks>false</followSymlinks> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>add-test-source</id> + <phase>generate-test-sources</phase> + <goals> + <goal>add-test-source</goal> + </goals> + <configuration> + <sources> + <source>src2/test/java</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>de.jacksitlab</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>1.7.1</version> + <executions> + <execution> + <id>install node and yarn</id> + <goals> + <goal>install-node-and-yarn</goal> + </goals> + <!-- optional: default phase is "generate-resources" --> + <phase>initialize</phase> + <configuration> + <nodeVersion>v8.10.0</nodeVersion> + <yarnVersion>v1.12.3</yarnVersion> + </configuration> + </execution> + <execution> + <id>yarn build</id> + <goals> + <goal>yarn</goal> + </goals> + <configuration> + <arguments>run build</arguments> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> + <Private-Package></Private-Package> + </instructions> + </configuration> + </plugin> + </plugins> + <resources> + <resource> + <directory>dist</directory> + <targetPath>odlux</targetPath> + </resource> + <resource> + <directory>src2/main/resources</directory> + </resource> + <resource> + <directory>src2/test/resources</directory> + </resource> + </resources> + </build> + <pluginRepositories> + <pluginRepository> + <id>highstreet repo</id> + <url>https://cloud-highstreet-technologies.com/mvn/</url> + <snapshots> + <enabled>true</enabled> + <updatePolicy>always</updatePolicy> + </snapshots> + </pluginRepository> + </pluginRepositories> +</project> diff --git a/sdnr/wt/odlux/apps/configurationApp/src/actions/configurationActions.ts b/sdnr/wt/odlux/apps/configurationApp/src/actions/configurationActions.ts new file mode 100644 index 000000000..82055a761 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/actions/configurationActions.ts @@ -0,0 +1,137 @@ +import { Action } from '../../../../framework/src/flux/action'; +import { Dispatch } from '../../../../framework/src/flux/store'; + +import { CoreModelNetworkElement, LpResponse } from '../models/coreModel'; +import configurationService, { getValueByName } from '../services/configurationService'; +import { ViewSpecification } from 'models/uiModels'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { AddSnackbarNotification } from '../../../../framework/src/actions/snackbarActions'; + +export class ConfigurationApplicationBaseAction extends Action { } + +export class UpdateLoading extends ConfigurationApplicationBaseAction { + constructor (public loading: boolean) { + super(); + + } +} + +export class UpdateCoreModel extends ConfigurationApplicationBaseAction { + constructor (public nodeId?: string, public coreModel?: CoreModelNetworkElement) { + super(); + + } +} + +export class UpdateLp extends ConfigurationApplicationBaseAction { + constructor (public lpId?: string, public capability?: string, public conditionalPackage?: string, public viewSpecifications: ViewSpecification[] = []) { + super(); + + } +} + +export class UpdateViewData extends ConfigurationApplicationBaseAction { + constructor (public viewId?: string, public indexValues: string = "", public viewData: {} = {}) { + super(); + + } +} + + +export const updateMountIdAsyncActionCreator = (nodeId: string | undefined) => async (dispatch: Dispatch) => { + if (!nodeId) { + dispatch(new UpdateCoreModel()); + return; + } + dispatch(new UpdateLoading(true)); + const coreModel = await configurationService.getCoreModelByNodeId(nodeId); + dispatch(new UpdateLoading(false)); + + return coreModel + ? dispatch(new UpdateCoreModel(nodeId, coreModel)) + : dispatch(new UpdateCoreModel()); +} + +export const updateLpIdAsyncActionCreator = (lpId: string | undefined) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => { + const { configuration: { coreModel: coreModel, nodeId: nodeId } } = getState(); + if (! nodeId || !lpId || !coreModel) { + dispatch(new UpdateLp()); + return; + } + + // find the lp with its unique uuid + let lpData: LpResponse | null = null; + for (let ltp of coreModel.ltp) { + const lp = ltp.lp.find(pl => pl.uuid === lpId); + if (lp) { + lpData = lp; + break; + } + } + + // urn:onf:params:xml:ns:yang:microwave-model?module=microwave-model => microwave-model + let capability: string | null = lpData && getValueByName("capability", lpData.extension, null); + if (capability) { + const paramIndex = capability.indexOf('?'); + if (paramIndex > -1) { + capability = capability.slice(paramIndex+1); + } + const params = capability.split("&").map(p => (p || "=").split("=")); + const capParam = params.find(p => p[0] === "module") || null; + capability = capParam && capParam[1] || null; + } + + const revision: string | null = lpData && getValueByName("revision", lpData.extension, null); + const conditionalPackage: string | null = lpData && getValueByName("conditional-package", lpData.extension, null); + + dispatch(new UpdateLoading(true)); + const viewSpecifications = capability && await configurationService.getUIDescriptionByCapability(capability, revision) || []; + dispatch(new UpdateLoading(false)); + + return coreModel ? + dispatch(new UpdateLp(lpId, capability || undefined, conditionalPackage || undefined, viewSpecifications)) : + dispatch(new UpdateLp()); +} + +export const updateViewDataAsyncActionCreator = (viewId: string | undefined, indexValues: string[] = []) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => { + const { configuration: { nodeId, lpId, capability, conditionalPackage, viewSpecifications } } = getState(); + if (!viewId || !capability || !nodeId || !lpId || !conditionalPackage) { + dispatch(new AddSnackbarNotification({ message: `Error invalid parameter !${JSON.stringify({viewId ,capability ,nodeId ,lpId ,conditionalPackage}, null,2)}`, options: { variant: 'error' } })); + dispatch(new UpdateViewData()); + return; + } + + const viewSpecification = viewSpecifications.find(desc => desc.id === viewId); + if (!viewSpecification) { + dispatch(new AddSnackbarNotification({ message: `Error viewId ${viewId} not found !`, options: { variant: 'error' } })); + dispatch(new UpdateViewData()); + return; + } + + const url = viewSpecification.url.replace(/\$\$NODEID\$\$/g, nodeId).replace(/\$\$LPUUID\$\$/g, lpId); + + dispatch(new UpdateLoading(true)); + const data = capability && await configurationService.getViewData(url) || { }; + dispatch(new UpdateLoading(false)); + + let viewData: { [path: string]: {} } = data; + + const pathElements = viewSpecification.dataPath && + viewSpecification.dataPath.replace( + /\/\$\$INDEX:(\d+):?([a-z\-]+)?\$\$/ig, + (_, indexStr, keyStr) => { + const index = +indexStr; + return indexValues[index] && '/' + indexValues[index] || ''; + }).split("/") || []; + + for (let path of pathElements) { + if (path === "") { + break; + } + viewData = viewData[path]; + } + + return viewData ? + dispatch(new UpdateViewData(viewId, indexValues.length > 0 ? indexValues.join("/") : "", viewData)) : + dispatch(new UpdateViewData()); +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json b/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json new file mode 100644 index 000000000..5e0165e4f --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json @@ -0,0 +1,6678 @@ +{ + "module": "microwave-model", + "revision": "2017-03-24", + "views": [ + { + "id": "d1e2181", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$", + "dataPath": "", + "name": "mw-air-interface-pac", + "language": "en-US", + "title": "mw-air-interface-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "air-interface-capability", + "label": "air-interface-capability", + "uiType": "object", + "viewId": "d1e2199", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-configuration", + "label": "air-interface-configuration", + "uiType": "object", + "viewId": "d1e2212", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-status", + "label": "air-interface-status", + "uiType": "object", + "viewId": "d1e2223", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-current-problems", + "label": "air-interface-current-problems", + "uiType": "object", + "viewId": "d1e2237", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-current-performance", + "label": "air-interface-current-performance", + "uiType": "object", + "viewId": "d1e2250", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-historical-performances", + "label": "air-interface-historical-performances", + "uiType": "object", + "viewId": "d1e2263", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e2199", + "parentView": "d1e2181", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-capability", + "dataPath": "air-interface-capability", + "name": "air-interface-capability", + "language": "en-US", + "title": "air-interface-capability", + "elements": [ + { + "id": "type-of-equipment", + "label": "type-of-equipment", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware." + }, + { + "id": "tx-frequency-min", + "label": "tx-frequency-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum transmit frequency tunable at the air interface." + }, + { + "id": "tx-frequency-max", + "label": "tx-frequency-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum transmit frequency tunable at the air interface." + }, + { + "id": "rx-frequency-min", + "label": "rx-frequency-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum receive frequency tunable at the air interface." + }, + { + "id": "rx-frequency-max", + "label": "rx-frequency-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum receive frequency tunable at the air interface." + }, + { + "id": "adaptive-modulation-is-avail", + "label": "adaptive-modulation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is capable of adaptive modulation, this field shall contain a 'true'." + }, + { + "id": "mimo-is-avail", + "label": "mimo-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is capable of MIMO, this field shall contain a 'true'." + }, + { + "id": "mimo-channels", + "label": "mimo-channels", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "channels", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration." + }, + { + "id": "alic-is-avail", + "label": "alic-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'." + }, + { + "id": "atpc-is-avail", + "label": "atpc-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of ATPC, this field shall contain a 'true'." + }, + { + "id": "atpc-range", + "label": "atpc-range", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Extent of the ATPC range." + }, + { + "id": "encryption-is-avail", + "label": "encryption-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be marked 'true', if payload encryption is available." + }, + { + "id": "maintenance-timer-range", + "label": "maintenance-timer-range", + "uiType": "string", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "supported-loop-back-kind-list", + "label": "supported-loop-back-kind-list", + "uiType": "selection", + "options": [ + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of supported kinds of looping back of header information to the remote site." + }, + { + "id": "supported-channel-plan-list", + "label": "supported-channel-plan-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e2528", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of channel spacing that are supported by the device." + } + ], + "description": "none" + }, + { + "id": "d1e2528", + "parentView": "d1e2199", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-capability", + "dataPath": "air-interface-capability/supported-channel-plan-list/$$INDEX:0:supported-channel-plan$$", + "name": "supported-channel-plan-list", + "language": "en-US", + "title": "supported-channel-plan-list", + "elements": [ + { + "id": "supported-channel-plan", + "label": "supported-channel-plan", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database." + }, + { + "id": "duplex-distance-is-variable", + "label": "duplex-distance-is-variable", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "To be set on 'true', if the distance between transmitted and received frequency is variable." + }, + { + "id": "duplex-distance", + "label": "duplex-distance", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Distance between transmitted and received frequency." + }, + { + "id": "auto-freq-select-is-avail", + "label": "auto-freq-select-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'." + }, + { + "id": "transmission-mode-list", + "label": "transmission-mode-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e217", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "List of channel spacing that are supported by the device." + }, + { + "id": "d1e217", + "parentView": "d1e2528", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-capability", + "dataPath": "air-interface-capability/supported-channel-plan-list/$$INDEX:0:supported-channel-plan$$/transmission-mode-list/$$INDEX:1:transmission-mode-id$$", + "name": "transmission-mode-list", + "language": "en-US", + "title": "transmission-mode-list", + "elements": [ + { + "id": "transmission-mode-id", + "label": "transmission-mode-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indentifies the transmissionMode for internal reference." + }, + { + "id": "channel-bandwidth", + "label": "channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "modulation-scheme", + "label": "modulation-scheme", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256')." + }, + { + "id": "code-rate", + "label": "code-rate", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "%", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Code rate of the coding scheme in % (Net bit rate ? Gross bit rate ? code rate)." + }, + { + "id": "tx-power-min", + "label": "tx-power-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum transmit power the modem can operate in dBm." + }, + { + "id": "tx-power-max", + "label": "tx-power-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum transmit power the modem can operate in dBm." + }, + { + "id": "rx-threshold", + "label": "rx-threshold", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less." + }, + { + "id": "am-upshift-level", + "label": "am-upshift-level", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level that has to be exceeded to shift into a higher modulation scheme." + }, + { + "id": "am-downshift-level", + "label": "am-downshift-level", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme." + }, + { + "id": "xpic-is-avail", + "label": "xpic-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case." + } + ], + "description": "none" + }, + { + "id": "d1e2212", + "parentView": "d1e2181", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-configuration", + "dataPath": "air-interface-configuration", + "name": "air-interface-configuration", + "language": "en-US", + "title": "air-interface-configuration", + "elements": [ + { + "id": "air-interface-name", + "label": "air-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Operator specific microwave link ID (often used for coding area, type of element and sequential number)." + }, + { + "id": "radio-signal-id", + "label": "radio-signal-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check." + }, + { + "id": "tx-frequency", + "label": "tx-frequency", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable." + }, + { + "id": "rx-frequency", + "label": "rx-frequency", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the receive channel." + }, + { + "id": "tx-channel-bandwidth", + "label": "tx-channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "rx-channel-bandwidth", + "label": "rx-channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "polarization", + "label": "polarization", + "uiType": "selection", + "options": [ + { + "key": "not-specified", + "value": "not-specified", + "description": "none" + }, + { + "key": "horizontal", + "value": "horizontal", + "description": "none" + }, + { + "key": "vertical", + "value": "vertical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Allows documenting the polarization of the air interface." + }, + { + "id": "power-is-on", + "label": "power-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'." + }, + { + "id": "transmitter-is-on", + "label": "transmitter-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of the transmitter inside the radio shall be expressed as a 'true'." + }, + { + "id": "receiver-is-on", + "label": "receiver-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations." + }, + { + "id": "tx-power", + "label": "tx-power", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC." + }, + { + "id": "adaptive-modulation-is-on", + "label": "adaptive-modulation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'." + }, + { + "id": "modulation-min", + "label": "modulation-min", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "modulation-max", + "label": "modulation-max", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "xpic-is-on", + "label": "xpic-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'." + }, + { + "id": "mimo-is-on", + "label": "mimo-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'." + }, + { + "id": "alic-is-on", + "label": "alic-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'." + }, + { + "id": "atpc-is-on", + "label": "atpc-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'." + }, + { + "id": "atpc-thresh-upper", + "label": "atpc-thresh-upper", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power." + }, + { + "id": "atpc-thresh-lower", + "label": "atpc-thresh-lower", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power." + }, + { + "id": "auto-freq-select-is-on", + "label": "auto-freq-select-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'." + }, + { + "id": "auto-freq-select-range", + "label": "auto-freq-select-range", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "channels", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen." + }, + { + "id": "modulation-is-on", + "label": "modulation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'." + }, + { + "id": "encryption-is-on", + "label": "encryption-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activates encryption of the payload." + }, + { + "id": "cryptographic-key", + "label": "cryptographic-key", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Key for transforming plaintext into ciphertext data." + }, + { + "id": "loop-back-kind-on", + "label": "loop-back-kind-on", + "uiType": "selection", + "options": [ + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "maintenance-timer", + "label": "maintenance-timer", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e2931", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "d1e2931", + "parentView": "d1e2212", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-configuration", + "dataPath": "air-interface-configuration/problem-kind-severity-list/$$INDEX:0:problem-kind-name$$", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "d1e2223", + "parentView": "d1e2181", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-status", + "dataPath": "air-interface-status", + "name": "air-interface-status", + "language": "en-US", + "title": "air-interface-status", + "elements": [ + { + "id": "tx-frequency-cur", + "label": "tx-frequency-cur", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the currently operated transmit channel." + }, + { + "id": "rx-frequency-cur", + "label": "rx-frequency-cur", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the currently operated receive channel." + }, + { + "id": "tx-level-cur", + "label": "tx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current transmit level." + }, + { + "id": "rx-level-cur", + "label": "rx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current receive level." + }, + { + "id": "modulation-cur", + "label": "modulation-cur", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "code-rate-cur", + "label": "code-rate-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "%", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate)." + }, + { + "id": "snir-cur", + "label": "snir-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured signal to (noise+interference) ratio." + }, + { + "id": "xpd-cur", + "label": "xpd-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured cross polarization discrimination." + }, + { + "id": "rf-temp-cur", + "label": "rf-temp-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Air Interface entered its current operational status." + }, + { + "id": "radio-power-is-up", + "label": "radio-power-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the radio unit has power and is switched on, this shall be expressed as a 'true'." + }, + { + "id": "link-is-up", + "label": "link-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'." + }, + { + "id": "xpic-is-up", + "label": "xpic-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "mimo-is-up", + "label": "mimo-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "alic-is-up", + "label": "alic-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "atpc-is-up", + "label": "atpc-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "auto-freq-select-is-up", + "label": "auto-freq-select-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "loop-back-kind-up", + "label": "loop-back-kind-up", + "uiType": "selection", + "options": [ + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "local-end-point-id", + "label": "local-end-point-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link." + }, + { + "id": "remote-end-point-id", + "label": "remote-end-point-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link." + } + ], + "description": "none" + }, + { + "id": "d1e2237", + "parentView": "d1e2181", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-current-problems", + "dataPath": "air-interface-current-problems", + "name": "air-interface-current-problems", + "language": "en-US", + "title": "air-interface-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3286", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e3286", + "parentView": "d1e2237", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-current-problems", + "dataPath": "air-interface-current-problems/current-problem-list/$$INDEX:0:sequence-number$$", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "d1e2250", + "parentView": "d1e2181", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-current-performance", + "dataPath": "air-interface-current-performance", + "name": "air-interface-current-performance", + "language": "en-US", + "title": "air-interface-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3310", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "d1e3310", + "parentView": "d1e2250", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-current-performance", + "dataPath": "air-interface-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e1232", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "d1e1232", + "parentView": "d1e3310", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-current-performance", + "dataPath": "air-interface-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds." + }, + { + "id": "tx-level-min", + "label": "tx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmit power. Signed integers are required." + }, + { + "id": "tx-level-max", + "label": "tx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmit power. Signed integers are required." + }, + { + "id": "tx-level-avg", + "label": "tx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged transmit power. Signed integers are required." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. Signed integers are required." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. Signed integers are required." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. Signed integers are required." + }, + { + "id": "time2-states", + "label": "time2-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated in e.g. BPSK." + }, + { + "id": "time4-states-s", + "label": "time4-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4-states", + "label": "time4-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8-states", + "label": "time8-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states-s", + "label": "time16-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states", + "label": "time16-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time32-states", + "label": "time32-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time64-states", + "label": "time64-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time128-states", + "label": "time128-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time256-states", + "label": "time256-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states", + "label": "time512-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states-l", + "label": "time512-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states", + "label": "time1024-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states-l", + "label": "time1024-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states", + "label": "time2048-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states-l", + "label": "time2048-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states", + "label": "time4096-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states-l", + "label": "time4096-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states", + "label": "time8192-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states-l", + "label": "time8192-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged signal to (noise+interference) ratio." + }, + { + "id": "xpd-min", + "label": "xpd-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum cross polarization discrimination." + }, + { + "id": "xpd-max", + "label": "xpd-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum cross polarization discrimination." + }, + { + "id": "xpd-avg", + "label": "xpd-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged cross polarization discrimination." + }, + { + "id": "rf-temp-min", + "label": "rf-temp-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-max", + "label": "rf-temp-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-avg", + "label": "rf-temp-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "defect-blocks-sum", + "label": "defect-blocks-sum", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "blocks", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of blocks that were defect after receiving and could not be corrected by the FEC." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period." + } + ], + "description": "none" + }, + { + "id": "d1e2263", + "parentView": "d1e2181", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-historical-performances", + "dataPath": "air-interface-historical-performances", + "name": "air-interface-historical-performances", + "language": "en-US", + "title": "air-interface-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3339", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e3339", + "parentView": "d1e2263", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-historical-performances", + "dataPath": "air-interface-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e1256", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e1256", + "parentView": "d1e3339", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPUUID$$/air-interface-historical-performances", + "dataPath": "air-interface-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds." + }, + { + "id": "tx-level-min", + "label": "tx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmit power. Signed integers are required." + }, + { + "id": "tx-level-max", + "label": "tx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmit power. Signed integers are required." + }, + { + "id": "tx-level-avg", + "label": "tx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged transmit power. Signed integers are required." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. Signed integers are required." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. Signed integers are required." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. Signed integers are required." + }, + { + "id": "time2-states", + "label": "time2-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated in e.g. BPSK." + }, + { + "id": "time4-states-s", + "label": "time4-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4-states", + "label": "time4-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8-states", + "label": "time8-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states-s", + "label": "time16-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states", + "label": "time16-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time32-states", + "label": "time32-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time64-states", + "label": "time64-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time128-states", + "label": "time128-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time256-states", + "label": "time256-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states", + "label": "time512-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states-l", + "label": "time512-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states", + "label": "time1024-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states-l", + "label": "time1024-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states", + "label": "time2048-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states-l", + "label": "time2048-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states", + "label": "time4096-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states-l", + "label": "time4096-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states", + "label": "time8192-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states-l", + "label": "time8192-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged signal to (noise+interference) ratio." + }, + { + "id": "xpd-min", + "label": "xpd-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum cross polarization discrimination." + }, + { + "id": "xpd-max", + "label": "xpd-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum cross polarization discrimination." + }, + { + "id": "xpd-avg", + "label": "xpd-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged cross polarization discrimination." + }, + { + "id": "rf-temp-min", + "label": "rf-temp-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-max", + "label": "rf-temp-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-avg", + "label": "rf-temp-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "defect-blocks-sum", + "label": "defect-blocks-sum", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "blocks", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of blocks that were defect after receiving and could not be corrected by the FEC." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period." + } + ], + "description": "none" + }, + { + "id": "d1e3361", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:co-channel-group/$$INDEX:0:co-channel-group-id$$", + "dataPath": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:co-channel-group/$$INDEX:0:co-channel-group-id$$", + "name": "co-channel-group", + "language": "en-US", + "title": "co-channel-group", + "elements": [ + { + "id": "co-channel-group-id", + "label": "co-channel-group-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "sort-of-co-channel-group", + "label": "sort-of-co-channel-group", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';" + }, + { + "id": "air-interface-list", + "label": "air-interface-list", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group." + }, + { + "id": "logical-termination-point", + "label": "logical-termination-point", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e3435", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-hsb-end-point-pac/$$ENDPOINT$$", + "dataPath": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-hsb-end-point-pac/$$ENDPOINT$$", + "name": "mw-air-interface-hsb-end-point-pac", + "language": "en-US", + "title": "mw-air-interface-hsb-end-point-pac", + "elements": [ + { + "id": "role", + "label": "role", + "uiType": "selection", + "options": [ + { + "key": "working", + "value": "working", + "description": "none" + }, + { + "key": "protection", + "value": "protection", + "description": "none" + }, + { + "key": "protected", + "value": "protected", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "endpoint", + "label": "endpoint", + "uiType": "string", + "leafrefPath": "/core-model:forwarding-construct/core-model:fc-port/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC. The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point." + }, + { + "id": "d1e3474", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-hsb-fc-switch-pac/$$FCSWITCH$$", + "dataPath": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-hsb-fc-switch-pac/$$FCSWITCH$$", + "name": "mw-air-interface-hsb-fc-switch-pac", + "language": "en-US", + "title": "mw-air-interface-hsb-fc-switch-pac", + "elements": [ + { + "id": "prot-type", + "label": "prot-type", + "uiType": "selection", + "options": [ + { + "key": "hsb", + "value": "hsb", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indicates the protection scheme that is used for the ProtectionGroup." + }, + { + "id": "air-interface-hsb-configuration-is-faulty-severity", + "label": "air-interface-hsb-configuration-is-faulty-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration." + }, + { + "id": "air-interface-hsb-is-partly-down-severity", + "label": "air-interface-hsb-is-partly-down-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration." + }, + { + "id": "air-interface-hsb-is-down-severity", + "label": "air-interface-hsb-is-down-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The level of severity of the total HSB configuration being down shall be chosen from an enumeration." + }, + { + "id": "fcswitch", + "label": "fcswitch", + "uiType": "string", + "leafrefPath": "/core-model:forwarding-construct/core-model:fc-switch/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 ane 1:1). May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state." + }, + { + "id": "d1e3552", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$", + "dataPath": "", + "name": "mw-air-interface-diversity-pac", + "language": "en-US", + "title": "mw-air-interface-diversity-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "air-interface-diversity-capability", + "label": "air-interface-diversity-capability", + "uiType": "object", + "viewId": "d1e3570", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-configuration", + "label": "air-interface-diversity-configuration", + "uiType": "object", + "viewId": "d1e3583", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-status", + "label": "air-interface-diversity-status", + "uiType": "object", + "viewId": "d1e3594", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-current-problems", + "label": "air-interface-diversity-current-problems", + "uiType": "object", + "viewId": "d1e3608", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-current-performance", + "label": "air-interface-diversity-current-performance", + "uiType": "object", + "viewId": "d1e3621", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-historical-performances", + "label": "air-interface-diversity-historical-performances", + "uiType": "object", + "viewId": "d1e3634", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e3570", + "parentView": "d1e3552", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-capability", + "dataPath": "air-interface-diversity-capability", + "name": "air-interface-diversity-capability", + "language": "en-US", + "title": "air-interface-diversity-capability", + "elements": [ + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "available-kinds-of-diversity", + "label": "available-kinds-of-diversity", + "uiType": "list", + "listType": "object", + "viewId": "d1e3656", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available types of diversity to be listed." + } + ], + "description": "none" + }, + { + "id": "d1e3656", + "parentView": "d1e3570", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-capability", + "dataPath": "air-interface-diversity-capability/available-kinds-of-diversity/$$INDEX:0:diversity-name$$", + "name": "available-kinds-of-diversity", + "language": "en-US", + "title": "available-kinds-of-diversity", + "elements": [ + { + "id": "diversity-name", + "label": "diversity-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'" + }, + { + "id": "number-of-air-interfaces-max", + "label": "number-of-air-interfaces-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "air interfaces", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number of air interfaces that could be part of this kind of diversity." + } + ], + "description": "Available types of diversity to be listed." + }, + { + "id": "d1e3583", + "parentView": "d1e3552", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-configuration", + "dataPath": "air-interface-diversity-configuration", + "name": "air-interface-diversity-configuration", + "language": "en-US", + "title": "air-interface-diversity-configuration", + "elements": [ + { + "id": "air-interface-diversity", + "label": "air-interface-diversity", + "uiType": "object", + "viewId": "d1e3695", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of air interface diversity configured at the link." + }, + { + "id": "air-interface-ltp-list", + "label": "air-interface-ltp-list", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax" + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3722", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "d1e3695", + "parentView": "d1e3583", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-configuration", + "dataPath": "air-interface-diversity-configuration/air-interface-diversity", + "name": "air-interface-diversity", + "language": "en-US", + "title": "air-interface-diversity", + "elements": [ + { + "id": "diversity-name", + "label": "diversity-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'" + }, + { + "id": "number-of-air-interfaces-max", + "label": "number-of-air-interfaces-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "air interfaces", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number of air interfaces that could be part of this kind of diversity." + } + ], + "description": "Type of air interface diversity configured at the link." + }, + { + "id": "d1e3722", + "parentView": "d1e3583", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-configuration", + "dataPath": "air-interface-diversity-configuration/problem-kind-severity-list/$$INDEX:0:problem-kind-name$$", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "d1e3594", + "parentView": "d1e3552", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-status", + "dataPath": "air-interface-diversity-status", + "name": "air-interface-diversity-status", + "language": "en-US", + "title": "air-interface-diversity-status", + "elements": [ + { + "id": "snir-cur", + "label": "snir-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "air-interface-diversity-status", + "label": "air-interface-diversity-status", + "uiType": "selection", + "options": [ + { + "key": "group-down", + "value": "group-down", + "description": "All air interfaces that are members of the diversity configuration are down." + }, + { + "key": "not-all-ai-active", + "value": "not-all-ai-active", + "description": "At least one, but not all of the air interfaces that are part of the diversity configuration is not working." + }, + { + "key": "all-ai-active", + "value": "all-ai-active", + "description": "All air interfaces that are part of the diversity configuration are working." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of the air interface bundle." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Diversity Group entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "d1e3608", + "parentView": "d1e3552", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-current-problems", + "dataPath": "air-interface-diversity-current-problems", + "name": "air-interface-diversity-current-problems", + "language": "en-US", + "title": "air-interface-diversity-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3802", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e3802", + "parentView": "d1e3608", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-current-problems", + "dataPath": "air-interface-diversity-current-problems/current-problem-list/$$INDEX:0:sequence-number$$", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "d1e3621", + "parentView": "d1e3552", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-current-performance", + "dataPath": "air-interface-diversity-current-performance", + "name": "air-interface-diversity-current-performance", + "language": "en-US", + "title": "air-interface-diversity-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3827", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "d1e3827", + "parentView": "d1e3621", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-current-performance", + "dataPath": "air-interface-diversity-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e1542", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "d1e1542", + "parentView": "d1e3827", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-current-performance", + "dataPath": "air-interface-diversity-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Average signal to (noise+interference) ratio of the combined signals." + } + ], + "description": "none" + }, + { + "id": "d1e3634", + "parentView": "d1e3552", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-historical-performances", + "dataPath": "air-interface-diversity-historical-performances", + "name": "air-interface-diversity-historical-performances", + "language": "en-US", + "title": "air-interface-diversity-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e3856", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e3856", + "parentView": "d1e3634", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-historical-performances", + "dataPath": "air-interface-diversity-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e1566", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e1566", + "parentView": "d1e3856", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-diversity-pac/$$LPUUID$$/air-interface-diversity-historical-performances", + "dataPath": "air-interface-diversity-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Average signal to (noise+interference) ratio of the combined signals." + } + ], + "description": "none" + }, + { + "id": "d1e3878", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$", + "dataPath": "", + "name": "mw-pure-ethernet-structure-pac", + "language": "en-US", + "title": "mw-pure-ethernet-structure-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "pure-ethernet-structure-capability", + "label": "pure-ethernet-structure-capability", + "uiType": "object", + "viewId": "d1e3898", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-configuration", + "label": "pure-ethernet-structure-configuration", + "uiType": "object", + "viewId": "d1e3911", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-status", + "label": "pure-ethernet-structure-status", + "uiType": "object", + "viewId": "d1e3923", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-current-problems", + "label": "pure-ethernet-structure-current-problems", + "uiType": "object", + "viewId": "d1e3936", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-current-performance", + "label": "pure-ethernet-structure-current-performance", + "uiType": "object", + "viewId": "d1e3949", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-historical-performances", + "label": "pure-ethernet-structure-historical-performances", + "uiType": "object", + "viewId": "d1e3962", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only." + }, + { + "id": "d1e3898", + "parentView": "d1e3878", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-capability", + "dataPath": "pure-ethernet-structure-capability", + "name": "pure-ethernet-structure-capability", + "language": "en-US", + "title": "pure-ethernet-structure-capability", + "elements": [ + { + "id": "structure-id", + "label": "structure-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the Structure for bundling and container." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device." + } + ], + "description": "none" + }, + { + "id": "d1e3911", + "parentView": "d1e3878", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-configuration", + "dataPath": "pure-ethernet-structure-configuration", + "name": "pure-ethernet-structure-configuration", + "language": "en-US", + "title": "pure-ethernet-structure-configuration", + "elements": [ + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4021", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the type of problem to be configured." + } + ], + "description": "none" + }, + { + "id": "d1e4021", + "parentView": "d1e3911", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-configuration", + "dataPath": "pure-ethernet-structure-configuration/problem-kind-severity-list/$$INDEX:0:problem-kind-name$$", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the type of problem to be configured." + }, + { + "id": "d1e3923", + "parentView": "d1e3878", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-status", + "dataPath": "pure-ethernet-structure-status", + "name": "pure-ethernet-structure-status", + "language": "en-US", + "title": "pure-ethernet-structure-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the last update of the status information." + }, + { + "id": "segment-status-list", + "label": "segment-status-list", + "uiType": "object", + "viewId": "d1e4043", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of the Ethernet transport segment. Always just one segment." + } + ], + "description": "none" + }, + { + "id": "d1e4043", + "parentView": "d1e3923", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-status", + "dataPath": "pure-ethernet-structure-status/segment-status-list", + "name": "segment-status-list", + "language": "en-US", + "title": "segment-status-list", + "elements": [ + { + "id": "segment-status-type-id", + "label": "segment-status-type-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-is-reserved-for-tdm", + "label": "segment-is-reserved-for-tdm", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm." + }, + { + "id": "operational-status", + "label": "operational-status", + "uiType": "core-model:operational-state", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current operational status of each segment." + }, + { + "id": "obsolete-priority-class", + "label": "obsolete-priority-class", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank." + }, + { + "id": "obsolete-drop-order-rank", + "label": "obsolete-drop-order-rank", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. _unique: within Structure::StructureStatus::segmentStatusList" + } + ], + "description": "Status of the Ethernet transport segment. Always just one segment." + }, + { + "id": "d1e3936", + "parentView": "d1e3878", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-current-problems", + "dataPath": "pure-ethernet-structure-current-problems", + "name": "pure-ethernet-structure-current-problems", + "language": "en-US", + "title": "pure-ethernet-structure-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4081", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4081", + "parentView": "d1e3936", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-current-problems", + "dataPath": "pure-ethernet-structure-current-problems/current-problem-list/$$INDEX:0:sequence-number$$", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "d1e3949", + "parentView": "d1e3878", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-current-performance", + "dataPath": "pure-ethernet-structure-current-performance", + "name": "pure-ethernet-structure-current-performance", + "language": "en-US", + "title": "pure-ethernet-structure-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4105", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "d1e4105", + "parentView": "d1e3949", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-current-performance", + "dataPath": "pure-ethernet-structure-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "d1e3962", + "parentView": "d1e3878", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-historical-performances", + "dataPath": "pure-ethernet-structure-historical-performances", + "name": "pure-ethernet-structure-historical-performances", + "language": "en-US", + "title": "pure-ethernet-structure-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4134", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4134", + "parentView": "d1e3962", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-pure-ethernet-structure-pac/$$LPUUID$$/pure-ethernet-structure-historical-performances", + "dataPath": "pure-ethernet-structure-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4165", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$", + "dataPath": "", + "name": "mw-hybrid-mw-structure-pac", + "language": "en-US", + "title": "mw-hybrid-mw-structure-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "hybrid-mw-structure-capability", + "label": "hybrid-mw-structure-capability", + "uiType": "object", + "viewId": "d1e4185", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-configuration", + "label": "hybrid-mw-structure-configuration", + "uiType": "object", + "viewId": "d1e4198", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-status", + "label": "hybrid-mw-structure-status", + "uiType": "object", + "viewId": "d1e4210", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-current-problems", + "label": "hybrid-mw-structure-current-problems", + "uiType": "object", + "viewId": "d1e4223", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-current-performance", + "label": "hybrid-mw-structure-current-performance", + "uiType": "object", + "viewId": "d1e4236", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-historical-performances", + "label": "hybrid-mw-structure-historical-performances", + "uiType": "object", + "viewId": "d1e4249", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic." + }, + { + "id": "d1e4185", + "parentView": "d1e4165", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-capability", + "dataPath": "hybrid-mw-structure-capability", + "name": "hybrid-mw-structure-capability", + "language": "en-US", + "title": "hybrid-mw-structure-capability", + "elements": [ + { + "id": "structure-id", + "label": "structure-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the Structure for bundling and container." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device." + }, + { + "id": "supported-tdm-structure-types-list", + "label": "supported-tdm-structure-types-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4284", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the TDM frame types that are supported." + } + ], + "description": "none" + }, + { + "id": "d1e4284", + "parentView": "d1e4185", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-capability", + "dataPath": "hybrid-mw-structure-capability/supported-tdm-structure-types-list/$$INDEX:0:tdm-structure-name$$", + "name": "supported-tdm-structure-types-list", + "language": "en-US", + "title": "supported-tdm-structure-types-list", + "elements": [ + { + "id": "tdm-structure-name", + "label": "tdm-structure-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-segment-size", + "label": "tdm-segment-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + }, + { + "id": "max-number-of-segments-reservable", + "label": "max-number-of-segments-reservable", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "segments", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface." + } + ], + "description": "Lists the TDM frame types that are supported." + }, + { + "id": "d1e4198", + "parentView": "d1e4165", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-configuration", + "dataPath": "hybrid-mw-structure-configuration", + "name": "hybrid-mw-structure-configuration", + "language": "en-US", + "title": "hybrid-mw-structure-configuration", + "elements": [ + { + "id": "number-of-tdm-segments-to-be-reserved", + "label": "number-of-tdm-segments-to-be-reserved", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType" + }, + { + "id": "structure-type", + "label": "structure-type", + "uiType": "object", + "viewId": "d1e4326", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "TDM frame to be applied." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4350", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the type of problem to be configured." + } + ], + "description": "none" + }, + { + "id": "d1e4326", + "parentView": "d1e4198", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-configuration", + "dataPath": "hybrid-mw-structure-configuration/structure-type", + "name": "structure-type", + "language": "en-US", + "title": "structure-type", + "elements": [ + { + "id": "tdm-structure-name", + "label": "tdm-structure-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-segment-size", + "label": "tdm-segment-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + }, + { + "id": "max-number-of-segments-reservable", + "label": "max-number-of-segments-reservable", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "segments", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface." + } + ], + "description": "TDM frame to be applied." + }, + { + "id": "d1e4350", + "parentView": "d1e4198", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-configuration", + "dataPath": "hybrid-mw-structure-configuration/problem-kind-severity-list/$$INDEX:0:problem-kind-name$$", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the type of problem to be configured." + }, + { + "id": "d1e4210", + "parentView": "d1e4165", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-status", + "dataPath": "hybrid-mw-structure-status", + "name": "hybrid-mw-structure-status", + "language": "en-US", + "title": "hybrid-mw-structure-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the last update of the status information." + }, + { + "id": "segment-status-list", + "label": "segment-status-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4372", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1" + } + ], + "description": "none" + }, + { + "id": "d1e4372", + "parentView": "d1e4210", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-status", + "dataPath": "hybrid-mw-structure-status/segment-status-list/$$INDEX:0:segment-status-type-id$$", + "name": "segment-status-list", + "language": "en-US", + "title": "segment-status-list", + "elements": [ + { + "id": "segment-status-type-id", + "label": "segment-status-type-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-is-reserved-for-tdm", + "label": "segment-is-reserved-for-tdm", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm." + }, + { + "id": "operational-status", + "label": "operational-status", + "uiType": "core-model:operational-state", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current operational status of each segment." + }, + { + "id": "obsolete-priority-class", + "label": "obsolete-priority-class", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank." + }, + { + "id": "obsolete-drop-order-rank", + "label": "obsolete-drop-order-rank", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. _unique: within Structure::StructureStatus::segmentStatusList" + } + ], + "description": "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1" + }, + { + "id": "d1e4223", + "parentView": "d1e4165", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-current-problems", + "dataPath": "hybrid-mw-structure-current-problems", + "name": "hybrid-mw-structure-current-problems", + "language": "en-US", + "title": "hybrid-mw-structure-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4411", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4411", + "parentView": "d1e4223", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-current-problems", + "dataPath": "hybrid-mw-structure-current-problems/current-problem-list/$$INDEX:0:sequence-number$$", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "d1e4236", + "parentView": "d1e4165", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-current-performance", + "dataPath": "hybrid-mw-structure-current-performance", + "name": "hybrid-mw-structure-current-performance", + "language": "en-US", + "title": "hybrid-mw-structure-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4435", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "d1e4435", + "parentView": "d1e4236", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-current-performance", + "dataPath": "hybrid-mw-structure-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "d1e4249", + "parentView": "d1e4165", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-historical-performances", + "dataPath": "hybrid-mw-structure-historical-performances", + "name": "hybrid-mw-structure-historical-performances", + "language": "en-US", + "title": "hybrid-mw-structure-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4464", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4464", + "parentView": "d1e4249", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-hybrid-mw-structure-pac/$$LPUUID$$/hybrid-mw-structure-historical-performances", + "dataPath": "hybrid-mw-structure-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4496", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$", + "dataPath": "", + "name": "mw-ethernet-container-pac", + "language": "en-US", + "title": "mw-ethernet-container-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "ethernet-container-capability", + "label": "ethernet-container-capability", + "uiType": "object", + "viewId": "d1e4514", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-configuration", + "label": "ethernet-container-configuration", + "uiType": "object", + "viewId": "d1e4527", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-status", + "label": "ethernet-container-status", + "uiType": "object", + "viewId": "d1e4538", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-current-problems", + "label": "ethernet-container-current-problems", + "uiType": "object", + "viewId": "d1e4552", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-current-performance", + "label": "ethernet-container-current-performance", + "uiType": "object", + "viewId": "d1e4565", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-historical-performances", + "label": "ethernet-container-historical-performances", + "uiType": "object", + "viewId": "d1e4578", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4514", + "parentView": "d1e4496", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-capability", + "dataPath": "ethernet-container-capability", + "name": "ethernet-container-capability", + "language": "en-US", + "title": "ethernet-container-capability", + "elements": [ + { + "id": "bundling-is-avail", + "label": "bundling-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container." + }, + { + "id": "packet-compression-is-avail", + "label": "packet-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans." + }, + { + "id": "layer2-compression-is-avail", + "label": "layer2-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 2 available at the device." + }, + { + "id": "vlan-compression-is-avail", + "label": "vlan-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on VLAN layer available at the device." + }, + { + "id": "q-in-q-compression-is-avail", + "label": "q-in-q-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer of a second VLAN available at the device." + }, + { + "id": "mpls-compression-is-avail", + "label": "mpls-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on mpls layer available at the device." + }, + { + "id": "ipv4-compression-is-avail", + "label": "ipv4-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv4 available at the device." + }, + { + "id": "ipv6-compression-is-avail", + "label": "ipv6-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv6 available at the device." + }, + { + "id": "layer4-compression-is-avail", + "label": "layer4-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 4 (TCP and UDP header) available at the device." + }, + { + "id": "encryption-is-avail", + "label": "encryption-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be marked 'true', if Ethernet payload encryption is available." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device." + } + ], + "description": "none" + }, + { + "id": "d1e4527", + "parentView": "d1e4496", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-configuration", + "dataPath": "ethernet-container-configuration", + "name": "ethernet-container-configuration", + "language": "en-US", + "title": "ethernet-container-configuration", + "elements": [ + { + "id": "container-id", + "label": "container-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller." + }, + { + "id": "packet-compression-is-on", + "label": "packet-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum." + }, + { + "id": "layer2-compression-is-on", + "label": "layer2-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 2 configured at the device." + }, + { + "id": "vlan-compression-is-on", + "label": "vlan-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on VLAN layer configured at the device." + }, + { + "id": "q-in-q-compression-is-on", + "label": "q-in-q-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer of a second VLAN configured at the device." + }, + { + "id": "mpls-compression-is-on", + "label": "mpls-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on MPLS layer configured at the device." + }, + { + "id": "ipv4-compression-is-on", + "label": "ipv4-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv4 configured at the device." + }, + { + "id": "ipv6-compression-is-on", + "label": "ipv6-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv6 configured at the device." + }, + { + "id": "layer4-compression-is-on", + "label": "layer4-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 4 (TCP and UDP header) configured at the device." + }, + { + "id": "encryption-is-on", + "label": "encryption-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activates encryption of the Ethernet payload." + }, + { + "id": "cryptographic-key", + "label": "cryptographic-key", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Key for transforming plaintext into cipher text data." + }, + { + "id": "segments-id-list", + "label": "segments-id-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4789", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4936", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "d1e4789", + "parentView": "d1e4527", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-configuration", + "dataPath": "ethernet-container-configuration/segments-id-list/$$INDEX:0:structure-id-ref$$/$$INDEX:0:segment-id-ref$$", + "name": "segments-id-list", + "language": "en-US", + "title": "segments-id-list", + "elements": [ + { + "id": "structure-id-ref", + "label": "structure-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-id-ref", + "label": "segment-id-ref", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once." + } + ], + "description": "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list." + }, + { + "id": "d1e4936", + "parentView": "d1e4527", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-configuration", + "dataPath": "ethernet-container-configuration/problem-kind-severity-list/$$INDEX:0:problem-kind-name$$", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "d1e4538", + "parentView": "d1e4496", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-status", + "dataPath": "ethernet-container-status", + "name": "ethernet-container-status", + "language": "en-US", + "title": "ethernet-container-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Container entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "d1e4552", + "parentView": "d1e4496", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-current-problems", + "dataPath": "ethernet-container-current-problems", + "name": "ethernet-container-current-problems", + "language": "en-US", + "title": "ethernet-container-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e4984", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e4984", + "parentView": "d1e4552", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-current-problems", + "dataPath": "ethernet-container-current-problems/current-problem-list/$$INDEX:0:sequence-number$$", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "d1e4565", + "parentView": "d1e4496", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-current-performance", + "dataPath": "ethernet-container-current-performance", + "name": "ethernet-container-current-performance", + "language": "en-US", + "title": "ethernet-container-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5008", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e5008", + "parentView": "d1e4565", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-current-performance", + "dataPath": "ethernet-container-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e2135", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e2135", + "parentView": "d1e5008", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-current-performance", + "dataPath": "ethernet-container-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "none" + }, + { + "id": "d1e4578", + "parentView": "d1e4496", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-historical-performances", + "dataPath": "ethernet-container-historical-performances", + "name": "ethernet-container-historical-performances", + "language": "en-US", + "title": "ethernet-container-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5038", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e5038", + "parentView": "d1e4578", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-historical-performances", + "dataPath": "ethernet-container-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e2159", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e2159", + "parentView": "d1e5038", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-ethernet-container-pac/$$LPUUID$$/ethernet-container-historical-performances", + "dataPath": "ethernet-container-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "none" + }, + { + "id": "d1e5060", + "parentView": "", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$", + "dataPath": "", + "name": "mw-tdm-container-pac", + "language": "en-US", + "title": "mw-tdm-container-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "comment": "Please ignore this elements with field /leafrefPath/ for now.", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "tdm-container-capability", + "label": "tdm-container-capability", + "uiType": "object", + "viewId": "d1e5080", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-configuration", + "label": "tdm-container-configuration", + "uiType": "object", + "viewId": "d1e5093", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-status", + "label": "tdm-container-status", + "uiType": "object", + "viewId": "d1e5105", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-current-problems", + "label": "tdm-container-current-problems", + "uiType": "object", + "viewId": "d1e5118", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-current-performance", + "label": "tdm-container-current-performance", + "uiType": "object", + "viewId": "d1e5131", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-historical-performances", + "label": "tdm-container-historical-performances", + "uiType": "object", + "viewId": "d1e5144", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e5080", + "parentView": "d1e5060", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-capability", + "dataPath": "tdm-container-capability", + "name": "tdm-container-capability", + "language": "en-US", + "title": "tdm-container-capability", + "elements": [ + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device." + }, + { + "id": "supported-tdm-container-types-list", + "label": "supported-tdm-container-types-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5166", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the TDM containers that are supported." + } + ], + "description": "none" + }, + { + "id": "d1e5166", + "parentView": "d1e5080", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-capability", + "dataPath": "tdm-container-capability/supported-tdm-container-types-list/$$INDEX:0:tdm-container-name$$", + "name": "supported-tdm-container-types-list", + "language": "en-US", + "title": "supported-tdm-container-types-list", + "elements": [ + { + "id": "tdm-container-name", + "label": "tdm-container-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-container-size", + "label": "tdm-container-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + } + ], + "description": "Lists the TDM containers that are supported." + }, + { + "id": "d1e5093", + "parentView": "d1e5060", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-configuration", + "dataPath": "tdm-container-configuration", + "name": "tdm-container-configuration", + "language": "en-US", + "title": "tdm-container-configuration", + "elements": [ + { + "id": "container-id", + "label": "container-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller." + }, + { + "id": "container-type", + "label": "container-type", + "uiType": "object", + "viewId": "d1e5220", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of TDM container." + }, + { + "id": "segment-id", + "label": "segment-id", + "uiType": "object", + "viewId": "d1e5231", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;" + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5242", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "d1e5220", + "parentView": "d1e5093", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-configuration", + "dataPath": "tdm-container-configuration/container-type", + "name": "container-type", + "language": "en-US", + "title": "container-type", + "elements": [ + { + "id": "tdm-container-name", + "label": "tdm-container-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-container-size", + "label": "tdm-container-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + } + ], + "description": "Type of TDM container." + }, + { + "id": "d1e5231", + "parentView": "d1e5093", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-configuration", + "dataPath": "tdm-container-configuration/segment-id", + "name": "segment-id", + "language": "en-US", + "title": "segment-id", + "elements": [ + { + "id": "structure-id-ref", + "label": "structure-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-id-ref", + "label": "segment-id-ref", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once." + } + ], + "description": "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;" + }, + { + "id": "d1e5242", + "parentView": "d1e5093", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-configuration", + "dataPath": "tdm-container-configuration/problem-kind-severity-list/$$INDEX:0:problem-kind-name$$", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "d1e5105", + "parentView": "d1e5060", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-status", + "dataPath": "tdm-container-status", + "name": "tdm-container-status", + "language": "en-US", + "title": "tdm-container-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Container entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "d1e5118", + "parentView": "d1e5060", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-current-problems", + "dataPath": "tdm-container-current-problems", + "name": "tdm-container-current-problems", + "language": "en-US", + "title": "tdm-container-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5290", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e5290", + "parentView": "d1e5118", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-current-problems", + "dataPath": "tdm-container-current-problems/current-problem-list/$$INDEX:0:sequence-number$$", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "d1e5131", + "parentView": "d1e5060", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-current-performance", + "dataPath": "tdm-container-current-performance", + "name": "tdm-container-current-performance", + "language": "en-US", + "title": "tdm-container-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5315", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "d1e5315", + "parentView": "d1e5131", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-current-performance", + "dataPath": "tdm-container-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e2135", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "d1e2135", + "parentView": "d1e5315", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-current-performance", + "dataPath": "tdm-container-current-performance/current-performance-data-list/$$INDEX:0:scanner-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "none" + }, + { + "id": "d1e5144", + "parentView": "d1e5060", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-historical-performances", + "dataPath": "tdm-container-historical-performances", + "name": "tdm-container-historical-performances", + "language": "en-US", + "title": "tdm-container-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "d1e5344", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e5344", + "parentView": "d1e5144", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-historical-performances", + "dataPath": "tdm-container-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "d1e2159", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "d1e2159", + "parentView": "d1e5344", + "url": "restconf/operational/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-tdm-container-pac/$$LPUUID$$/tdm-container-historical-performances", + "dataPath": "tdm-container-historical-performances/historical-performance-data-list/$$INDEX:0:history-data-id$$/performance-data", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "none" + } + ] +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json.old b/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json.old new file mode 100644 index 000000000..4fbd8bf27 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json.old @@ -0,0 +1,19680 @@ +{ + "views": [ + { + "id": "microwave-model", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "microwave-model", + "language": "en-US", + "title": "microwave-model", + "elements": [ + { + "id": "mw-air-interface-pac", + "label": "mw-air-interface-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-air-interface-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "co-channel-group", + "label": "co-channel-group", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:co-channel-group", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "mw-air-interface-hsb-end-point-pac", + "label": "mw-air-interface-hsb-end-point-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-air-interface-hsb-end-point-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC. The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point." + }, + { + "id": "mw-air-interface-hsb-fc-switch-pac", + "label": "mw-air-interface-hsb-fc-switch-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-air-interface-hsb-fc-switch-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 ane 1:1). May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state." + }, + { + "id": "mw-air-interface-diversity-pac", + "label": "mw-air-interface-diversity-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "mw-pure-ethernet-structure-pac", + "label": "mw-pure-ethernet-structure-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only." + }, + { + "id": "mw-hybrid-mw-structure-pac", + "label": "mw-hybrid-mw-structure-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic." + }, + { + "id": "mw-ethernet-container-pac", + "label": "mw-ethernet-container-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "mw-tdm-container-pac", + "label": "mw-tdm-container-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mw-tdm-container-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The TdmContainer_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM traffic." + }, + { + "id": "wire-interface-pac", + "label": "wire-interface-pac", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-pac", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "This module contains a collection of YANG definitions for managing wireless networks. This model is for vendor agnostic management of wireless network elements." + }, + { + "id": "microwave-model:mw-air-interface-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-air-interface-pac", + "language": "en-US", + "title": "mw-air-interface-pac", + "url" :"restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPID$$/", + "path" :"", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "air-interface-capability", + "label": "air-interface-capability", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-pac:air-interface-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-configuration", + "label": "air-interface-configuration", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-pac:air-interface-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-status", + "label": "air-interface-status", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-pac:air-interface-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-current-problems", + "label": "air-interface-current-problems", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-pac:air-interface-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-current-performance", + "label": "air-interface-current-performance", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-pac:air-interface-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-historical-performances", + "label": "air-interface-historical-performances", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-pac:air-interface-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-pac:air-interface-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-capability", + "language": "en-US", + "title": "air-interface-capability", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPID$$/air-interface-capability", + "dataPath": "air-interface-capability", + "elements": [ + { + "id": "type-of-equipment", + "label": "type-of-equipment", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware." + }, + { + "id": "tx-frequency-min", + "label": "tx-frequency-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum transmit frequency tunable at the air interface." + }, + { + "id": "tx-frequency-max", + "label": "tx-frequency-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum transmit frequency tunable at the air interface." + }, + { + "id": "rx-frequency-min", + "label": "rx-frequency-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum receive frequency tunable at the air interface." + }, + { + "id": "rx-frequency-max", + "label": "rx-frequency-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum receive frequency tunable at the air interface." + }, + { + "id": "adaptive-modulation-is-avail", + "label": "adaptive-modulation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is capable of adaptive modulation, this field shall contain a 'true'." + }, + { + "id": "mimo-is-avail", + "label": "mimo-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is capable of MIMO, this field shall contain a 'true'." + }, + { + "id": "mimo-channels", + "label": "mimo-channels", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "channels", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration." + }, + { + "id": "alic-is-avail", + "label": "alic-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'." + }, + { + "id": "atpc-is-avail", + "label": "atpc-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of ATPC, this field shall contain a 'true'." + }, + { + "id": "atpc-range", + "label": "atpc-range", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Extent of the ATPC range. This value represents a device specific maximum value. The actual range of the ATPC at a specific link might be limited by the difference between configured transmit power (AirInterface::AirInterfaceConfiguration::txPower) and minimum transmit power of the device (TypeDefinitions::TransmissionModeType::txPowerMin)." + }, + { + "id": "encryption-is-avail", + "label": "encryption-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be marked 'true', if payload encryption is available." + }, + { + "id": "maintenance-timer-range", + "label": "maintenance-timer-range", + "uiType": "string", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "supported-loop-back-kind-list", + "label": "supported-loop-back-kind-list", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of supported kinds of looping back of header information to the remote site." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','signalIDMismatching','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the vendor." + }, + { + "id": "supported-channel-plan-list", + "label": "supported-channel-plan-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-capability-g:supported-channel-plan-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of channel spacing that are supported by the device." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-pac:air-interface-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-configuration", + "language": "en-US", + "title": "air-interface-configuration", + "elements": [ + { + "id": "air-interface-name", + "label": "air-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Operator specific microwave link ID (often used for coding area, type of element and sequential number)." + }, + { + "id": "remote-air-interface-name", + "label": "remote-air-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the air interface, which belongs to the same link, at the remote site." + }, + { + "id": "expected-signal-id", + "label": "expected-signal-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If set on '0', the receiver ignores the signal ID of the received signal. If set on any other value, the receiver exclusively synchronizes on signals with the same signal ID." + }, + { + "id": "transmitted-signal-id", + "label": "transmitted-signal-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmitted radio signal ID for synchronizing the receiver." + }, + { + "id": "radio-signal-id", + "label": "radio-signal-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check." + }, + { + "id": "tx-frequency", + "label": "tx-frequency", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable." + }, + { + "id": "rx-frequency", + "label": "rx-frequency", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the receive channel." + }, + { + "id": "transmission-mode-min", + "label": "transmission-mode-min", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmission mode to be configured (in case adaptive modulation is not used, this value represents also the fixed transmission mode)." + }, + { + "id": "transmission-mode-max", + "label": "transmission-mode-max", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmission mode to be configured." + }, + { + "id": "tx-channel-bandwidth", + "label": "tx-channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "rx-channel-bandwidth", + "label": "rx-channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "polarization", + "label": "polarization", + "uiType": "selection", + "options": [ + { + "key": "not-specified", + "value": "not-specified", + "description": "none" + }, + { + "key": "horizontal", + "value": "horizontal", + "description": "none" + }, + { + "key": "vertical", + "value": "vertical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Allows documenting the polarization of the air interface." + }, + { + "id": "power-is-on", + "label": "power-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'." + }, + { + "id": "transmitter-is-on", + "label": "transmitter-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of the transmitter inside the radio shall be expressed as a 'true'." + }, + { + "id": "receiver-is-on", + "label": "receiver-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations." + }, + { + "id": "tx-power", + "label": "tx-power", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC." + }, + { + "id": "adaptive-modulation-is-on", + "label": "adaptive-modulation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'." + }, + { + "id": "modulation-min", + "label": "modulation-min", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "modulation-max", + "label": "modulation-max", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "xpic-is-on", + "label": "xpic-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'." + }, + { + "id": "mimo-is-on", + "label": "mimo-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'." + }, + { + "id": "alic-is-on", + "label": "alic-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'." + }, + { + "id": "atpc-is-on", + "label": "atpc-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'." + }, + { + "id": "atpc-thresh-upper", + "label": "atpc-thresh-upper", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power." + }, + { + "id": "atpc-thresh-lower", + "label": "atpc-thresh-lower", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power." + }, + { + "id": "atpc-tx-power-min", + "label": "atpc-tx-power-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmit power, which is not to be undercut, while operating ATPC." + }, + { + "id": "auto-freq-select-is-on", + "label": "auto-freq-select-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'." + }, + { + "id": "auto-freq-select-range", + "label": "auto-freq-select-range", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "channels", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen." + }, + { + "id": "modulation-is-on", + "label": "modulation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'." + }, + { + "id": "encryption-is-on", + "label": "encryption-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activates encryption of the payload." + }, + { + "id": "cryptographic-key", + "label": "cryptographic-key", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Key for transforming plaintext into ciphertext data." + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "loop-back-kind-on", + "label": "loop-back-kind-on", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "maintenance-timer", + "label": "maintenance-timer", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange." + }, + { + "id": "threshold-cross-alarm-list", + "label": "threshold-cross-alarm-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-configuration-g:threshold-cross-alarm-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of threshold cross alarms to be configured." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-pac:air-interface-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-status", + "language": "en-US", + "title": "air-interface-status", + "elements": [ + { + "id": "tx-frequency-cur", + "label": "tx-frequency-cur", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the currently operated transmit channel." + }, + { + "id": "rx-frequency-cur", + "label": "rx-frequency-cur", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the currently operated receive channel." + }, + { + "id": "tx-level-cur", + "label": "tx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current transmit level." + }, + { + "id": "rx-level-cur", + "label": "rx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current receive level." + }, + { + "id": "transmission-mode-cur", + "label": "transmission-mode-cur", + "uiType": "string", + "leafrefPath": "/mw-air-interface-pac/air-interface-capability/supported-channel-plan-list/transmission-mode-list/transmission-mode-id", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently operated transmission mode according to definitions in Capabilities." + }, + { + "id": "modulation-cur", + "label": "modulation-cur", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "code-rate-cur", + "label": "code-rate-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "%", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate)." + }, + { + "id": "received-signal-id", + "label": "received-signal-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ID of the signal, which the receiver is currently synchronized on." + }, + { + "id": "snir-cur", + "label": "snir-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured signal to (noise+interference) ratio." + }, + { + "id": "xpd-cur", + "label": "xpd-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured cross polarization discrimination." + }, + { + "id": "rf-temp-cur", + "label": "rf-temp-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Air Interface entered its current operational status." + }, + { + "id": "radio-power-is-up", + "label": "radio-power-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the radio unit has power and is switched on, this shall be expressed as a 'true'." + }, + { + "id": "link-is-up", + "label": "link-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'." + }, + { + "id": "xpic-is-up", + "label": "xpic-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "mimo-is-up", + "label": "mimo-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "alic-is-up", + "label": "alic-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "atpc-is-up", + "label": "atpc-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "auto-freq-select-is-up", + "label": "auto-freq-select-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "loop-back-kind-up", + "label": "loop-back-kind-up", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "local-end-point-id", + "label": "local-end-point-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link." + }, + { + "id": "remote-end-point-id", + "label": "remote-end-point-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-pac:air-interface-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-current-problems", + "language": "en-US", + "title": "air-interface-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-pac:air-interface-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-current-performance", + "language": "en-US", + "title": "air-interface-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-pac:air-interface-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-historical-performances", + "language": "en-US", + "title": "air-interface-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:co-channel-group", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "co-channel-group", + "language": "en-US", + "title": "co-channel-group", + "elements": [ + { + "id": "co-channel-group-id", + "label": "co-channel-group-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "sort-of-co-channel-group", + "label": "sort-of-co-channel-group", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';" + }, + { + "id": "air-interface-list", + "label": "air-interface-list", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group." + }, + { + "id": "logical-termination-point", + "label": "logical-termination-point", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-hsb-end-point-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-air-interface-hsb-end-point-pac", + "language": "en-US", + "title": "mw-air-interface-hsb-end-point-pac", + "elements": [ + { + "id": "role", + "label": "role", + "uiType": "selection", + "options": [ + { + "key": "working", + "value": "working", + "description": "none" + }, + { + "key": "protection", + "value": "protection", + "description": "none" + }, + { + "key": "protected", + "value": "protected", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "endpoint", + "label": "endpoint", + "uiType": "string", + "leafrefPath": "/core-model:forwarding-construct/core-model:fc-port/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC. The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point." + }, + { + "id": "microwave-model:mw-air-interface-hsb-fc-switch-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-air-interface-hsb-fc-switch-pac", + "language": "en-US", + "title": "mw-air-interface-hsb-fc-switch-pac", + "elements": [ + { + "id": "prot-type", + "label": "prot-type", + "uiType": "selection", + "options": [ + { + "key": "hsb", + "value": "hsb", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indicates the protection scheme that is used for the ProtectionGroup." + }, + { + "id": "air-interface-hsb-configuration-is-faulty-severity", + "label": "air-interface-hsb-configuration-is-faulty-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration." + }, + { + "id": "air-interface-hsb-is-partly-down-severity", + "label": "air-interface-hsb-is-partly-down-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration." + }, + { + "id": "air-interface-hsb-is-down-severity", + "label": "air-interface-hsb-is-down-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The level of severity of the total HSB configuration being down shall be chosen from an enumeration." + }, + { + "id": "fcswitch", + "label": "fcswitch", + "uiType": "string", + "leafrefPath": "/core-model:forwarding-construct/core-model:fc-switch/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 ane 1:1). May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state." + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-air-interface-diversity-pac", + "language": "en-US", + "title": "mw-air-interface-diversity-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "air-interface-diversity-capability", + "label": "air-interface-diversity-capability", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-configuration", + "label": "air-interface-diversity-configuration", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-status", + "label": "air-interface-diversity-status", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-current-problems", + "label": "air-interface-diversity-current-problems", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-current-performance", + "label": "air-interface-diversity-current-performance", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-diversity-historical-performances", + "label": "air-interface-diversity-historical-performances", + "uiType": "object", + "viewId": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity-capability", + "language": "en-US", + "title": "air-interface-diversity-capability", + "elements": [ + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the vendor." + }, + { + "id": "available-kinds-of-diversity", + "label": "available-kinds-of-diversity", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-capability-g:available-kinds-of-diversity", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available types of diversity to be listed." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity-configuration", + "language": "en-US", + "title": "air-interface-diversity-configuration", + "elements": [ + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "air-interface-diversity", + "label": "air-interface-diversity", + "uiType": "object", + "viewId": "microwave-model:air-interface-diversity-configuration-g:air-interface-diversity", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of air interface diversity configured at the link." + }, + { + "id": "air-interface-ltp-list", + "label": "air-interface-ltp-list", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax" + }, + { + "id": "threshold-cross-alarm-list", + "label": "threshold-cross-alarm-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-configuration-g:threshold-cross-alarm-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of threshold cross alarms to be configured." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity-status", + "language": "en-US", + "title": "air-interface-diversity-status", + "elements": [ + { + "id": "snir-cur", + "label": "snir-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "air-interface-diversity-status", + "label": "air-interface-diversity-status", + "uiType": "selection", + "options": [ + { + "key": "group-down", + "value": "group-down", + "description": "All air interfaces that are members of the diversity configuration are down." + }, + { + "key": "not-all-ai-active", + "value": "not-all-ai-active", + "description": "At least one, but not all of the air interfaces that are part of the diversity configuration is not working." + }, + { + "key": "all-ai-active", + "value": "all-ai-active", + "description": "All air interfaces that are part of the diversity configuration are working." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of the air interface bundle." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Diversity Group entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity-current-problems", + "language": "en-US", + "title": "air-interface-diversity-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity-current-performance", + "language": "en-US", + "title": "air-interface-diversity-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-air-interface-diversity-pac:air-interface-diversity-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity-historical-performances", + "language": "en-US", + "title": "air-interface-diversity-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-pure-ethernet-structure-pac", + "language": "en-US", + "title": "mw-pure-ethernet-structure-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "pure-ethernet-structure-capability", + "label": "pure-ethernet-structure-capability", + "uiType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-configuration", + "label": "pure-ethernet-structure-configuration", + "uiType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-status", + "label": "pure-ethernet-structure-status", + "uiType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-current-problems", + "label": "pure-ethernet-structure-current-problems", + "uiType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-current-performance", + "label": "pure-ethernet-structure-current-performance", + "uiType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "pure-ethernet-structure-historical-performances", + "label": "pure-ethernet-structure-historical-performances", + "uiType": "object", + "viewId": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only." + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "pure-ethernet-structure-capability", + "language": "en-US", + "title": "pure-ethernet-structure-capability", + "elements": [ + { + "id": "structure-id", + "label": "structure-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the Structure for bundling and container." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the vendor." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "pure-ethernet-structure-configuration", + "language": "en-US", + "title": "pure-ethernet-structure-configuration", + "elements": [ + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the type of problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "pure-ethernet-structure-status", + "language": "en-US", + "title": "pure-ethernet-structure-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the last update of the status information." + }, + { + "id": "segment-status-list", + "label": "segment-status-list", + "uiType": "object", + "viewId": "microwave-model:pure-ethernet-structure-status-g:segment-status-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of the Ethernet transport segment. Always just one segment." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "pure-ethernet-structure-current-problems", + "language": "en-US", + "title": "pure-ethernet-structure-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "pure-ethernet-structure-current-performance", + "language": "en-US", + "title": "pure-ethernet-structure-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-pure-ethernet-structure-pac:pure-ethernet-structure-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "pure-ethernet-structure-historical-performances", + "language": "en-US", + "title": "pure-ethernet-structure-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-hybrid-mw-structure-pac", + "language": "en-US", + "title": "mw-hybrid-mw-structure-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "hybrid-mw-structure-capability", + "label": "hybrid-mw-structure-capability", + "uiType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-configuration", + "label": "hybrid-mw-structure-configuration", + "uiType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-status", + "label": "hybrid-mw-structure-status", + "uiType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-current-problems", + "label": "hybrid-mw-structure-current-problems", + "uiType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-current-performance", + "label": "hybrid-mw-structure-current-performance", + "uiType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "hybrid-mw-structure-historical-performances", + "label": "hybrid-mw-structure-historical-performances", + "uiType": "object", + "viewId": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic." + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "hybrid-mw-structure-capability", + "language": "en-US", + "title": "hybrid-mw-structure-capability", + "elements": [ + { + "id": "structure-id", + "label": "structure-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the Structure for bundling and container." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the vendor." + }, + { + "id": "supported-tdm-structure-types-list", + "label": "supported-tdm-structure-types-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-capability-g:supported-tdm-structure-types-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the TDM frame types that are supported." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "hybrid-mw-structure-configuration", + "language": "en-US", + "title": "hybrid-mw-structure-configuration", + "elements": [ + { + "id": "number-of-tdm-segments-to-be-reserved", + "label": "number-of-tdm-segments-to-be-reserved", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType" + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "structure-kind", + "label": "structure-kind", + "uiType": "object", + "viewId": "microwave-model:hybrid-mw-structure-configuration-g:structure-kind", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "TDM frame to be applied." + }, + { + "id": "structure-type", + "label": "structure-type", + "uiType": "object", + "viewId": "microwave-model:hybrid-mw-structure-configuration-g:structure-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "TDM frame to be applied." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the type of problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "hybrid-mw-structure-status", + "language": "en-US", + "title": "hybrid-mw-structure-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the last update of the status information." + }, + { + "id": "segment-status-list", + "label": "segment-status-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-status-g:segment-status-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "hybrid-mw-structure-current-problems", + "language": "en-US", + "title": "hybrid-mw-structure-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "hybrid-mw-structure-current-performance", + "language": "en-US", + "title": "hybrid-mw-structure-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-hybrid-mw-structure-pac:hybrid-mw-structure-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "hybrid-mw-structure-historical-performances", + "language": "en-US", + "title": "hybrid-mw-structure-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-ethernet-container-pac", + "language": "en-US", + "title": "mw-ethernet-container-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "ethernet-container-capability", + "label": "ethernet-container-capability", + "uiType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac:ethernet-container-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-configuration", + "label": "ethernet-container-configuration", + "uiType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac:ethernet-container-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-status", + "label": "ethernet-container-status", + "uiType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac:ethernet-container-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-current-problems", + "label": "ethernet-container-current-problems", + "uiType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac:ethernet-container-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-current-performance", + "label": "ethernet-container-current-performance", + "uiType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac:ethernet-container-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "ethernet-container-historical-performances", + "label": "ethernet-container-historical-performances", + "uiType": "object", + "viewId": "microwave-model:mw-ethernet-container-pac:ethernet-container-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac:ethernet-container-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "ethernet-container-capability", + "language": "en-US", + "title": "ethernet-container-capability", + "elements": [ + { + "id": "bundling-is-avail", + "label": "bundling-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container." + }, + { + "id": "packet-compression-is-avail", + "label": "packet-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans." + }, + { + "id": "layer2-compression-is-avail", + "label": "layer2-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 2 available at the device." + }, + { + "id": "vlan-compression-is-avail", + "label": "vlan-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on VLAN layer available at the device." + }, + { + "id": "q-in-q-compression-is-avail", + "label": "q-in-q-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer of a second VLAN available at the device." + }, + { + "id": "mpls-compression-is-avail", + "label": "mpls-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on mpls layer available at the device." + }, + { + "id": "ipv4-compression-is-avail", + "label": "ipv4-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv4 available at the device." + }, + { + "id": "ipv6-compression-is-avail", + "label": "ipv6-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv6 available at the device." + }, + { + "id": "layer4-compression-is-avail", + "label": "layer4-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 4 (TCP and UDP header) available at the device." + }, + { + "id": "encryption-is-avail", + "label": "encryption-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be marked 'true', if Ethernet payload encryption is available." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the vendor." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac:ethernet-container-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "ethernet-container-configuration", + "language": "en-US", + "title": "ethernet-container-configuration", + "elements": [ + { + "id": "container-id", + "label": "container-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller." + }, + { + "id": "packet-compression-is-on", + "label": "packet-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum." + }, + { + "id": "layer2-compression-is-on", + "label": "layer2-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 2 configured at the device." + }, + { + "id": "vlan-compression-is-on", + "label": "vlan-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on VLAN layer configured at the device." + }, + { + "id": "q-in-q-compression-is-on", + "label": "q-in-q-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer of a second VLAN configured at the device." + }, + { + "id": "mpls-compression-is-on", + "label": "mpls-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on MPLS layer configured at the device." + }, + { + "id": "ipv4-compression-is-on", + "label": "ipv4-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv4 configured at the device." + }, + { + "id": "ipv6-compression-is-on", + "label": "ipv6-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv6 configured at the device." + }, + { + "id": "layer4-compression-is-on", + "label": "layer4-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 4 (TCP and UDP header) configured at the device." + }, + { + "id": "encryption-is-on", + "label": "encryption-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activates encryption of the Ethernet payload." + }, + { + "id": "cryptographic-key", + "label": "cryptographic-key", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Key for transforming plaintext into cipher text data." + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "segments-id-list", + "label": "segments-id-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-configuration-g:segments-id-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac:ethernet-container-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "ethernet-container-status", + "language": "en-US", + "title": "ethernet-container-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Container entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac:ethernet-container-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "ethernet-container-current-problems", + "language": "en-US", + "title": "ethernet-container-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac:ethernet-container-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "ethernet-container-current-performance", + "language": "en-US", + "title": "ethernet-container-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-ethernet-container-pac:ethernet-container-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "ethernet-container-historical-performances", + "language": "en-US", + "title": "ethernet-container-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-tdm-container-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "mw-tdm-container-pac", + "language": "en-US", + "title": "mw-tdm-container-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "tdm-container-capability", + "label": "tdm-container-capability", + "uiType": "object", + "viewId": "microwave-model:mw-tdm-container-pac:tdm-container-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-configuration", + "label": "tdm-container-configuration", + "uiType": "object", + "viewId": "microwave-model:mw-tdm-container-pac:tdm-container-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-status", + "label": "tdm-container-status", + "uiType": "object", + "viewId": "microwave-model:mw-tdm-container-pac:tdm-container-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-current-problems", + "label": "tdm-container-current-problems", + "uiType": "object", + "viewId": "microwave-model:mw-tdm-container-pac:tdm-container-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-current-performance", + "label": "tdm-container-current-performance", + "uiType": "object", + "viewId": "microwave-model:mw-tdm-container-pac:tdm-container-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "tdm-container-historical-performances", + "label": "tdm-container-historical-performances", + "uiType": "object", + "viewId": "microwave-model:mw-tdm-container-pac:tdm-container-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "The TdmContainer_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM traffic." + }, + { + "id": "microwave-model:mw-tdm-container-pac:tdm-container-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "tdm-container-capability", + "language": "en-US", + "title": "tdm-container-capability", + "elements": [ + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the vendor." + }, + { + "id": "supported-tdm-container-types-list", + "label": "supported-tdm-container-types-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-capability-g:supported-tdm-container-types-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the TDM containers that are supported." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-tdm-container-pac:tdm-container-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "tdm-container-configuration", + "language": "en-US", + "title": "tdm-container-configuration", + "elements": [ + { + "id": "container-id", + "label": "container-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller." + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "container-type", + "label": "container-type", + "uiType": "object", + "viewId": "microwave-model:tdm-container-configuration-g:container-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of TDM container." + }, + { + "id": "segment-id", + "label": "segment-id", + "uiType": "object", + "viewId": "microwave-model:tdm-container-configuration-g:segment-id", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;" + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-tdm-container-pac:tdm-container-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "tdm-container-status", + "language": "en-US", + "title": "tdm-container-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Container entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-tdm-container-pac:tdm-container-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "tdm-container-current-problems", + "language": "en-US", + "title": "tdm-container-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-tdm-container-pac:tdm-container-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "tdm-container-current-performance", + "language": "en-US", + "title": "tdm-container-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-tdm-container-pac:tdm-container-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "tdm-container-historical-performances", + "language": "en-US", + "title": "tdm-container-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wire-interface-pac", + "language": "en-US", + "title": "wire-interface-pac", + "elements": [ + { + "id": "layer-protocol", + "label": "layer-protocol", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid" + }, + { + "id": "wirebased-interface-capability", + "label": "wirebased-interface-capability", + "uiType": "object", + "viewId": "microwave-model:wire-interface-pac:wirebased-interface-capability", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "wirebased-interface-configuration", + "label": "wirebased-interface-configuration", + "uiType": "object", + "viewId": "microwave-model:wire-interface-pac:wirebased-interface-configuration", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "wirebased-interface-status", + "label": "wirebased-interface-status", + "uiType": "object", + "viewId": "microwave-model:wire-interface-pac:wirebased-interface-status", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "wirebased-interface-current-problems", + "label": "wirebased-interface-current-problems", + "uiType": "object", + "viewId": "microwave-model:wire-interface-pac:wirebased-interface-current-problems", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "wirebased-interface-current-performance", + "label": "wirebased-interface-current-performance", + "uiType": "object", + "viewId": "microwave-model:wire-interface-pac:wirebased-interface-current-performance", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "wirebased-interface-historical-performances", + "label": "wirebased-interface-historical-performances", + "uiType": "object", + "viewId": "microwave-model:wire-interface-pac:wirebased-interface-historical-performances", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac:wirebased-interface-capability", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wirebased-interface-capability", + "language": "en-US", + "title": "wirebased-interface-capability", + "elements": [ + { + "id": "auto-pmd-negotiation-is-avail", + "label": "auto-pmd-negotiation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 1 = Indicates that device is supporting Auto-negotiation" + }, + { + "id": "auto-pmd-negotiation-max-is-avail", + "label": "auto-pmd-negotiation-max-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Indicates that device is supporting definition of the maximum speed/Medium Attached Unit (MAU) automatically chosen when (autoNegotiationIsOn=1)" + }, + { + "id": "maintenance-timer-range", + "label": "maintenance-timer-range", + "uiType": "string", + "unit": "Byte", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "MW IM Available time periods for maintenance configurations (e.g. the loop back) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')." + }, + { + "id": "supported-loop-back-kind-list", + "label": "supported-loop-back-kind-list", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of supported kinds of looping back of header information to the remote site. 802.3 45.2.1.12.1 PMA remote loopback ability" + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'txFault', 'rxLos', 'tempHigh', 'tempLow', 'rxLevelHigh', 'rxLevelLow'. Optional:'vccHigh', 'vccLow', 'txBiasHigh', 'txBiasLow', 'txPowerHigh', 'txPowerLow', 'laserTempHigh', 'laserTempLow', 'tecCurrentHigh', 'tecCurrentLow'. Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "available-mau-list", + "label": "available-mau-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-capability-g:available-mau-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of Medium Attachment Units (MAUs) that are available for being selected. If rate and service configuration (e.g. SFF-8079) are not supported, the MAU determined by hardware shall be described." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac:wirebased-interface-configuration", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wirebased-interface-configuration", + "language": "en-US", + "title": "wirebased-interface-configuration", + "elements": [ + { + "id": "wire-interface-name", + "label": "wire-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Text field for the wire interface being named by the operator. Ideally used for entering unique numbers or names for unambiguously identifying the connection within the network Parameter" + }, + { + "id": "remote-wire-interface-name", + "label": "remote-wire-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Learning from MW IM Text field for defining the wire interface this one is connected with. Ideally used for entering unique numbers or names for unambiguously identifying the connection within the network" + }, + { + "id": "interface-is-on", + "label": "interface-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Activation of the interface (it gets powered and can be managed even if the transceiver is not yet transmitting or receiving). In case there is no Medium Attachment Unit (MAU) (e.g. no SFP in the cage) SETting (interfaceIsOn=1) must be ignored and GETing must return (interfaceIsOn=0) 802.3 according 30.3.2.2.1 acPhyAdminControl" + }, + { + "id": "auto-pmd-negotiation-is-on", + "label": "auto-pmd-negotiation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 1 = Auto-negotiation is switched on" + }, + { + "id": "fixed-pmd", + "label": "fixed-pmd", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If (autoPmdNegotiationIsOn=0) configuration of the concrete kind of Physical Medium Dependent (PMD). If (autoNegotiationIsOn=1) value of this field becomes irrelevant" + }, + { + "id": "auto-pmd-negotiation-max", + "label": "auto-pmd-negotiation-max", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter If (autoNegotiationIsOn=1) AND (autoNegotiationMauMaxIsAvail=1) configuration of the maximum speed/Physical Medium Dependent (PMD), which is automatically chosen by Auto-negotiation" + }, + { + "id": "auto-signal-ordering-is-on", + "label": "auto-signal-ordering-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = e.g. auto-MDI-X is switched on" + }, + { + "id": "fixed-signal-ordering", + "label": "fixed-signal-ordering", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If (autoSignalOrderingIsOn=0) configuration of the concrete kind of signal ordering on the media (e.g. MDI, or MDI-X). If (autoSignalOrderingIsOn=1) value of this field becomes irrelevant" + }, + { + "id": "short-reach-mode-is-on", + "label": "short-reach-mode-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of the Short Reach Mode for 10GBASE-T according to 802.3 45.2.1.64" + }, + { + "id": "unidirectional-operation-is-on", + "label": "unidirectional-operation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If (autoNegotiationIsOn=1) OR manualDuplexSelection=0 (=half duplex), this bit is ignored. When autoNegotiationIsOn=0 AND manualDuplexSelection=1 (=full duplex): 1 = Enable transmit from media independent interface regardless of whether the PHY has determined that a valid link has been established, 0 = Enable transmit from media independent interface only when the PHY has determined that a valid link has been established 802.3 Parameter" + }, + { + "id": "temperature-high-threshold", + "label": "temperature-high-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming high temperature values. Will move to somewhere in the Physical Segment of the Core IM" + }, + { + "id": "temperature-low-threshold", + "label": "temperature-low-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming low temperature values. Will move to somewhere in the Physical Segment of the Core IM" + }, + { + "id": "rxlevel-high-threshold", + "label": "rxlevel-high-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming high RX levels." + }, + { + "id": "rxlevel-low-threshold", + "label": "rxlevel-low-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming low RX levels." + }, + { + "id": "loop-back-kind-on", + "label": "loop-back-kind-on", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 802.3 according 22.2.4.1.2 Loopback Maintenance Feature. The currently configured type of looping back of the wire interface header shall be expressed here. The received header is returned to the remote site. Activation of local loopback mode on physical layer" + }, + { + "id": "isolation-is-on", + "label": "isolation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Activation of the separation of the PHY from higher network layers 802.3" + }, + { + "id": "restart-pmd-negotiation-is-on", + "label": "restart-pmd-negotiation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Restarts the auto negotiation process 802.3" + }, + { + "id": "reset-mau-is-on", + "label": "reset-mau-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 Resets the entire Medium Access Unit (MAU)" + }, + { + "id": "maintenance-timer", + "label": "maintenance-timer", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter and MW IM Time of existence of any maintenance configuration (e.g. the loop back). Valid values are defined in WireInterface::WireInterfaceCapability::maintenanceTimerRange" + }, + { + "id": "transceiver-is-on-list", + "label": "transceiver-is-on-list", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 22.?.? and additionally 802.3 45.2.1.8 PMD transmit disable register (Register 1.9) 1 = Activation of the transmitter and receiver (e.g. laser) of the PHY; transceiverIsOnList[0]:total interface; transceiverIsOnList[1..10] different lanes of a multilane Medium Attachment Unit (MAU)" + }, + { + "id": "wavelength-list", + "label": "wavelength-list", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Wavelength of the signal of laser in pico meter; multiplicity=0..3 for 10GBASE-LX4 according to 802.3 53.5 SFF-8690" + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac:wirebased-interface-status", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wirebased-interface-status", + "language": "en-US", + "title": "wirebased-interface-status", + "elements": [ + { + "id": "interface-is-up", + "label": "interface-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according 30.3.2.1.7 aPhyAdminState 1 = A Physical layer entity (PHY) exists (including Medium Attachment Unit (e.g. SFP) ) and it is powered and can be managed" + }, + { + "id": "pmd-is-up", + "label": "pmd-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Inverse of 802.3 45.2.1.2.3 Fault (1.1.7) If (interfaceIsUp=1) BUT 0 = there is a fault in either transmit or receive path" + }, + { + "id": "pmd-cur", + "label": "pmd-cur", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indicates the kind of Physical Medium Dependent (PMD) currently operated at this interface" + }, + { + "id": "eee-is-up", + "label": "eee-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Energy Efficient Ethernet is supported at both ends of the link and it is activated" + }, + { + "id": "link-is-up", + "label": "link-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 1 = (transceiverIsUp=1) AND communication is established to the remote site" + }, + { + "id": "link-is-idle", + "label": "link-is-idle", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = (linkIsUp=1) AND (eeeIsAvail=1) AND (eeeIsOn=1) AND link is currently in idle mode. If Energy Efficient Ethernet is not supported or switched off, this attribute must be 0." + }, + { + "id": "tx-level-cur", + "label": "tx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current transmit power" + }, + { + "id": "temp-cur", + "label": "temp-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current temperature (in degree Celsius) inside the transceiver To be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::DynamicDetails::PhysicalProperties" + }, + { + "id": "loop-back-kind-up", + "label": "loop-back-kind-up", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Paramter and MW IM The currently active (not just configured) type of looping back of the wire interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "signal-ordering-kind-cur", + "label": "signal-ordering-kind-cur", + "uiType": "object", + "viewId": "microwave-model:wire-interface-status-g:signal-ordering-kind-cur", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Reference on a SignalOrderingType for expressing the currently active way of ordering the signals on the physical medium. Must contain a value as defined in TypeDefinitions::SignalOrderingType::signalOrderingKindName" + }, + { + "id": "receive-signal-is-detected", + "label": "receive-signal-is-detected", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 45.2.1.9 PMD receive signal detect 1 = Receiver (e.g. laser) detects signal; receiveSignalIsDetected[0]:total interface; receiveSignalIsDetected[1..10] different lanes of a multilane Medium Attachment Unit (MAU)" + }, + { + "id": "rx-level-cur", + "label": "rx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current receive power; Also used for receive signal power measured at the Medium Dependent Interface (MDI) of 10GBASE-T during training as described in 802.3 55.4.3.1" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac:wirebased-interface-current-problems", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wirebased-interface-current-problems", + "language": "en-US", + "title": "wirebased-interface-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac:wirebased-interface-current-performance", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wirebased-interface-current-performance", + "language": "en-US", + "title": "wirebased-interface-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-pac:wirebased-interface-historical-performances", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "wirebased-interface-historical-performances", + "language": "en-US", + "title": "wirebased-interface-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:channel-plan-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-capability-g", + "object": "supported-channel-plan-list", + "name": "channel-plan-type", + "language": "en-US", + "title": "channel-plan-type", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPID$$/air-interface-capability", + "dataPath": "air-interface-capability/supported-channel-plan-list/$$INDEX0$$", + "elements": [ + { + "id": "supported-channel-plan", + "label": "supported-channel-plan", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database." + }, + { + "id": "duplex-distance-is-variable", + "label": "duplex-distance-is-variable", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "To be set on 'true', if the distance between transmitted and received frequency is variable." + }, + { + "id": "duplex-distance-list", + "label": "duplex-distance-list", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Distance between transmitted and received frequency. To be filled with single value, in case duplex distance is not variable. To be filled with all configurable values, in case duplex distance is variable." + }, + { + "id": "duplex-distance", + "label": "duplex-distance", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Distance between transmitted and received frequency." + }, + { + "id": "auto-freq-select-is-avail", + "label": "auto-freq-select-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'." + }, + { + "id": "transmission-mode-list", + "label": "transmission-mode-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:channel-plan-type-g:transmission-mode-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:channel-plan-type-g:transmission-mode-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "transmission-mode-list", + "language": "en-US", + "title": "transmission-mode-list", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPID$$/air-interface-capability", + "dataPath": "air-interface-capability/supported-channel-plan-list/$$INDEX0$$/transmission-mode-list/$$INDEX1$$", + "elements": [ + { + "id": "transmission-mode-id", + "label": "transmission-mode-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indentifies the transmissionMode for internal reference." + }, + { + "id": "transmission-mode-name", + "label": "transmission-mode-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the transmission mode. BBBB-m*-i*/t*-r*. B=four digits of channel bandwidth in MHz. m*=required number of digits for modulation name. (i*/t*=code rate.) i*=required number of digits for number of information bits. t*=required number of digits for total bits. r*=required number of digits for rate reduction factor. Example: 028-4QAM-188/204-1" + }, + { + "id": "channel-bandwidth", + "label": "channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "modulation-scheme", + "label": "modulation-scheme", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256')." + }, + { + "id": "code-rate", + "label": "code-rate", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "%", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Code rate of the coding scheme in % (Net bit rate ≤ Gross bit rate · code rate)." + }, + { + "id": "symbol-rate-reduction-factor", + "label": "symbol-rate-reduction-factor", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Reduction factor for the symbol rate. Example: value would be 4 for 1/4BPSK." + }, + { + "id": "tx-power-min", + "label": "tx-power-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum transmit power the modem can operate in dBm." + }, + { + "id": "tx-power-max", + "label": "tx-power-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum transmit power the modem can operate in dBm." + }, + { + "id": "rx-threshold", + "label": "rx-threshold", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less." + }, + { + "id": "am-upshift-level", + "label": "am-upshift-level", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level that has to be exceeded to shift into a higher modulation scheme." + }, + { + "id": "am-downshift-level", + "label": "am-downshift-level", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme." + }, + { + "id": "xpic-is-avail", + "label": "xpic-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case." + } + ], + "description": "none" + }, + { + "id": "microwave-model:transmission-mode-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "channel-plan-type-g", + "object": "transmission-mode-list", + "name": "transmission-mode-type", + "language": "en-US", + "title": "transmission-mode-type", + "elements": [ + { + "id": "transmission-mode-id", + "label": "transmission-mode-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indentifies the transmissionMode for internal reference." + }, + { + "id": "transmission-mode-name", + "label": "transmission-mode-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the transmission mode. BBBB-m*-i*/t*-r*. B=four digits of channel bandwidth in MHz. m*=required number of digits for modulation name. (i*/t*=code rate.) i*=required number of digits for number of information bits. t*=required number of digits for total bits. r*=required number of digits for rate reduction factor. Example: 028-4QAM-188/204-1" + }, + { + "id": "channel-bandwidth", + "label": "channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "modulation-scheme", + "label": "modulation-scheme", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256')." + }, + { + "id": "code-rate", + "label": "code-rate", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "%", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Code rate of the coding scheme in % (Net bit rate ≤ Gross bit rate · code rate)." + }, + { + "id": "symbol-rate-reduction-factor", + "label": "symbol-rate-reduction-factor", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Reduction factor for the symbol rate. Example: value would be 4 for 1/4BPSK." + }, + { + "id": "tx-power-min", + "label": "tx-power-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum transmit power the modem can operate in dBm." + }, + { + "id": "tx-power-max", + "label": "tx-power-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum transmit power the modem can operate in dBm." + }, + { + "id": "rx-threshold", + "label": "rx-threshold", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less." + }, + { + "id": "am-upshift-level", + "label": "am-upshift-level", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level that has to be exceeded to shift into a higher modulation scheme." + }, + { + "id": "am-downshift-level", + "label": "am-downshift-level", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme." + }, + { + "id": "xpic-is-avail", + "label": "xpic-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case." + } + ], + "description": "none" + }, + { + "id": "microwave-model:threshold-cross-alarm-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-configuration-g", + "object": "threshold-cross-alarm-list", + "name": "threshold-cross-alarm-type", + "language": "en-US", + "title": "threshold-cross-alarm-type", + "elements": [ + { + "id": "g826-value-kind", + "label": "g826-value-kind", + "uiType": "selection", + "options": [ + { + "key": "es", + "value": "es", + "description": "Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::es ." + }, + { + "key": "ses", + "value": "ses", + "description": "Severely Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::ses ." + }, + { + "key": "cses", + "value": "cses", + "description": "Consecutive Severely Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::cses ." + }, + { + "key": "not-specified", + "value": "not-specified", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of performance value that shall be equipped with a threshold alarm." + }, + { + "id": "granularity-period", + "label": "granularity-period", + "uiType": "g:granularity-period-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Period of the performance data collection." + }, + { + "id": "alarm-raising-threshold", + "label": "alarm-raising-threshold", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of events required for raising the threshold cross alarm." + }, + { + "id": "alarm-clearing-threshold", + "label": "alarm-clearing-threshold", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of events required for clearing the threshold cross alarm." + } + ], + "description": "Allows defining a threshold cross alarm." + }, + { + "id": "microwave-model:air-interface-problem-severity-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-configuration-g", + "object": "problem-kind-severity-list", + "name": "air-interface-problem-severity-type", + "language": "en-US", + "title": "air-interface-problem-severity-type", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-current-problem-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-current-problems-g", + "object": "current-problem-list", + "name": "air-interface-current-problem-type", + "language": "en-US", + "title": "air-interface-current-problem-type", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:time-x-states-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-performance-type-g", + "object": "time-x-states-list", + "name": "time-x-states-type", + "language": "en-US", + "title": "time-x-states-type", + "elements": [ + { + "id": "transmission-mode", + "label": "transmission-mode", + "uiType": "string", + "leafrefPath": "/mw-air-interface-pac/air-interface-capability/supported-channel-plan-list/transmission-mode-list/transmission-mode-id", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Operated transmission mode." + }, + { + "id": "time", + "label": "time", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated the transmission mode." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-current-performance-type-g", + "object": "performance-data", + "name": "air-interface-performance-type", + "language": "en-US", + "title": "air-interface-performance-type", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds." + }, + { + "id": "tx-level-min", + "label": "tx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmit power. Signed integers are required." + }, + { + "id": "tx-level-max", + "label": "tx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmit power. Signed integers are required." + }, + { + "id": "tx-level-avg", + "label": "tx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged transmit power. Signed integers are required." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. Signed integers are required." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. Signed integers are required." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. Signed integers are required." + }, + { + "id": "time-x-states-list", + "label": "time-x-states-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-performance-type-g:time-x-states-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time period the transmitter operated in the respective transmission mode." + }, + { + "id": "time2-states", + "label": "time2-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated in e.g. BPSK." + }, + { + "id": "time4-states-s", + "label": "time4-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4-states", + "label": "time4-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8-states", + "label": "time8-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states-s", + "label": "time16-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states", + "label": "time16-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time32-states", + "label": "time32-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time64-states", + "label": "time64-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time128-states", + "label": "time128-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time256-states", + "label": "time256-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states", + "label": "time512-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states-l", + "label": "time512-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states", + "label": "time1024-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states-l", + "label": "time1024-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states", + "label": "time2048-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states-l", + "label": "time2048-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states", + "label": "time4096-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states-l", + "label": "time4096-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states", + "label": "time8192-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states-l", + "label": "time8192-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged signal to (noise+interference) ratio." + }, + { + "id": "xpd-min", + "label": "xpd-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum cross polarization discrimination." + }, + { + "id": "xpd-max", + "label": "xpd-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum cross polarization discrimination." + }, + { + "id": "xpd-avg", + "label": "xpd-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged cross polarization discrimination." + }, + { + "id": "rf-temp-min", + "label": "rf-temp-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-max", + "label": "rf-temp-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-avg", + "label": "rf-temp-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "defect-blocks-sum", + "label": "defect-blocks-sum", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "blocks", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of blocks that were defect after receiving and could not be corrected by the FEC." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period." + } + ], + "description": "Consolidated performance information of the air interface." + }, + { + "id": "microwave-model:air-interface-performance-type-g:time-x-states-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "time-x-states-list", + "language": "en-US", + "title": "time-x-states-list", + "elements": [ + { + "id": "transmission-mode", + "label": "transmission-mode", + "uiType": "string", + "leafrefPath": "/mw-air-interface-pac/air-interface-capability/supported-channel-plan-list/transmission-mode-list/transmission-mode-id", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Operated transmission mode." + }, + { + "id": "time", + "label": "time", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated the transmission mode." + } + ], + "description": "Time period the transmitter operated in the respective transmission mode." + }, + { + "id": "microwave-model:air-interface-current-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-current-performance-g", + "object": "current-performance-data-list", + "name": "air-interface-current-performance-type", + "language": "en-US", + "title": "air-interface-current-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into current performance information by inheriting from OTN_CurrentData." + }, + { + "id": "microwave-model:air-interface-current-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds." + }, + { + "id": "tx-level-min", + "label": "tx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmit power. Signed integers are required." + }, + { + "id": "tx-level-max", + "label": "tx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmit power. Signed integers are required." + }, + { + "id": "tx-level-avg", + "label": "tx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged transmit power. Signed integers are required." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. Signed integers are required." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. Signed integers are required." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. Signed integers are required." + }, + { + "id": "time2-states", + "label": "time2-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated in e.g. BPSK." + }, + { + "id": "time4-states-s", + "label": "time4-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4-states", + "label": "time4-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8-states", + "label": "time8-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states-s", + "label": "time16-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states", + "label": "time16-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time32-states", + "label": "time32-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time64-states", + "label": "time64-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time128-states", + "label": "time128-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time256-states", + "label": "time256-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states", + "label": "time512-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states-l", + "label": "time512-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states", + "label": "time1024-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states-l", + "label": "time1024-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states", + "label": "time2048-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states-l", + "label": "time2048-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states", + "label": "time4096-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states-l", + "label": "time4096-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states", + "label": "time8192-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states-l", + "label": "time8192-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged signal to (noise+interference) ratio." + }, + { + "id": "xpd-min", + "label": "xpd-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum cross polarization discrimination." + }, + { + "id": "xpd-max", + "label": "xpd-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum cross polarization discrimination." + }, + { + "id": "xpd-avg", + "label": "xpd-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged cross polarization discrimination." + }, + { + "id": "rf-temp-min", + "label": "rf-temp-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-max", + "label": "rf-temp-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-avg", + "label": "rf-temp-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "defect-blocks-sum", + "label": "defect-blocks-sum", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "blocks", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of blocks that were defect after receiving and could not be corrected by the FEC." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period." + }, + { + "id": "time-x-states-list", + "label": "time-x-states-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-performance-type-g:time-x-states-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time period the transmitter operated in the respective transmission mode." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-historical-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-historical-performances-g", + "object": "historical-performance-data-list", + "name": "air-interface-historical-performance-type", + "language": "en-US", + "title": "air-interface-historical-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into historical performance information by inheriting from OTN_HistoryData." + }, + { + "id": "microwave-model:air-interface-historical-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds." + }, + { + "id": "tx-level-min", + "label": "tx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmit power. Signed integers are required." + }, + { + "id": "tx-level-max", + "label": "tx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmit power. Signed integers are required." + }, + { + "id": "tx-level-avg", + "label": "tx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged transmit power. Signed integers are required." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. Signed integers are required." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. Signed integers are required." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. Signed integers are required." + }, + { + "id": "time2-states", + "label": "time2-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Sum of all seconds the transmitter operated in e.g. BPSK." + }, + { + "id": "time4-states-s", + "label": "time4-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4-states", + "label": "time4-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8-states", + "label": "time8-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states-s", + "label": "time16-states-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time16-states", + "label": "time16-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time32-states", + "label": "time32-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time64-states", + "label": "time64-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time128-states", + "label": "time128-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time256-states", + "label": "time256-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states", + "label": "time512-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time512-states-l", + "label": "time512-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states", + "label": "time1024-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time1024-states-l", + "label": "time1024-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states", + "label": "time2048-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time2048-states-l", + "label": "time2048-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states", + "label": "time4096-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time4096-states-l", + "label": "time4096-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states", + "label": "time8192-states", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "time8192-states-l", + "label": "time8192-states-l", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged signal to (noise+interference) ratio." + }, + { + "id": "xpd-min", + "label": "xpd-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum cross polarization discrimination." + }, + { + "id": "xpd-max", + "label": "xpd-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum cross polarization discrimination." + }, + { + "id": "xpd-avg", + "label": "xpd-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged cross polarization discrimination." + }, + { + "id": "rf-temp-min", + "label": "rf-temp-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-max", + "label": "rf-temp-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "rf-temp-avg", + "label": "rf-temp-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "C", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "defect-blocks-sum", + "label": "defect-blocks-sum", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "blocks", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of blocks that were defect after receiving and could not be corrected by the FEC." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period." + }, + { + "id": "time-x-states-list", + "label": "time-x-states-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-performance-type-g:time-x-states-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time period the transmitter operated in the respective transmission mode." + } + ], + "description": "none" + }, + { + "id": "microwave-model:diversity-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-diversity-capability-g", + "object": "available-kinds-of-diversity", + "name": "diversity-type", + "language": "en-US", + "title": "diversity-type", + "elements": [ + { + "id": "diversity-name", + "label": "diversity-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'" + }, + { + "id": "number-of-air-interfaces-max", + "label": "number-of-air-interfaces-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "air interfaces", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number of air interfaces that could be part of this kind of diversity." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-problem-severity-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-diversity-configuration-g", + "object": "problem-kind-severity-list", + "name": "air-interface-diversity-problem-severity-type", + "language": "en-US", + "title": "air-interface-diversity-problem-severity-type", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-current-problem-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-diversity-current-problems-g", + "object": "current-problem-list", + "name": "air-interface-diversity-current-problem-type", + "language": "en-US", + "title": "air-interface-diversity-current-problem-type", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-diversity-current-performance-type-g", + "object": "performance-data", + "name": "air-interface-diversity-performance-type", + "language": "en-US", + "title": "air-interface-diversity-performance-type", + "elements": [ + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Average signal to (noise+interference) ratio of the combined signals." + } + ], + "description": "Consolidated performance information of the air interface diversity group." + }, + { + "id": "microwave-model:air-interface-diversity-current-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-diversity-current-performance-g", + "object": "current-performance-data-list", + "name": "air-interface-diversity-current-performance-type", + "language": "en-US", + "title": "air-interface-diversity-current-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-diversity-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into current performance information by inheriting from OTN_CurrentData." + }, + { + "id": "microwave-model:air-interface-diversity-current-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Average signal to (noise+interference) ratio of the combined signals." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-historical-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "air-interface-diversity-historical-performances-g", + "object": "historical-performance-data-list", + "name": "air-interface-diversity-historical-performance-type", + "language": "en-US", + "title": "air-interface-diversity-historical-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-diversity-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into historical performance information by inheriting from OTN_HistoryData." + }, + { + "id": "microwave-model:air-interface-diversity-historical-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "snir-min", + "label": "snir-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-max", + "label": "snir-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "snir-avg", + "label": "snir-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Average signal to (noise+interference) ratio of the combined signals." + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-structure-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "hybrid-mw-structure-capability-g", + "object": "supported-tdm-structure-types-list", + "name": "tdm-structure-type", + "language": "en-US", + "title": "tdm-structure-type", + "elements": [ + { + "id": "tdm-structure-name", + "label": "tdm-structure-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-segment-size", + "label": "tdm-segment-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + }, + { + "id": "max-number-of-segments-reservable", + "label": "max-number-of-segments-reservable", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "segments", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface." + } + ], + "description": "none" + }, + { + "id": "microwave-model:structure-problem-severity-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "pure-ethernet-structure-configuration-g", + "object": "problem-kind-severity-list", + "name": "structure-problem-severity-type", + "language": "en-US", + "title": "structure-problem-severity-type", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:structure-current-problem-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "pure-ethernet-structure-current-problems-g", + "object": "current-problem-list", + "name": "structure-current-problem-type", + "language": "en-US", + "title": "structure-current-problem-type", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:structure-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "structure-current-performance-type-g", + "object": "performance-data", + "name": "structure-performance-type", + "language": "en-US", + "title": "structure-performance-type", + "elements": [ + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + }, + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + } + ], + "description": "Consolidated performance information of the Structure." + }, + { + "id": "microwave-model:structure-current-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "pure-ethernet-structure-current-performance-g", + "object": "current-performance-data-list", + "name": "structure-current-performance-type", + "language": "en-US", + "title": "structure-current-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:structure-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into current performance information by inheriting from OTN_CurrentData." + }, + { + "id": "microwave-model:structure-current-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + }, + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + } + ], + "description": "none" + }, + { + "id": "microwave-model:structure-historical-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "pure-ethernet-structure-historical-performances-g", + "object": "historical-performance-data-list", + "name": "structure-historical-performance-type", + "language": "en-US", + "title": "structure-historical-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:structure-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into historical performance information by inheriting from OTN_HistoryData." + }, + { + "id": "microwave-model:structure-historical-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + }, + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of severely errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "cses", + "label": "cses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of consecutive severely errored seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "unavailability", + "label": "unavailability", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total time of unavailability in seconds. 1+0: Same value as for single air interface. 1+1 and Diversity: Value representing the combined signals." + }, + { + "id": "rx-level-min", + "label": "rx-level-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + }, + { + "id": "rx-level-max", + "label": "rx-level-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + }, + { + "id": "rx-level-avg", + "label": "rx-level-avg", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Averaged receive level. 1+0: Same value as for single air interface. 1+1: Value representing the combined signals. Diversity: To be left on default value." + } + ], + "description": "none" + }, + { + "id": "microwave-model:container-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "container-type", + "language": "en-US", + "title": "container-type", + "elements": [ + { + "id": "container-name", + "label": "container-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'ethernet','e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "number-of-time-slots-required", + "label": "number-of-time-slots-required", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "timeslots", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of time slots required for transporting this type of container. Value must be calculated by the vendor after defining the timeSlotCapacity. For containers of fixed size: numberOfTimeSlotsRequired = required bandwidth of the container divided by timeSlotCapacity. For containers of variable size the minimum (most probably 1) is to be stated." + }, + { + "id": "tdm-time-slots-is-required", + "label": "tdm-time-slots-is-required", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be set to '1', if this container type requires bandwidth (times slots) reserved for TDM transport." + }, + { + "id": "bundling-is-avail", + "label": "bundling-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If it is possible to combine transport resources of several radio links to transport this container type, this attribute shall be set to '1'." + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-container-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "tdm-container-capability-g", + "object": "supported-tdm-container-types-list", + "name": "tdm-container-type", + "language": "en-US", + "title": "tdm-container-type", + "elements": [ + { + "id": "tdm-container-name", + "label": "tdm-container-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-container-size", + "label": "tdm-container-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + } + ], + "description": "none" + }, + { + "id": "microwave-model:segment-id-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "ethernet-container-configuration-g", + "object": "segments-id-list", + "name": "segment-id-type", + "language": "en-US", + "title": "segment-id-type", + "elements": [ + { + "id": "structure-id-ref", + "label": "structure-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-id-ref", + "label": "segment-id-ref", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once." + } + ], + "description": "Identifies the segments, which are used to transport the container." + }, + { + "id": "microwave-model:segment-status-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "pure-ethernet-structure-status-g", + "object": "segment-status-list", + "name": "segment-status-type", + "language": "en-US", + "title": "segment-status-type", + "elements": [ + { + "id": "segment-status-type-id", + "label": "segment-status-type-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-is-reserved-for-tdm", + "label": "segment-is-reserved-for-tdm", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm." + }, + { + "id": "operational-status", + "label": "operational-status", + "uiType": "core-model:operational-state", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current operational status of each segment." + }, + { + "id": "obsolete-priority-class", + "label": "obsolete-priority-class", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank." + }, + { + "id": "obsolete-drop-order-rank", + "label": "obsolete-drop-order-rank", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. _unique: within Structure::StructureStatus::segmentStatusList" + } + ], + "description": "none" + }, + { + "id": "microwave-model:container-problem-severity-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "ethernet-container-configuration-g", + "object": "problem-kind-severity-list", + "name": "container-problem-severity-type", + "language": "en-US", + "title": "container-problem-severity-type", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:container-current-problem-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "ethernet-container-current-problems-g", + "object": "current-problem-list", + "name": "container-current-problem-type", + "language": "en-US", + "title": "container-current-problem-type", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:container-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "container-current-performance-type-g", + "object": "performance-data", + "name": "container-performance-type", + "language": "en-US", + "title": "container-performance-type", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "Consolidated performance information of the Container." + }, + { + "id": "microwave-model:container-current-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "ethernet-container-current-performance-g", + "object": "current-performance-data-list", + "name": "container-current-performance-type", + "language": "en-US", + "title": "container-current-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:container-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into current performance information by inheriting from OTN_CurrentData." + }, + { + "id": "microwave-model:container-current-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "none" + }, + { + "id": "microwave-model:container-historical-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "ethernet-container-historical-performances-g", + "object": "historical-performance-data-list", + "name": "container-historical-performance-type", + "language": "en-US", + "title": "container-historical-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:container-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into historical performance information by inheriting from OTN_HistoryData." + }, + { + "id": "microwave-model:container-historical-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "tx-ethernet-bytes-max-s", + "label": "tx-ethernet-bytes-max-s", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "Bytes/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-max-m", + "label": "tx-ethernet-bytes-max-m", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes/min", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "tx-ethernet-bytes-sum", + "label": "tx-ethernet-bytes-sum", + "uiType": "number", + "min": -9223372036854776000, + "max": 9223372036854776000, + "format": "#", + "unit": "Bytes", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers." + }, + { + "id": "time-period", + "label": "time-period", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Total length of the measurement period in seconds." + } + ], + "description": "none" + }, + { + "id": "microwave-model:signal-ordering-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mau-type-g", + "object": "signal-ordering-list", + "name": "signal-ordering-type", + "language": "en-US", + "title": "signal-ordering-type", + "elements": [ + { + "id": "signal-ordering-kind-name", + "label": "signal-ordering-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "To be filled according to TR-541. Must be unique for referencing during configuration of the interface." + }, + { + "id": "signal-list", + "label": "signal-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Desciption of the signals on the Media Dependent Interface (MDI), might be e.g. 'TX+' in case of e.g. 10BASE-T, might be e.g. '1,295.56 nm' in case of e.g. 100GBASE-LR4" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mau-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-capability-g", + "object": "available-mau-list", + "name": "mau-type", + "language": "en-US", + "title": "mau-type", + "elements": [ + { + "id": "mau-id", + "label": "mau-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according to 30.5.1.1.1 aMAUID Unique identifier of the Medium Attachment Unit (MAU) instance within the data about the device" + }, + { + "id": "mii-kind", + "label": "mii-kind", + "uiType": "selection", + "options": [ + { + "key": "gbic", + "value": "gbic", + "description": "none" + }, + { + "key": "soldered-connector", + "value": "soldered-connector", + "description": "none" + }, + { + "key": "sfp-sfp-plus-sfp28", + "value": "sfp-sfp-plus-sfp28", + "description": "none" + }, + { + "key": "xbi-300-pin", + "value": "xbi-300-pin", + "description": "none" + }, + { + "key": "xenpak", + "value": "xenpak", + "description": "none" + }, + { + "key": "xfp", + "value": "xfp", + "description": "none" + }, + { + "key": "xfp-e", + "value": "xfp-e", + "description": "none" + }, + { + "key": "xpak", + "value": "xpak", + "description": "none" + }, + { + "key": "x2", + "value": "x2", + "description": "none" + }, + { + "key": "dwdm-sfp-sfp-plus", + "value": "dwdm-sfp-sfp-plus", + "description": "none" + }, + { + "key": "qsfp", + "value": "qsfp", + "description": "none" + }, + { + "key": "qsfp-plus", + "value": "qsfp-plus", + "description": "none" + }, + { + "key": "cxp", + "value": "cxp", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-4-x", + "value": "shielded-mini-multilane-hd-4-x", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-8-x", + "value": "shielded-mini-multilane-hd-8-x", + "description": "none" + }, + { + "key": "qsfp28", + "value": "qsfp28", + "description": "none" + }, + { + "key": "cxp2", + "value": "cxp2", + "description": "none" + }, + { + "key": "cdfp-style1-style2", + "value": "cdfp-style1-style2", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-4-x-fan-out", + "value": "shielded-mini-multilane-hd-4-x-fan-out", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-8-x-fan-out", + "value": "shielded-mini-multilane-hd-8-x-fan-out", + "description": "none" + }, + { + "key": "cdfp-style3", + "value": "cdfp-style3", + "description": "none" + }, + { + "key": "qsfp-micro", + "value": "qsfp-micro", + "description": "none" + }, + { + "key": "qsfp-dd", + "value": "qsfp-dd", + "description": "none" + }, + { + "key": "qsfp-plus-rate-select-v1", + "value": "qsfp-plus-rate-select-v1", + "description": "none" + }, + { + "key": "qsfp-plus-rate-select-v2", + "value": "qsfp-plus-rate-select-v2", + "description": "none" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "SFF8472_SFF8636 Kind of Medium Independent Interface (MII) provided by this Medium Attachment Unit (MAU) (e.g. SFP, moldered port)" + }, + { + "id": "mdi-kind", + "label": "mdi-kind", + "uiType": "selection", + "options": [ + { + "key": "sc", + "value": "sc", + "description": "Subscriber Connector" + }, + { + "key": "fibre-channel-style-1", + "value": "fibre-channel-style-1", + "description": "Copper connector" + }, + { + "key": "fibre-channel-style-2", + "value": "fibre-channel-style-2", + "description": "Copper connector" + }, + { + "key": "bnc-tnc", + "value": "bnc-tnc", + "description": "Bayonet/Threaded Neill-Concelman" + }, + { + "key": "fc", + "value": "fc", + "description": "Fibre Channel coax headers" + }, + { + "key": "fiber-jack", + "value": "fiber-jack", + "description": "none" + }, + { + "key": "lc", + "value": "lc", + "description": "Lucent Connector" + }, + { + "key": "mt-rj", + "value": "mt-rj", + "description": "Mechanical Transfer - Registered Jack" + }, + { + "key": "mu", + "value": "mu", + "description": "Multiple Optical" + }, + { + "key": "sg", + "value": "sg", + "description": "none" + }, + { + "key": "optical-pigtail", + "value": "optical-pigtail", + "description": "none" + }, + { + "key": "mpo1-x12", + "value": "mpo1-x12", + "description": "Multifiber Parallel Optic" + }, + { + "key": "mpo2-x16", + "value": "mpo2-x16", + "description": "Multifiber Parallel Optic" + }, + { + "key": "hssdc-ii", + "value": "hssdc-ii", + "description": "High Speed Serial Data Connector" + }, + { + "key": "copper-pigtail", + "value": "copper-pigtail", + "description": "none" + }, + { + "key": "rj45", + "value": "rj45", + "description": "8P8C, according to Clause 3 and Figures 1 through 5 of IEC 60603-7" + }, + { + "key": "no-seperable-connector", + "value": "no-seperable-connector", + "description": "none" + }, + { + "key": "mxc2-x16", + "value": "mxc2-x16", + "description": "none" + }, + { + "key": "st", + "value": "st", + "description": "according to IEC 60874-10:1992, also often called BFOC/2.5" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of Medium Dependent Interface (MDI) provided by this Medium Attachment Unit (MAU)" + }, + { + "id": "required-medium-kind", + "label": "required-medium-kind", + "uiType": "selection", + "options": [ + { + "key": "tp-cat3", + "value": "tp-cat3", + "description": "none" + }, + { + "key": "tp-cat5", + "value": "tp-cat5", + "description": "none" + }, + { + "key": "tp-cat6", + "value": "tp-cat6", + "description": "none" + }, + { + "key": "tp-cat8", + "value": "tp-cat8", + "description": "none" + }, + { + "key": "single-mode", + "value": "single-mode", + "description": "none" + }, + { + "key": "multi-mode", + "value": "multi-mode", + "description": "none" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of medium required for operating this Medium Attachment Unit (MAU), more like an information field" + }, + { + "id": "wavelength-min", + "label": "wavelength-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "SFF-8690 Minimum laser wavelength in pico meter, -1 = not applicable, 0 = not known, wavelengthMax = wavelength cannot be configured; multiplicity=0..3 for 10GBASE-LX4 according to 802.3 53.5" + }, + { + "id": "wavelength-max", + "label": "wavelength-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum laser wavelength in pico meter, -1 = not applicable, 0 = not known, wavelengthMin = wavelength cannot be configured; multiplicity=0..3 for 10GBASE-LX4 according to 802.3 53.5 SFF-8690" + }, + { + "id": "wavelength-grid-min", + "label": "wavelength-grid-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum grid spacing supported by the transceiver, -1 = not applicable, 0 = not known SFF-8690" + }, + { + "id": "link-length-max", + "label": "link-length-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "m", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indicates the maximum link length that is supported by the transceiver on the medium, which is specified in the standard referenced in TypeDefinitions::phyType::phyKind." + }, + { + "id": "vendor-name", + "label": "vendor-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the vendor of the transceiver Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::ManufacturerProperties::manufacturerName" + }, + { + "id": "vendor-oui", + "label": "vendor-oui", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Describes the IEEE Company identifier of the vendor of the transceiver (1st part of 802.3 ResourceTypeID) 802.3 22.2.4.3.1 PHY Identifier; also referenced in 45.2.1.13 PMA/PMD package identifier Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::ManufacturerProperties::manufacturerIdentifier" + }, + { + "id": "part-number", + "label": "part-number", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 22.2.4.3.1 PHY Identifier; also referenced in 45.2.1.13 PMA/PMD package identifier as six bit model number Uniquely identifies the transceiver in the vendor's product lists Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentType::partTypeIdentifier" + }, + { + "id": "revision-number", + "label": "revision-number", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the revision number of the transceiver (3rd part of 802.3 ResourceTypeID) 802.3 22.2.4.3.1 PHY Identifier; also referenced in 45.2.1.13 PMA/PMD package identifier as four-bit revision number Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentType::version" + }, + { + "id": "serial-number", + "label": "serial-number", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Vendor's serial number for the transceiver. 0 = not applicable Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentInstance::serialNumber" + }, + { + "id": "date-code", + "label": "date-code", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Vendor's date code for the transceiver Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentInstance::manufactureDate" + }, + { + "id": "pmd-list", + "label": "pmd-list", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of Physical Medium Dependent (PMD) that can be operated *** In case ordering of the signals depends on the PMD, pmdList has to be put into the datatype for the signal ordering ***" + }, + { + "id": "signal-ordering-list", + "label": "signal-ordering-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mau-type-g:signal-ordering-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Describes the different (e.g. MDI, MDI-X) ways of ordering the signals on the physical medium" + }, + { + "id": "auto-signal-ordering-is-avail", + "label": "auto-signal-ordering-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = there is a mechanism for automatically crossing over tx and rx implemented" + }, + { + "id": "short-reach-mode-is-avail", + "label": "short-reach-mode-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Indicates that Short Reach Mode for 10GBASE-T according to 802.3 45.2.1.64 is available" + }, + { + "id": "eee-is-avail", + "label": "eee-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Indicates that Energy-Efficient Ethernet (EEE) is available at the device." + }, + { + "id": "unidirectional-operation-is-avail", + "label": "unidirectional-operation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Medium Attachment Unit (MAU) able to transmit from Media Independent Interface (MII) regardless of whether the MAU has determined that a valid link has been established, 0 = MAU able to transmit from MII only when the MAU has determined that a valid link has been established 802.3" + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "MW IM Available alarms to be listed. Mandatory:'txFault', 'rxLos', 'tempHigh', 'tempLow', 'rxLevelHigh', 'rxLevelLow'. Optional:'vccHigh', 'vccLow', 'txBiasHigh', 'txBiasLow', 'txPowerHigh', 'txPowerLow', 'laserTempHigh', 'laserTempLow', 'tecCurrentHigh', 'tecCurrentLow'. Further alarms might be added by the device. Names are to be separated by commas." + } + ], + "description": "none" + }, + { + "id": "microwave-model:mau-type-g:signal-ordering-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "signal-ordering-list", + "language": "en-US", + "title": "signal-ordering-list", + "elements": [ + { + "id": "signal-ordering-kind-name", + "label": "signal-ordering-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "To be filled according to TR-541. Must be unique for referencing during configuration of the interface." + }, + { + "id": "signal-list", + "label": "signal-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Desciption of the signals on the Media Dependent Interface (MDI), might be e.g. 'TX+' in case of e.g. 10BASE-T, might be e.g. '1,295.56 nm' in case of e.g. 100GBASE-LR4" + } + ], + "description": "Describes the different (e.g. MDI, MDI-X) ways of ordering the signals on the physical medium" + }, + { + "id": "microwave-model:wire-interface-problem-severity-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-configuration-g", + "object": "problem-kind-severity-list", + "name": "wire-interface-problem-severity-type", + "language": "en-US", + "title": "wire-interface-problem-severity-type", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to WireInterface::WireInterfaceCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-current-problem-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-current-problems-g", + "object": "current-problem-list", + "name": "wire-interface-current-problem-type", + "language": "en-US", + "title": "wire-interface-current-problem-type", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to WireInterface::WireInterfaceCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-current-performance-type-g", + "object": "performance-data", + "name": "wire-interface-performance-type", + "language": "en-US", + "title": "wire-interface-performance-type", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 30.8.1.1.13 aLineESs Number of errored seconds" + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 30.8.1.1.12 aLineSESs Number of severely errored seconds" + }, + { + "id": "symbol-error-during-carrier", + "label": "symbol-error-during-carrier", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according to 30.3.2.1.5 aSymbolErrorDuringCarrier Number of times when valid carrier was present and an invalid data symbol occured." + }, + { + "id": "low-power-idle-transmitter-ms", + "label": "low-power-idle-transmitter-ms", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "ms", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 similar to 30.3.2.1.8 aTransmitLPIMicroseconds Number of milliseconds (original counter expresses microseconds), during which the transmitter was in power save mode" + }, + { + "id": "low-power-idle-receiver-ms", + "label": "low-power-idle-receiver-ms", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "ms", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 similar to 30.3.2.1.9 aReceiveLPIMicroseconds Number of milliseconds (original counter expresses microseconds), during which the receiver was in power save mode" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-current-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-current-performance-g", + "object": "current-performance-data-list", + "name": "wire-interface-current-performance-type", + "language": "en-US", + "title": "wire-interface-current-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:wire-interface-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into current performance information by inheriting from OTN_CurrentData." + }, + { + "id": "microwave-model:wire-interface-current-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 30.8.1.1.13 aLineESs Number of errored seconds" + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 30.8.1.1.12 aLineSESs Number of severely errored seconds" + }, + { + "id": "symbol-error-during-carrier", + "label": "symbol-error-during-carrier", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according to 30.3.2.1.5 aSymbolErrorDuringCarrier Number of times when valid carrier was present and an invalid data symbol occured." + }, + { + "id": "low-power-idle-transmitter-ms", + "label": "low-power-idle-transmitter-ms", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "ms", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 similar to 30.3.2.1.8 aTransmitLPIMicroseconds Number of milliseconds (original counter expresses microseconds), during which the transmitter was in power save mode" + }, + { + "id": "low-power-idle-receiver-ms", + "label": "low-power-idle-receiver-ms", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "ms", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 similar to 30.3.2.1.9 aReceiveLPIMicroseconds Number of milliseconds (original counter expresses microseconds), during which the receiver was in power save mode" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-historical-performance-type-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-historical-performances-g", + "object": "historical-performance-data-list", + "name": "wire-interface-historical-performance-type", + "language": "en-US", + "title": "wire-interface-historical-performance-type", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:wire-interface-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Turns performance information into historical performance information by inheriting from OTN_HistoryData." + }, + { + "id": "microwave-model:wire-interface-historical-performance-type-g:performance-data", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "performance-data", + "language": "en-US", + "title": "performance-data", + "elements": [ + { + "id": "es", + "label": "es", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 30.8.1.1.13 aLineESs Number of errored seconds" + }, + { + "id": "ses", + "label": "ses", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 30.8.1.1.12 aLineSESs Number of severely errored seconds" + }, + { + "id": "symbol-error-during-carrier", + "label": "symbol-error-during-carrier", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according to 30.3.2.1.5 aSymbolErrorDuringCarrier Number of times when valid carrier was present and an invalid data symbol occured." + }, + { + "id": "low-power-idle-transmitter-ms", + "label": "low-power-idle-transmitter-ms", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "ms", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 similar to 30.3.2.1.8 aTransmitLPIMicroseconds Number of milliseconds (original counter expresses microseconds), during which the transmitter was in power save mode" + }, + { + "id": "low-power-idle-receiver-ms", + "label": "low-power-idle-receiver-ms", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "ms", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 similar to 30.3.2.1.9 aReceiveLPIMicroseconds Number of milliseconds (original counter expresses microseconds), during which the receiver was in power save mode" + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-pac", + "object": "air-interface-capability", + "name": "air-interface-capability", + "language": "en-US", + "title": "air-interface-capability", + "elements": [ + { + "id": "type-of-equipment", + "label": "type-of-equipment", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware." + }, + { + "id": "tx-frequency-min", + "label": "tx-frequency-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum transmit frequency tunable at the air interface." + }, + { + "id": "tx-frequency-max", + "label": "tx-frequency-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum transmit frequency tunable at the air interface." + }, + { + "id": "rx-frequency-min", + "label": "rx-frequency-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the minimum receive frequency tunable at the air interface." + }, + { + "id": "rx-frequency-max", + "label": "rx-frequency-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Value of the maximum receive frequency tunable at the air interface." + }, + { + "id": "adaptive-modulation-is-avail", + "label": "adaptive-modulation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is capable of adaptive modulation, this field shall contain a 'true'." + }, + { + "id": "mimo-is-avail", + "label": "mimo-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is capable of MIMO, this field shall contain a 'true'." + }, + { + "id": "mimo-channels", + "label": "mimo-channels", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "channels", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration." + }, + { + "id": "alic-is-avail", + "label": "alic-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'." + }, + { + "id": "atpc-is-avail", + "label": "atpc-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of ATPC, this field shall contain a 'true'." + }, + { + "id": "atpc-range", + "label": "atpc-range", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Extent of the ATPC range. This value represents a device specific maximum value. The actual range of the ATPC at a specific link might be limited by the difference between configured transmit power (AirInterface::AirInterfaceConfiguration::txPower) and minimum transmit power of the device (TypeDefinitions::TransmissionModeType::txPowerMin)." + }, + { + "id": "encryption-is-avail", + "label": "encryption-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be marked 'true', if payload encryption is available." + }, + { + "id": "supported-loop-back-kind-list", + "label": "supported-loop-back-kind-list", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of supported kinds of looping back of header information to the remote site." + }, + { + "id": "maintenance-timer-range", + "label": "maintenance-timer-range", + "uiType": "string", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','signalIDMismatching','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the vendor." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "supported-channel-plan-list", + "label": "supported-channel-plan-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-capability-g:supported-channel-plan-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of channel spacing that are supported by the device." + } + ], + "description": "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes." + }, + { + "id": "microwave-model:air-interface-capability-g:supported-channel-plan-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "supported-channel-plan-list", + "language": "en-US", + "title": "supported-channel-plan-list", + "url": "restconf/config/network-topology:network-topology/topology/topology-netconf/node/$$NODEID$$/yang-ext:mount/microwave-model:mw-air-interface-pac/$$LPID$$/air-interface-capability", + "dataPath": "air-interface-capability/supported-channel-plan-list/$$INDEX0$$/", + "elements": [ + { + "id": "supported-channel-plan", + "label": "supported-channel-plan", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database." + }, + { + "id": "duplex-distance-is-variable", + "label": "duplex-distance-is-variable", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "To be set on 'true', if the distance between transmitted and received frequency is variable." + }, + { + "id": "duplex-distance", + "label": "duplex-distance", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Distance between transmitted and received frequency." + }, + { + "id": "auto-freq-select-is-avail", + "label": "auto-freq-select-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'." + }, + { + "id": "duplex-distance-list", + "label": "duplex-distance-list", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Distance between transmitted and received frequency. To be filled with single value, in case duplex distance is not variable. To be filled with all configurable values, in case duplex distance is variable." + }, + { + "id": "transmission-mode-list", + "label": "transmission-mode-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:channel-plan-type-g:transmission-mode-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "List of channel spacing that are supported by the device." + }, + { + "id": "microwave-model:air-interface-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-pac", + "object": "air-interface-configuration", + "name": "air-interface-configuration", + "language": "en-US", + "title": "air-interface-configuration", + "elements": [ + { + "id": "air-interface-name", + "label": "air-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Operator specific microwave link ID (often used for coding area, type of element and sequential number)." + }, + { + "id": "remote-air-interface-name", + "label": "remote-air-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the air interface, which belongs to the same link, at the remote site." + }, + { + "id": "expected-signal-id", + "label": "expected-signal-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If set on '0', the receiver ignores the signal ID of the received signal. If set on any other value, the receiver exclusively synchronizes on signals with the same signal ID." + }, + { + "id": "transmitted-signal-id", + "label": "transmitted-signal-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmitted radio signal ID for synchronizing the receiver." + }, + { + "id": "radio-signal-id", + "label": "radio-signal-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check." + }, + { + "id": "tx-frequency", + "label": "tx-frequency", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable." + }, + { + "id": "rx-frequency", + "label": "rx-frequency", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the receive channel." + }, + { + "id": "transmission-mode-min", + "label": "transmission-mode-min", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum transmission mode to be configured (in case adaptive modulation is not used, this value represents also the fixed transmission mode)." + }, + { + "id": "transmission-mode-max", + "label": "transmission-mode-max", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum transmission mode to be configured." + }, + { + "id": "tx-channel-bandwidth", + "label": "tx-channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "rx-channel-bandwidth", + "label": "rx-channel-bandwidth", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;" + }, + { + "id": "polarization", + "label": "polarization", + "uiType": "selection", + "options": [ + { + "key": "not-specified", + "value": "not-specified", + "description": "none" + }, + { + "key": "horizontal", + "value": "horizontal", + "description": "none" + }, + { + "key": "vertical", + "value": "vertical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Allows documenting the polarization of the air interface." + }, + { + "id": "power-is-on", + "label": "power-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'." + }, + { + "id": "transmitter-is-on", + "label": "transmitter-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of the transmitter inside the radio shall be expressed as a 'true'." + }, + { + "id": "receiver-is-on", + "label": "receiver-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations." + }, + { + "id": "tx-power", + "label": "tx-power", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC." + }, + { + "id": "adaptive-modulation-is-on", + "label": "adaptive-modulation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'." + }, + { + "id": "modulation-min", + "label": "modulation-min", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "modulation-max", + "label": "modulation-max", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "xpic-is-on", + "label": "xpic-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'." + }, + { + "id": "mimo-is-on", + "label": "mimo-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'." + }, + { + "id": "alic-is-on", + "label": "alic-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'." + }, + { + "id": "atpc-is-on", + "label": "atpc-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'." + }, + { + "id": "atpc-thresh-upper", + "label": "atpc-thresh-upper", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power." + }, + { + "id": "atpc-thresh-lower", + "label": "atpc-thresh-lower", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power." + }, + { + "id": "atpc-tx-power-min", + "label": "atpc-tx-power-min", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Transmit power, which is not to be undercut, while operating ATPC." + }, + { + "id": "auto-freq-select-is-on", + "label": "auto-freq-select-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'." + }, + { + "id": "auto-freq-select-range", + "label": "auto-freq-select-range", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "channels", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen." + }, + { + "id": "modulation-is-on", + "label": "modulation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'." + }, + { + "id": "encryption-is-on", + "label": "encryption-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activates encryption of the payload." + }, + { + "id": "cryptographic-key", + "label": "cryptographic-key", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Key for transforming plaintext into ciphertext data." + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "threshold-cross-alarm-list", + "label": "threshold-cross-alarm-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-configuration-g:threshold-cross-alarm-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of threshold cross alarms to be configured." + }, + { + "id": "loop-back-kind-on", + "label": "loop-back-kind-on", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "maintenance-timer", + "label": "maintenance-timer", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "Configuration of the radio link." + }, + { + "id": "microwave-model:air-interface-configuration-g:threshold-cross-alarm-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "threshold-cross-alarm-list", + "language": "en-US", + "title": "threshold-cross-alarm-list", + "elements": [ + { + "id": "g826-value-kind", + "label": "g826-value-kind", + "uiType": "selection", + "options": [ + { + "key": "es", + "value": "es", + "description": "Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::es ." + }, + { + "key": "ses", + "value": "ses", + "description": "Severely Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::ses ." + }, + { + "key": "cses", + "value": "cses", + "description": "Consecutive Severely Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::cses ." + }, + { + "key": "not-specified", + "value": "not-specified", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of performance value that shall be equipped with a threshold alarm." + }, + { + "id": "granularity-period", + "label": "granularity-period", + "uiType": "g:granularity-period-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Period of the performance data collection." + }, + { + "id": "alarm-raising-threshold", + "label": "alarm-raising-threshold", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of events required for raising the threshold cross alarm." + }, + { + "id": "alarm-clearing-threshold", + "label": "alarm-clearing-threshold", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of events required for clearing the threshold cross alarm." + } + ], + "description": "List of threshold cross alarms to be configured." + }, + { + "id": "microwave-model:air-interface-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "microwave-model:air-interface-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-pac", + "object": "air-interface-status", + "name": "air-interface-status", + "language": "en-US", + "title": "air-interface-status", + "elements": [ + { + "id": "tx-frequency-cur", + "label": "tx-frequency-cur", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the currently operated transmit channel." + }, + { + "id": "rx-frequency-cur", + "label": "rx-frequency-cur", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kHz", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Center frequency of the currently operated receive channel." + }, + { + "id": "tx-level-cur", + "label": "tx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current transmit level." + }, + { + "id": "rx-level-cur", + "label": "rx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current receive level." + }, + { + "id": "transmission-mode-cur", + "label": "transmission-mode-cur", + "uiType": "string", + "leafrefPath": "/mw-air-interface-pac/air-interface-capability/supported-channel-plan-list/transmission-mode-list/transmission-mode-id", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently operated transmission mode according to definitions in Capabilities." + }, + { + "id": "modulation-cur", + "label": "modulation-cur", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "unit": "symbols", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme." + }, + { + "id": "code-rate-cur", + "label": "code-rate-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "%", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate)." + }, + { + "id": "received-signal-id", + "label": "received-signal-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ID of the signal, which the receiver is currently synchronized on." + }, + { + "id": "snir-cur", + "label": "snir-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured signal to (noise+interference) ratio." + }, + { + "id": "xpd-cur", + "label": "xpd-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured cross polarization discrimination." + }, + { + "id": "rf-temp-cur", + "label": "rf-temp-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current temperature (in degree Celsius) of the radio module inside the outdoor unit." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Air Interface entered its current operational status." + }, + { + "id": "radio-power-is-up", + "label": "radio-power-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If the radio unit has power and is switched on, this shall be expressed as a 'true'." + }, + { + "id": "link-is-up", + "label": "link-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'." + }, + { + "id": "xpic-is-up", + "label": "xpic-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "mimo-is-up", + "label": "mimo-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "alic-is-up", + "label": "alic-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "atpc-is-up", + "label": "atpc-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "auto-freq-select-is-up", + "label": "auto-freq-select-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'." + }, + { + "id": "loop-back-kind-up", + "label": "loop-back-kind-up", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site." + }, + { + "id": "local-end-point-id", + "label": "local-end-point-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link." + }, + { + "id": "remote-end-point-id", + "label": "remote-end-point-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link." + } + ], + "description": "Measurements of current values on the air interface and operational status of the device." + }, + { + "id": "microwave-model:air-interface-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-pac", + "object": "air-interface-current-problems", + "name": "air-interface-current-problems", + "language": "en-US", + "title": "air-interface-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-pac", + "object": "air-interface-current-performance", + "name": "air-interface-current-performance", + "language": "en-US", + "title": "air-interface-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "Aggregated performance information of the air interface at a particular moment." + }, + { + "id": "microwave-model:air-interface-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "microwave-model:air-interface-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-pac", + "object": "air-interface-historical-performances", + "name": "air-interface-historical-performances", + "language": "en-US", + "title": "air-interface-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the air interface for a pre-defined measurement interval." + }, + { + "id": "microwave-model:air-interface-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:co-channel-group-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "microwave-model", + "object": "co-channel-group", + "name": "co-channel-group", + "language": "en-US", + "title": "co-channel-group", + "elements": [ + { + "id": "co-channel-group-id", + "label": "co-channel-group-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "air-interface-list", + "label": "air-interface-list", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group." + }, + { + "id": "sort-of-co-channel-group", + "label": "sort-of-co-channel-group", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';" + }, + { + "id": "logical-termination-point", + "label": "logical-termination-point", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Required for configuring XPIC, MIMO and ALIC." + }, + { + "id": "microwave-model:air-interface-diversity-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-diversity-pac", + "object": "air-interface-diversity-capability", + "name": "air-interface-diversity-capability", + "language": "en-US", + "title": "air-interface-diversity-capability", + "elements": [ + { + "id": "available-kinds-of-diversity", + "label": "available-kinds-of-diversity", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-capability-g:available-kinds-of-diversity", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available types of diversity to be listed." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the vendor." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas." + } + ], + "description": "Describes the capabilities in implementing different types of air interface diversity." + }, + { + "id": "microwave-model:air-interface-diversity-capability-g:available-kinds-of-diversity", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "available-kinds-of-diversity", + "language": "en-US", + "title": "available-kinds-of-diversity", + "elements": [ + { + "id": "diversity-name", + "label": "diversity-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'" + }, + { + "id": "number-of-air-interfaces-max", + "label": "number-of-air-interfaces-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "air interfaces", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number of air interfaces that could be part of this kind of diversity." + } + ], + "description": "Available types of diversity to be listed." + }, + { + "id": "microwave-model:air-interface-diversity-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-diversity-pac", + "object": "air-interface-diversity-configuration", + "name": "air-interface-diversity-configuration", + "language": "en-US", + "title": "air-interface-diversity-configuration", + "elements": [ + { + "id": "air-interface-diversity", + "label": "air-interface-diversity", + "uiType": "object", + "viewId": "microwave-model:air-interface-diversity-configuration-g:air-interface-diversity", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of air interface diversity configured at the link." + }, + { + "id": "air-interface-ltp-list", + "label": "air-interface-ltp-list", + "uiType": "string", + "leafrefPath": "/core-model:network-element/core-model:ltp/core-model:uuid", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax" + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "threshold-cross-alarm-list", + "label": "threshold-cross-alarm-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-configuration-g:threshold-cross-alarm-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of threshold cross alarms to be configured." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-configuration-g:air-interface-diversity", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "air-interface-diversity", + "language": "en-US", + "title": "air-interface-diversity", + "elements": [ + { + "id": "diversity-name", + "label": "diversity-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'" + }, + { + "id": "number-of-air-interfaces-max", + "label": "number-of-air-interfaces-max", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "air interfaces", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum number of air interfaces that could be part of this kind of diversity." + } + ], + "description": "Type of air interface diversity configured at the link." + }, + { + "id": "microwave-model:air-interface-diversity-configuration-g:threshold-cross-alarm-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "threshold-cross-alarm-list", + "language": "en-US", + "title": "threshold-cross-alarm-list", + "elements": [ + { + "id": "g826-value-kind", + "label": "g826-value-kind", + "uiType": "selection", + "options": [ + { + "key": "es", + "value": "es", + "description": "Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::es ." + }, + { + "key": "ses", + "value": "ses", + "description": "Severely Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::ses ." + }, + { + "key": "cses", + "value": "cses", + "description": "Consecutive Severely Errored Seconds. Threshold cross alarm will relate to TypeDefinitions::AirInterfacePerformanceType::cses ." + }, + { + "key": "not-specified", + "value": "not-specified", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of performance value that shall be equipped with a threshold alarm." + }, + { + "id": "granularity-period", + "label": "granularity-period", + "uiType": "g:granularity-period-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Period of the performance data collection." + }, + { + "id": "alarm-raising-threshold", + "label": "alarm-raising-threshold", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of events required for raising the threshold cross alarm." + }, + { + "id": "alarm-clearing-threshold", + "label": "alarm-clearing-threshold", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Number of events required for clearing the threshold cross alarm." + } + ], + "description": "List of threshold cross alarms to be configured." + }, + { + "id": "microwave-model:air-interface-diversity-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "microwave-model:air-interface-diversity-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-diversity-pac", + "object": "air-interface-diversity-status", + "name": "air-interface-diversity-status", + "language": "en-US", + "title": "air-interface-diversity-status", + "elements": [ + { + "id": "snir-cur", + "label": "snir-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dB", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Currently measured signal to (noise+interference) ratio of the combined signals." + }, + { + "id": "air-interface-diversity-status", + "label": "air-interface-diversity-status", + "uiType": "selection", + "options": [ + { + "key": "group-down", + "value": "group-down", + "description": "All air interfaces that are members of the diversity configuration are down." + }, + { + "key": "not-all-ai-active", + "value": "not-all-ai-active", + "description": "At least one, but not all of the air interfaces that are part of the diversity configuration is not working." + }, + { + "key": "all-ai-active", + "value": "all-ai-active", + "description": "All air interfaces that are part of the diversity configuration are working." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of the air interface bundle." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Diversity Group entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-diversity-pac", + "object": "air-interface-diversity-current-problems", + "name": "air-interface-diversity-current-problems", + "language": "en-US", + "title": "air-interface-diversity-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:air-interface-diversity-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-diversity-pac", + "object": "air-interface-diversity-current-performance", + "name": "air-interface-diversity-current-performance", + "language": "en-US", + "title": "air-interface-diversity-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "Aggregated performance information of the air interface diversity configuration at a particular moment." + }, + { + "id": "microwave-model:air-interface-diversity-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-diversity-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "microwave-model:air-interface-diversity-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-air-interface-diversity-pac", + "object": "air-interface-diversity-historical-performances", + "name": "air-interface-diversity-historical-performances", + "language": "en-US", + "title": "air-interface-diversity-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:air-interface-diversity-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval." + }, + { + "id": "microwave-model:air-interface-diversity-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:air-interface-diversity-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:pure-ethernet-structure-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-pure-ethernet-structure-pac", + "object": "pure-ethernet-structure-capability", + "name": "pure-ethernet-structure-capability", + "language": "en-US", + "title": "pure-ethernet-structure-capability", + "elements": [ + { + "id": "structure-id", + "label": "structure-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the Structure for bundling and container." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the vendor." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device." + } + ], + "description": "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device. Segmentation is not available. No fixed segment size. No TDM transport." + }, + { + "id": "microwave-model:pure-ethernet-structure-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-pure-ethernet-structure-pac", + "object": "pure-ethernet-structure-configuration", + "name": "pure-ethernet-structure-configuration", + "language": "en-US", + "title": "pure-ethernet-structure-configuration", + "elements": [ + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the type of problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:pure-ethernet-structure-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the type of problem to be configured." + }, + { + "id": "microwave-model:pure-ethernet-structure-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-pure-ethernet-structure-pac", + "object": "pure-ethernet-structure-status", + "name": "pure-ethernet-structure-status", + "language": "en-US", + "title": "pure-ethernet-structure-status", + "elements": [ + { + "id": "segment-status-list", + "label": "segment-status-list", + "uiType": "object", + "viewId": "microwave-model:pure-ethernet-structure-status-g:segment-status-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of the Ethernet transport segment. Always just one segment." + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the last update of the status information." + } + ], + "description": "none" + }, + { + "id": "microwave-model:pure-ethernet-structure-status-g:segment-status-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "segment-status-list", + "language": "en-US", + "title": "segment-status-list", + "elements": [ + { + "id": "segment-status-type-id", + "label": "segment-status-type-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-is-reserved-for-tdm", + "label": "segment-is-reserved-for-tdm", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm." + }, + { + "id": "operational-status", + "label": "operational-status", + "uiType": "core-model:operational-state", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current operational status of each segment." + }, + { + "id": "obsolete-priority-class", + "label": "obsolete-priority-class", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank." + }, + { + "id": "obsolete-drop-order-rank", + "label": "obsolete-drop-order-rank", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. _unique: within Structure::StructureStatus::segmentStatusList" + } + ], + "description": "Status of the Ethernet transport segment. Always just one segment." + }, + { + "id": "microwave-model:pure-ethernet-structure-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-pure-ethernet-structure-pac", + "object": "pure-ethernet-structure-current-problems", + "name": "pure-ethernet-structure-current-problems", + "language": "en-US", + "title": "pure-ethernet-structure-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:pure-ethernet-structure-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:pure-ethernet-structure-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-pure-ethernet-structure-pac", + "object": "pure-ethernet-structure-current-performance", + "name": "pure-ethernet-structure-current-performance", + "language": "en-US", + "title": "pure-ethernet-structure-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment." + }, + { + "id": "microwave-model:pure-ethernet-structure-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:structure-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "microwave-model:pure-ethernet-structure-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-pure-ethernet-structure-pac", + "object": "pure-ethernet-structure-historical-performances", + "name": "pure-ethernet-structure-historical-performances", + "language": "en-US", + "title": "pure-ethernet-structure-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:pure-ethernet-structure-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval." + }, + { + "id": "microwave-model:pure-ethernet-structure-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:structure-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:hybrid-mw-structure-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-hybrid-mw-structure-pac", + "object": "hybrid-mw-structure-capability", + "name": "hybrid-mw-structure-capability", + "language": "en-US", + "title": "hybrid-mw-structure-capability", + "elements": [ + { + "id": "structure-id", + "label": "structure-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the Structure for bundling and container." + }, + { + "id": "supported-tdm-structure-types-list", + "label": "supported-tdm-structure-types-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-capability-g:supported-tdm-structure-types-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the TDM frame types that are supported." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the vendor." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device." + } + ], + "description": "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet). Segmentation is available. TDM transport is available." + }, + { + "id": "microwave-model:hybrid-mw-structure-capability-g:supported-tdm-structure-types-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "supported-tdm-structure-types-list", + "language": "en-US", + "title": "supported-tdm-structure-types-list", + "elements": [ + { + "id": "tdm-structure-name", + "label": "tdm-structure-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-segment-size", + "label": "tdm-segment-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + }, + { + "id": "max-number-of-segments-reservable", + "label": "max-number-of-segments-reservable", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "segments", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface." + } + ], + "description": "Lists the TDM frame types that are supported." + }, + { + "id": "microwave-model:hybrid-mw-structure-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-hybrid-mw-structure-pac", + "object": "hybrid-mw-structure-configuration", + "name": "hybrid-mw-structure-configuration", + "language": "en-US", + "title": "hybrid-mw-structure-configuration", + "elements": [ + { + "id": "structure-kind", + "label": "structure-kind", + "uiType": "object", + "viewId": "microwave-model:hybrid-mw-structure-configuration-g:structure-kind", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "TDM frame to be applied." + }, + { + "id": "structure-type", + "label": "structure-type", + "uiType": "object", + "viewId": "microwave-model:hybrid-mw-structure-configuration-g:structure-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "TDM frame to be applied." + }, + { + "id": "number-of-tdm-segments-to-be-reserved", + "label": "number-of-tdm-segments-to-be-reserved", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType" + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the type of problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:hybrid-mw-structure-configuration-g:structure-kind", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "structure-kind", + "language": "en-US", + "title": "structure-kind", + "elements": [ + { + "id": "tdm-structure-name", + "label": "tdm-structure-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-segment-size", + "label": "tdm-segment-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + }, + { + "id": "max-number-of-segments-reservable", + "label": "max-number-of-segments-reservable", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "segments", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface." + } + ], + "description": "TDM frame to be applied." + }, + { + "id": "microwave-model:hybrid-mw-structure-configuration-g:structure-type", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "structure-type", + "language": "en-US", + "title": "structure-type", + "elements": [ + { + "id": "tdm-structure-name", + "label": "tdm-structure-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-segment-size", + "label": "tdm-segment-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + }, + { + "id": "max-number-of-segments-reservable", + "label": "max-number-of-segments-reservable", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "segments", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface." + } + ], + "description": "TDM frame to be applied." + }, + { + "id": "microwave-model:hybrid-mw-structure-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the type of problem to be configured." + }, + { + "id": "microwave-model:hybrid-mw-structure-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-hybrid-mw-structure-pac", + "object": "hybrid-mw-structure-status", + "name": "hybrid-mw-structure-status", + "language": "en-US", + "title": "hybrid-mw-structure-status", + "elements": [ + { + "id": "segment-status-list", + "label": "segment-status-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-status-g:segment-status-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1" + }, + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the last update of the status information." + } + ], + "description": "none" + }, + { + "id": "microwave-model:hybrid-mw-structure-status-g:segment-status-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "segment-status-list", + "language": "en-US", + "title": "segment-status-list", + "elements": [ + { + "id": "segment-status-type-id", + "label": "segment-status-type-id", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-is-reserved-for-tdm", + "label": "segment-is-reserved-for-tdm", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm." + }, + { + "id": "operational-status", + "label": "operational-status", + "uiType": "core-model:operational-state", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current operational status of each segment." + }, + { + "id": "obsolete-priority-class", + "label": "obsolete-priority-class", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank." + }, + { + "id": "obsolete-drop-order-rank", + "label": "obsolete-drop-order-rank", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. _unique: within Structure::StructureStatus::segmentStatusList" + } + ], + "description": "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1" + }, + { + "id": "microwave-model:hybrid-mw-structure-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-hybrid-mw-structure-pac", + "object": "hybrid-mw-structure-current-problems", + "name": "hybrid-mw-structure-current-problems", + "language": "en-US", + "title": "hybrid-mw-structure-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:hybrid-mw-structure-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Structure::StructureCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:hybrid-mw-structure-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-hybrid-mw-structure-pac", + "object": "hybrid-mw-structure-current-performance", + "name": "hybrid-mw-structure-current-performance", + "language": "en-US", + "title": "hybrid-mw-structure-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "Aggregated performance information of the structure of a hybrid microwave at a particular moment." + }, + { + "id": "microwave-model:hybrid-mw-structure-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:structure-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "microwave-model:hybrid-mw-structure-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-hybrid-mw-structure-pac", + "object": "hybrid-mw-structure-historical-performances", + "name": "hybrid-mw-structure-historical-performances", + "language": "en-US", + "title": "hybrid-mw-structure-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:hybrid-mw-structure-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval." + }, + { + "id": "microwave-model:hybrid-mw-structure-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:structure-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-ethernet-container-pac", + "object": "ethernet-container-capability", + "name": "ethernet-container-capability", + "language": "en-US", + "title": "ethernet-container-capability", + "elements": [ + { + "id": "bundling-is-avail", + "label": "bundling-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container." + }, + { + "id": "packet-compression-is-avail", + "label": "packet-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans." + }, + { + "id": "layer2-compression-is-avail", + "label": "layer2-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 2 available at the device." + }, + { + "id": "vlan-compression-is-avail", + "label": "vlan-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on VLAN layer available at the device." + }, + { + "id": "q-in-q-compression-is-avail", + "label": "q-in-q-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer of a second VLAN available at the device." + }, + { + "id": "mpls-compression-is-avail", + "label": "mpls-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on mpls layer available at the device." + }, + { + "id": "ipv4-compression-is-avail", + "label": "ipv4-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv4 available at the device." + }, + { + "id": "ipv6-compression-is-avail", + "label": "ipv6-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv6 available at the device." + }, + { + "id": "layer4-compression-is-avail", + "label": "layer4-compression-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 4 (TCP and UDP header) available at the device." + }, + { + "id": "encryption-is-avail", + "label": "encryption-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Shall be marked 'true', if Ethernet payload encryption is available." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the vendor." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device." + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-ethernet-container-pac", + "object": "ethernet-container-configuration", + "name": "ethernet-container-configuration", + "language": "en-US", + "title": "ethernet-container-configuration", + "elements": [ + { + "id": "container-id", + "label": "container-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller." + }, + { + "id": "segments-id-list", + "label": "segments-id-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-configuration-g:segments-id-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list." + }, + { + "id": "packet-compression-is-on", + "label": "packet-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum." + }, + { + "id": "layer2-compression-is-on", + "label": "layer2-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 2 configured at the device." + }, + { + "id": "vlan-compression-is-on", + "label": "vlan-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on VLAN layer configured at the device." + }, + { + "id": "q-in-q-compression-is-on", + "label": "q-in-q-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer of a second VLAN configured at the device." + }, + { + "id": "mpls-compression-is-on", + "label": "mpls-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on MPLS layer configured at the device." + }, + { + "id": "ipv4-compression-is-on", + "label": "ipv4-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv4 configured at the device." + }, + { + "id": "ipv6-compression-is-on", + "label": "ipv6-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 3 for IPv6 configured at the device." + }, + { + "id": "layer4-compression-is-on", + "label": "layer4-compression-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Packet compression on layer 4 (TCP and UDP header) configured at the device." + }, + { + "id": "encryption-is-on", + "label": "encryption-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activates encryption of the Ethernet payload." + }, + { + "id": "cryptographic-key", + "label": "cryptographic-key", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Key for transforming plaintext into cipher text data." + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-configuration-g:segments-id-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "segments-id-list", + "language": "en-US", + "title": "segments-id-list", + "elements": [ + { + "id": "structure-id-ref", + "label": "structure-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-id-ref", + "label": "segment-id-ref", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once." + } + ], + "description": "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list." + }, + { + "id": "microwave-model:ethernet-container-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "microwave-model:ethernet-container-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-ethernet-container-pac", + "object": "ethernet-container-status", + "name": "ethernet-container-status", + "language": "en-US", + "title": "ethernet-container-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Container entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-ethernet-container-pac", + "object": "ethernet-container-current-problems", + "name": "ethernet-container-current-problems", + "language": "en-US", + "title": "ethernet-container-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-ethernet-container-pac", + "object": "ethernet-container-current-performance", + "name": "ethernet-container-current-performance", + "language": "en-US", + "title": "ethernet-container-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the Ethernet container at a particular moment." + }, + { + "id": "microwave-model:ethernet-container-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:container-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:ethernet-container-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-ethernet-container-pac", + "object": "ethernet-container-historical-performances", + "name": "ethernet-container-historical-performances", + "language": "en-US", + "title": "ethernet-container-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:ethernet-container-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the Ethernet container for a pre-defined measurement interval." + }, + { + "id": "microwave-model:ethernet-container-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:container-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-container-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-tdm-container-pac", + "object": "tdm-container-capability", + "name": "tdm-container-capability", + "language": "en-US", + "title": "tdm-container-capability", + "elements": [ + { + "id": "supported-tdm-container-types-list", + "label": "supported-tdm-container-types-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-capability-g:supported-tdm-container-types-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Lists the TDM containers that are supported." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the vendor." + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device." + } + ], + "description": "Bundling is not available." + }, + { + "id": "microwave-model:tdm-container-capability-g:supported-tdm-container-types-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "supported-tdm-container-types-list", + "language": "en-US", + "title": "supported-tdm-container-types-list", + "elements": [ + { + "id": "tdm-container-name", + "label": "tdm-container-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-container-size", + "label": "tdm-container-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + } + ], + "description": "Lists the TDM containers that are supported." + }, + { + "id": "microwave-model:tdm-container-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-tdm-container-pac", + "object": "tdm-container-configuration", + "name": "tdm-container-configuration", + "language": "en-US", + "title": "tdm-container-configuration", + "elements": [ + { + "id": "container-id", + "label": "container-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller." + }, + { + "id": "container-type", + "label": "container-type", + "uiType": "object", + "viewId": "microwave-model:tdm-container-configuration-g:container-type", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of TDM container." + }, + { + "id": "segment-id", + "label": "segment-id", + "uiType": "object", + "viewId": "microwave-model:tdm-container-configuration-g:segment-id", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;" + }, + { + "id": "performance-monitoring-collection-is-on", + "label": "performance-monitoring-collection-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Enables measurement, collection, storage and access to performance data." + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-container-configuration-g:container-type", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "container-type", + "language": "en-US", + "title": "container-type", + "elements": [ + { + "id": "tdm-container-name", + "label": "tdm-container-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'" + }, + { + "id": "tdm-container-size", + "label": "tdm-container-size", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "kbit/s", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;" + } + ], + "description": "Type of TDM container." + }, + { + "id": "microwave-model:tdm-container-configuration-g:segment-id", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "segment-id", + "language": "en-US", + "title": "segment-id", + "elements": [ + { + "id": "structure-id-ref", + "label": "structure-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "segment-id-ref", + "label": "segment-id-ref", + "uiType": "number", + "min": -32768, + "max": 32767, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once." + } + ], + "description": "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;" + }, + { + "id": "microwave-model:tdm-container-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "microwave-model:tdm-container-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-tdm-container-pac", + "object": "tdm-container-status", + "name": "tdm-container-status", + "language": "en-US", + "title": "tdm-container-status", + "elements": [ + { + "id": "last-status-change", + "label": "last-status-change", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time the Container entered its current operational status." + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-container-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-tdm-container-pac", + "object": "tdm-container-current-problems", + "name": "tdm-container-current-problems", + "language": "en-US", + "title": "tdm-container-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-container-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to Container::ContainerCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:tdm-container-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-tdm-container-pac", + "object": "tdm-container-current-performance", + "name": "tdm-container-current-performance", + "language": "en-US", + "title": "tdm-container-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "Aggregated performance information of the TDM container at a particular moment." + }, + { + "id": "microwave-model:tdm-container-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:container-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "microwave-model:tdm-container-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "mw-tdm-container-pac", + "object": "tdm-container-historical-performances", + "name": "tdm-container-historical-performances", + "language": "en-US", + "title": "tdm-container-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:tdm-container-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the TDM container for a pre-defined measurement interval." + }, + { + "id": "microwave-model:tdm-container-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:container-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-capability-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-pac", + "object": "wirebased-interface-capability", + "name": "wire-interface-capability", + "language": "en-US", + "title": "wire-interface-capability", + "elements": [ + { + "id": "available-mau-list", + "label": "available-mau-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-capability-g:available-mau-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of Medium Attachment Units (MAUs) that are available for being selected. If rate and service configuration (e.g. SFF-8079) are not supported, the MAU determined by hardware shall be described." + }, + { + "id": "auto-pmd-negotiation-is-avail", + "label": "auto-pmd-negotiation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 1 = Indicates that device is supporting Auto-negotiation" + }, + { + "id": "auto-pmd-negotiation-max-is-avail", + "label": "auto-pmd-negotiation-max-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Indicates that device is supporting definition of the maximum speed/Medium Attached Unit (MAU) automatically chosen when (autoNegotiationIsOn=1)" + }, + { + "id": "supported-loop-back-kind-list", + "label": "supported-loop-back-kind-list", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of supported kinds of looping back of header information to the remote site. 802.3 45.2.1.12.1 PMA remote loopback ability" + }, + { + "id": "maintenance-timer-range", + "label": "maintenance-timer-range", + "uiType": "string", + "unit": "Byte", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "MW IM Available time periods for maintenance configurations (e.g. the loop back) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')." + }, + { + "id": "supported-alarm-list", + "label": "supported-alarm-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Available alarms to be listed. Mandatory:'txFault', 'rxLos', 'tempHigh', 'tempLow', 'rxLevelHigh', 'rxLevelLow'. Optional:'vccHigh', 'vccLow', 'txBiasHigh', 'txBiasLow', 'txPowerHigh', 'txPowerLow', 'laserTempHigh', 'laserTempLow', 'tecCurrentHigh', 'tecCurrentLow'. Further alarms might be added by the device. Names are to be separated by commas." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-capability-g:available-mau-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "available-mau-list", + "language": "en-US", + "title": "available-mau-list", + "elements": [ + { + "id": "mau-id", + "label": "mau-id", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according to 30.5.1.1.1 aMAUID Unique identifier of the Medium Attachment Unit (MAU) instance within the data about the device" + }, + { + "id": "mii-kind", + "label": "mii-kind", + "uiType": "selection", + "options": [ + { + "key": "gbic", + "value": "gbic", + "description": "none" + }, + { + "key": "soldered-connector", + "value": "soldered-connector", + "description": "none" + }, + { + "key": "sfp-sfp-plus-sfp28", + "value": "sfp-sfp-plus-sfp28", + "description": "none" + }, + { + "key": "xbi-300-pin", + "value": "xbi-300-pin", + "description": "none" + }, + { + "key": "xenpak", + "value": "xenpak", + "description": "none" + }, + { + "key": "xfp", + "value": "xfp", + "description": "none" + }, + { + "key": "xfp-e", + "value": "xfp-e", + "description": "none" + }, + { + "key": "xpak", + "value": "xpak", + "description": "none" + }, + { + "key": "x2", + "value": "x2", + "description": "none" + }, + { + "key": "dwdm-sfp-sfp-plus", + "value": "dwdm-sfp-sfp-plus", + "description": "none" + }, + { + "key": "qsfp", + "value": "qsfp", + "description": "none" + }, + { + "key": "qsfp-plus", + "value": "qsfp-plus", + "description": "none" + }, + { + "key": "cxp", + "value": "cxp", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-4-x", + "value": "shielded-mini-multilane-hd-4-x", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-8-x", + "value": "shielded-mini-multilane-hd-8-x", + "description": "none" + }, + { + "key": "qsfp28", + "value": "qsfp28", + "description": "none" + }, + { + "key": "cxp2", + "value": "cxp2", + "description": "none" + }, + { + "key": "cdfp-style1-style2", + "value": "cdfp-style1-style2", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-4-x-fan-out", + "value": "shielded-mini-multilane-hd-4-x-fan-out", + "description": "none" + }, + { + "key": "shielded-mini-multilane-hd-8-x-fan-out", + "value": "shielded-mini-multilane-hd-8-x-fan-out", + "description": "none" + }, + { + "key": "cdfp-style3", + "value": "cdfp-style3", + "description": "none" + }, + { + "key": "qsfp-micro", + "value": "qsfp-micro", + "description": "none" + }, + { + "key": "qsfp-dd", + "value": "qsfp-dd", + "description": "none" + }, + { + "key": "qsfp-plus-rate-select-v1", + "value": "qsfp-plus-rate-select-v1", + "description": "none" + }, + { + "key": "qsfp-plus-rate-select-v2", + "value": "qsfp-plus-rate-select-v2", + "description": "none" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "SFF8472_SFF8636 Kind of Medium Independent Interface (MII) provided by this Medium Attachment Unit (MAU) (e.g. SFP, moldered port)" + }, + { + "id": "mdi-kind", + "label": "mdi-kind", + "uiType": "selection", + "options": [ + { + "key": "sc", + "value": "sc", + "description": "Subscriber Connector" + }, + { + "key": "fibre-channel-style-1", + "value": "fibre-channel-style-1", + "description": "Copper connector" + }, + { + "key": "fibre-channel-style-2", + "value": "fibre-channel-style-2", + "description": "Copper connector" + }, + { + "key": "bnc-tnc", + "value": "bnc-tnc", + "description": "Bayonet/Threaded Neill-Concelman" + }, + { + "key": "fc", + "value": "fc", + "description": "Fibre Channel coax headers" + }, + { + "key": "fiber-jack", + "value": "fiber-jack", + "description": "none" + }, + { + "key": "lc", + "value": "lc", + "description": "Lucent Connector" + }, + { + "key": "mt-rj", + "value": "mt-rj", + "description": "Mechanical Transfer - Registered Jack" + }, + { + "key": "mu", + "value": "mu", + "description": "Multiple Optical" + }, + { + "key": "sg", + "value": "sg", + "description": "none" + }, + { + "key": "optical-pigtail", + "value": "optical-pigtail", + "description": "none" + }, + { + "key": "mpo1-x12", + "value": "mpo1-x12", + "description": "Multifiber Parallel Optic" + }, + { + "key": "mpo2-x16", + "value": "mpo2-x16", + "description": "Multifiber Parallel Optic" + }, + { + "key": "hssdc-ii", + "value": "hssdc-ii", + "description": "High Speed Serial Data Connector" + }, + { + "key": "copper-pigtail", + "value": "copper-pigtail", + "description": "none" + }, + { + "key": "rj45", + "value": "rj45", + "description": "8P8C, according to Clause 3 and Figures 1 through 5 of IEC 60603-7" + }, + { + "key": "no-seperable-connector", + "value": "no-seperable-connector", + "description": "none" + }, + { + "key": "mxc2-x16", + "value": "mxc2-x16", + "description": "none" + }, + { + "key": "st", + "value": "st", + "description": "according to IEC 60874-10:1992, also often called BFOC/2.5" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of Medium Dependent Interface (MDI) provided by this Medium Attachment Unit (MAU)" + }, + { + "id": "required-medium-kind", + "label": "required-medium-kind", + "uiType": "selection", + "options": [ + { + "key": "tp-cat3", + "value": "tp-cat3", + "description": "none" + }, + { + "key": "tp-cat5", + "value": "tp-cat5", + "description": "none" + }, + { + "key": "tp-cat6", + "value": "tp-cat6", + "description": "none" + }, + { + "key": "tp-cat8", + "value": "tp-cat8", + "description": "none" + }, + { + "key": "single-mode", + "value": "single-mode", + "description": "none" + }, + { + "key": "multi-mode", + "value": "multi-mode", + "description": "none" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Kind of medium required for operating this Medium Attachment Unit (MAU), more like an information field" + }, + { + "id": "wavelength-grid-min", + "label": "wavelength-grid-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Minimum grid spacing supported by the transceiver, -1 = not applicable, 0 = not known SFF-8690" + }, + { + "id": "link-length-max", + "label": "link-length-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "m", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indicates the maximum link length that is supported by the transceiver on the medium, which is specified in the standard referenced in TypeDefinitions::phyType::phyKind." + }, + { + "id": "vendor-name", + "label": "vendor-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the vendor of the transceiver Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::ManufacturerProperties::manufacturerName" + }, + { + "id": "vendor-oui", + "label": "vendor-oui", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Describes the IEEE Company identifier of the vendor of the transceiver (1st part of 802.3 ResourceTypeID) 802.3 22.2.4.3.1 PHY Identifier; also referenced in 45.2.1.13 PMA/PMD package identifier Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::ManufacturerProperties::manufacturerIdentifier" + }, + { + "id": "part-number", + "label": "part-number", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 22.2.4.3.1 PHY Identifier; also referenced in 45.2.1.13 PMA/PMD package identifier as six bit model number Uniquely identifies the transceiver in the vendor's product lists Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentType::partTypeIdentifier" + }, + { + "id": "revision-number", + "label": "revision-number", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Identifies the revision number of the transceiver (3rd part of 802.3 ResourceTypeID) 802.3 22.2.4.3.1 PHY Identifier; also referenced in 45.2.1.13 PMA/PMD package identifier as four-bit revision number Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentType::version" + }, + { + "id": "serial-number", + "label": "serial-number", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Vendor's serial number for the transceiver. 0 = not applicable Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentInstance::serialNumber" + }, + { + "id": "date-code", + "label": "date-code", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Vendor's date code for the transceiver Will be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::InvariantDetails::EquipmentInstance::manufactureDate" + }, + { + "id": "auto-signal-ordering-is-avail", + "label": "auto-signal-ordering-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = there is a mechanism for automatically crossing over tx and rx implemented" + }, + { + "id": "short-reach-mode-is-avail", + "label": "short-reach-mode-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Indicates that Short Reach Mode for 10GBASE-T according to 802.3 45.2.1.64 is available" + }, + { + "id": "eee-is-avail", + "label": "eee-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Indicates that Energy-Efficient Ethernet (EEE) is available at the device." + }, + { + "id": "unidirectional-operation-is-avail", + "label": "unidirectional-operation-is-avail", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Medium Attachment Unit (MAU) able to transmit from Media Independent Interface (MII) regardless of whether the MAU has determined that a valid link has been established, 0 = MAU able to transmit from MII only when the MAU has determined that a valid link has been established 802.3" + }, + { + "id": "wavelength-min", + "label": "wavelength-min", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "SFF-8690 Minimum laser wavelength in pico meter, -1 = not applicable, 0 = not known, wavelengthMax = wavelength cannot be configured; multiplicity=0..3 for 10GBASE-LX4 according to 802.3 53.5" + }, + { + "id": "wavelength-max", + "label": "wavelength-max", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Maximum laser wavelength in pico meter, -1 = not applicable, 0 = not known, wavelengthMin = wavelength cannot be configured; multiplicity=0..3 for 10GBASE-LX4 according to 802.3 53.5 SFF-8690" + }, + { + "id": "pmd-list", + "label": "pmd-list", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "List of Physical Medium Dependent (PMD) that can be operated *** In case ordering of the signals depends on the PMD, pmdList has to be put into the datatype for the signal ordering ***" + }, + { + "id": "supported-alarms", + "label": "supported-alarms", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "MW IM Available alarms to be listed. Mandatory:'txFault', 'rxLos', 'tempHigh', 'tempLow', 'rxLevelHigh', 'rxLevelLow'. Optional:'vccHigh', 'vccLow', 'txBiasHigh', 'txBiasLow', 'txPowerHigh', 'txPowerLow', 'laserTempHigh', 'laserTempLow', 'tecCurrentHigh', 'tecCurrentLow'. Further alarms might be added by the device. Names are to be separated by commas." + }, + { + "id": "signal-ordering-list", + "label": "signal-ordering-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:mau-type-g:signal-ordering-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Describes the different (e.g. MDI, MDI-X) ways of ordering the signals on the physical medium" + } + ], + "description": "List of Medium Attachment Units (MAUs) that are available for being selected. If rate and service configuration (e.g. SFF-8079) are not supported, the MAU determined by hardware shall be described." + }, + { + "id": "microwave-model:wire-interface-configuration-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-pac", + "object": "wirebased-interface-configuration", + "name": "wire-interface-configuration", + "language": "en-US", + "title": "wire-interface-configuration", + "elements": [ + { + "id": "wire-interface-name", + "label": "wire-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Text field for the wire interface being named by the operator. Ideally used for entering unique numbers or names for unambiguously identifying the connection within the network Parameter" + }, + { + "id": "remote-wire-interface-name", + "label": "remote-wire-interface-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Learning from MW IM Text field for defining the wire interface this one is connected with. Ideally used for entering unique numbers or names for unambiguously identifying the connection within the network" + }, + { + "id": "interface-is-on", + "label": "interface-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Activation of the interface (it gets powered and can be managed even if the transceiver is not yet transmitting or receiving). In case there is no Medium Attachment Unit (MAU) (e.g. no SFP in the cage) SETting (interfaceIsOn=1) must be ignored and GETing must return (interfaceIsOn=0) 802.3 according 30.3.2.2.1 acPhyAdminControl" + }, + { + "id": "transceiver-is-on-list", + "label": "transceiver-is-on-list", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 22.?.? and additionally 802.3 45.2.1.8 PMD transmit disable register (Register 1.9) 1 = Activation of the transmitter and receiver (e.g. laser) of the PHY; transceiverIsOnList[0]:total interface; transceiverIsOnList[1..10] different lanes of a multilane Medium Attachment Unit (MAU)" + }, + { + "id": "auto-pmd-negotiation-is-on", + "label": "auto-pmd-negotiation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 1 = Auto-negotiation is switched on" + }, + { + "id": "fixed-pmd", + "label": "fixed-pmd", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If (autoPmdNegotiationIsOn=0) configuration of the concrete kind of Physical Medium Dependent (PMD). If (autoNegotiationIsOn=1) value of this field becomes irrelevant" + }, + { + "id": "auto-pmd-negotiation-max", + "label": "auto-pmd-negotiation-max", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter If (autoNegotiationIsOn=1) AND (autoNegotiationMauMaxIsAvail=1) configuration of the maximum speed/Physical Medium Dependent (PMD), which is automatically chosen by Auto-negotiation" + }, + { + "id": "auto-signal-ordering-is-on", + "label": "auto-signal-ordering-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = e.g. auto-MDI-X is switched on" + }, + { + "id": "fixed-signal-ordering", + "label": "fixed-signal-ordering", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If (autoSignalOrderingIsOn=0) configuration of the concrete kind of signal ordering on the media (e.g. MDI, or MDI-X). If (autoSignalOrderingIsOn=1) value of this field becomes irrelevant" + }, + { + "id": "short-reach-mode-is-on", + "label": "short-reach-mode-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Activation of the Short Reach Mode for 10GBASE-T according to 802.3 45.2.1.64" + }, + { + "id": "unidirectional-operation-is-on", + "label": "unidirectional-operation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "If (autoNegotiationIsOn=1) OR manualDuplexSelection=0 (=half duplex), this bit is ignored. When autoNegotiationIsOn=0 AND manualDuplexSelection=1 (=full duplex): 1 = Enable transmit from media independent interface regardless of whether the PHY has determined that a valid link has been established, 0 = Enable transmit from media independent interface only when the PHY has determined that a valid link has been established 802.3 Parameter" + }, + { + "id": "wavelength-list", + "label": "wavelength-list", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "unit": "pm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Wavelength of the signal of laser in pico meter; multiplicity=0..3 for 10GBASE-LX4 according to 802.3 53.5 SFF-8690" + }, + { + "id": "temperature-high-threshold", + "label": "temperature-high-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming high temperature values. Will move to somewhere in the Physical Segment of the Core IM" + }, + { + "id": "temperature-low-threshold", + "label": "temperature-low-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming low temperature values. Will move to somewhere in the Physical Segment of the Core IM" + }, + { + "id": "rxlevel-high-threshold", + "label": "rxlevel-high-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming high RX levels." + }, + { + "id": "rxlevel-low-threshold", + "label": "rxlevel-low-threshold", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Threshold for alarming low RX levels." + }, + { + "id": "loop-back-kind-on", + "label": "loop-back-kind-on", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 802.3 according 22.2.4.1.2 Loopback Maintenance Feature. The currently configured type of looping back of the wire interface header shall be expressed here. The received header is returned to the remote site. Activation of local loopback mode on physical layer" + }, + { + "id": "isolation-is-on", + "label": "isolation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Activation of the separation of the PHY from higher network layers 802.3" + }, + { + "id": "restart-pmd-negotiation-is-on", + "label": "restart-pmd-negotiation-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Restarts the auto negotiation process 802.3" + }, + { + "id": "reset-mau-is-on", + "label": "reset-mau-is-on", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 Resets the entire Medium Access Unit (MAU)" + }, + { + "id": "maintenance-timer", + "label": "maintenance-timer", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter and MW IM Time of existence of any maintenance configuration (e.g. the loop back). Valid values are defined in WireInterface::WireInterfaceCapability::maintenanceTimerRange" + }, + { + "id": "problem-kind-severity-list", + "label": "problem-kind-severity-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-configuration-g:problem-kind-severity-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem to be configured." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-configuration-g:problem-kind-severity-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "problem-kind-severity-list", + "language": "en-US", + "title": "problem-kind-severity-list", + "elements": [ + { + "id": "problem-kind-name", + "label": "problem-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to WireInterface::WireInterfaceCapability::supportedAlarms" + }, + { + "id": "problem-kind-severity", + "label": "problem-kind-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of this type of alarm." + } + ], + "description": "Severity of the problem to be configured." + }, + { + "id": "microwave-model:wire-interface-status-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-pac", + "object": "wirebased-interface-status", + "name": "wire-interface-status", + "language": "en-US", + "title": "wire-interface-status", + "elements": [ + { + "id": "interface-is-up", + "label": "interface-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 according 30.3.2.1.7 aPhyAdminState 1 = A Physical layer entity (PHY) exists (including Medium Attachment Unit (e.g. SFP) ) and it is powered and can be managed" + }, + { + "id": "receive-signal-is-detected", + "label": "receive-signal-is-detected", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "802.3 45.2.1.9 PMD receive signal detect 1 = Receiver (e.g. laser) detects signal; receiveSignalIsDetected[0]:total interface; receiveSignalIsDetected[1..10] different lanes of a multilane Medium Attachment Unit (MAU)" + }, + { + "id": "pmd-is-up", + "label": "pmd-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Inverse of 802.3 45.2.1.2.3 Fault (1.1.7) If (interfaceIsUp=1) BUT 0 = there is a fault in either transmit or receive path" + }, + { + "id": "pmd-cur", + "label": "pmd-cur", + "uiType": "selection", + "options": [ + { + "key": "10-base5", + "value": "10-base5", + "description": "Thick coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 8" + }, + { + "key": "foirl", + "value": "foirl", + "description": "FOIRL Medium Attachment Unit (MAU) as specified in 802.3 Clause 9.9" + }, + { + "key": "10-base2", + "value": "10-base2", + "description": "Thin coax Medium Attachment Unit (MAU) as specified in 802.3 Clause 10" + }, + { + "key": "10-broad36", + "value": "10-broad36", + "description": "Broadband DTE Medium Attachment Unit (MAU) as specified in 802.3 Clause 11" + }, + { + "key": "10-base-t", + "value": "10-base-t", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-thd", + "value": "10-base-thd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in half duplex mode" + }, + { + "key": "10-base-tfd", + "value": "10-base-tfd", + "description": "Twisted-pair cabling Medium Attachment Unit (MAU) as specified in 802.3 Clause 14 in full duplex mode" + }, + { + "key": "10-base-fp", + "value": "10-base-fp", + "description": "Passive fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 16" + }, + { + "key": "10-base-fb", + "value": "10-base-fb", + "description": "Synchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 17" + }, + { + "key": "10-base-fl", + "value": "10-base-fl", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18. Only to be applied when duplex mode unknown" + }, + { + "key": "10-base-flhd", + "value": "10-base-flhd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in half duplex mode" + }, + { + "key": "10-base-flfd", + "value": "10-base-flfd", + "description": "Asynchronous fiber Medium Attachment Unit (MAU) as specified in 802.3 Clause 18 in full duplex mode" + }, + { + "key": "100-base-t4", + "value": "100-base-t4", + "description": "Four-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 23" + }, + { + "key": "100-base-tx", + "value": "100-base-tx", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-txhd", + "value": "100-base-txhd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in half duplex mode" + }, + { + "key": "100-base-txfd", + "value": "100-base-txfd", + "description": "Two-pair Category 5 twisted-pair cabling as specified in 802.3 Clause 25 in full duplex mode" + }, + { + "key": "100-base-bx10-d", + "value": "100-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-bx10-u", + "value": "100-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-fx", + "value": "100-base-fx", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-fxhd", + "value": "100-base-fxhd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in half duplex mode" + }, + { + "key": "100-base-fxfd", + "value": "100-base-fxfd", + "description": "X fiber over Physical Medium Dependent (PMD) as specified in 802.3 Clause 26 in full duplex mode" + }, + { + "key": "100-base-lx10", + "value": "100-base-lx10", + "description": "Two fiber Physical layer entity (PHY) as specified in 802.3 Clause 58" + }, + { + "key": "100-base-t2", + "value": "100-base-t2", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32. Only to be applied when duplex mode unknown" + }, + { + "key": "100-base-t2-hd", + "value": "100-base-t2-hd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in half duplex mode" + }, + { + "key": "100-base-t2-fd", + "value": "100-base-t2-fd", + "description": "Two-pair Category 3 twisted-pair cabling as specified in 802.3 Clause 32 in full duplex mode" + }, + { + "key": "1000-base-x", + "value": "1000-base-x", + "description": "X as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD and duplex mode unknown" + }, + { + "key": "1000-base-bx10-d", + "value": "1000-base-bx10-d", + "description": "One single-mode fiber Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-bx10-u", + "value": "1000-base-bx10-u", + "description": "One single-mode fiber Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-xhd", + "value": "1000-base-xhd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in half duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-xfd", + "value": "1000-base-xfd", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 36 over undefined Physical Medium Dependent (PMD) in full duplex mode. Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "1000-base-lx", + "value": "1000-base-lx", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-lxhd", + "value": "1000-base-lxhd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-lxfd", + "value": "1000-base-lxfd", + "description": "X fiber over long-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-lx10", + "value": "1000-base-lx10", + "description": "Two fiber 10km Physical layer entity (PHY) as specified in 802.3 Clause 59" + }, + { + "key": "1000-base-sx", + "value": "1000-base-sx", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-sxhd", + "value": "1000-base-sxhd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in half duplex mode" + }, + { + "key": "1000-base-sxfd", + "value": "1000-base-sxfd", + "description": "X fiber over short-wavelength laser Physical Medium Dependent (PMD) as specified in 802.3 Clause 38 in full duplex mode" + }, + { + "key": "1000-base-cx", + "value": "1000-base-cx", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-cxhd", + "value": "1000-base-cxhd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in half duplex mode" + }, + { + "key": "1000-base-cxfd", + "value": "1000-base-cxfd", + "description": "X copper over 150-Ohm balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 39 in full duplex mode" + }, + { + "key": "1000-base-kx", + "value": "1000-base-kx", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 70" + }, + { + "key": "1000-base-t", + "value": "1000-base-t", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40. Only to be applied when duplex mode unknown" + }, + { + "key": "1000-base-thd", + "value": "1000-base-thd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in half duplex mode" + }, + { + "key": "1000-base-tfd", + "value": "1000-base-tfd", + "description": "Four-pair Category 5 twisted-pair cabling Physical layer entity (PHY) as specified in 802.3 Clause 40 in full duplex mode" + }, + { + "key": "10-gbase-x", + "value": "10-gbase-x", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 48 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-lx4", + "value": "10-gbase-lx4", + "description": "X fiber over 4 lane 1310nm optics as specified in 802.3 Clause 53" + }, + { + "key": "10-gbase-cx4", + "value": "10-gbase-cx4", + "description": "X copper over 8 pair 100-Ohm balanced cable as specified in 802.3 Clause 54" + }, + { + "key": "10-gbase-kx4", + "value": "10-gbase-kx4", + "description": "X Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 71" + }, + { + "key": "10-gbase-r", + "value": "10-gbase-r", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) as specified in 802.3 Clause 49 over undefined Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "10-gbase-er", + "value": "10-gbase-er", + "description": "R fiber over 1550nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lr", + "value": "10-gbase-lr", + "description": "R fiber over 1310nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-sr", + "value": "10-gbase-sr", + "description": "R fiber over 850nm optics as specified in 802.3 Clause 52" + }, + { + "key": "10-gbase-lrm", + "value": "10-gbase-lrm", + "description": "R fiber over 1310 nm optics as specified in 802.3 Clause 68" + }, + { + "key": "10-gbase-kr", + "value": "10-gbase-kr", + "description": "R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 72" + }, + { + "key": "10-gbase-t", + "value": "10-gbase-t", + "description": "Four-pair twisted-pair balanced copper cabling Physical layer entity (PHY) as specified in 802.3 Clause 55" + }, + { + "key": "10-gbase-pr-d1", + "value": "10-gbase-pr-d1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d2", + "value": "10-gbase-pr-d2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d3", + "value": "10-gbase-pr-d3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-d4", + "value": "10-gbase-pr-d4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Line Terminal (OLT=>office side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u1", + "value": "10-gbase-pr-u1", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u2", + "value": "10-gbase-pr-u2", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u3", + "value": "10-gbase-pr-u3", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "10-gbase-pr-u4", + "value": "10-gbase-pr-u4", + "description": "One single-mode fiber 10.3125 GBd continuous downstream / burst mode upstream Optical Network Unit (ONU=>customer side) Physical layer entity (PHY) as specified in 802.3 Clause 75" + }, + { + "key": "40-gbase-r", + "value": "40-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "40-gbase-kr4", + "value": "40-gbase-kr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 84" + }, + { + "key": "40-gbase-cr4", + "value": "40-gbase-cr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "40-gbase-sr4", + "value": "40-gbase-sr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "4-x10-gbase-sr", + "value": "4-x10-gbase-sr", + "description": "4 times 10GBASE-S compatible to 802.3 Clause 52 over 4 lane multimode fiber" + }, + { + "key": "40-gbase-lr4", + "value": "40-gbase-lr4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-er4", + "value": "40-gbase-er4", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 87" + }, + { + "key": "40-gbase-fr", + "value": "40-gbase-fr", + "description": "40GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over single mode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 89" + }, + { + "key": "100-gbase-r", + "value": "100-gbase-r", + "description": "Multi-lane PCS as specified in 802.3 Clause 82 over undefined 100GBASE-R or 100GBASE-P Physical Medium Attachment (PMA) and Physical Medium Dependent (PMD). Not to be configured and only to be returned when underlying PMD unknown" + }, + { + "key": "100-gbase-cr4", + "value": "100-gbase-cr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 92" + }, + { + "key": "100-gbase-kr4", + "value": "100-gbase-kr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 93" + }, + { + "key": "100-gbase-kp4", + "value": "100-gbase-kp4", + "description": "100GBASE-P Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over an electrical backplane Physical Medium Dependent (PMD) as specified in 802.3 Clause 94" + }, + { + "key": "100-gbase-cr10", + "value": "100-gbase-cr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane shielded copper balanced cable Physical Medium Dependent (PMD) as specified in 802.3 Clause 85" + }, + { + "key": "100-gbase-sr4", + "value": "100-gbase-sr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 95" + }, + { + "key": "100-gbase-sr10", + "value": "100-gbase-sr10", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 10 lane multimode fiber Physical Medium Dependent (PMD) as specified in 802.3 Clause 86" + }, + { + "key": "2-x40-gbase-sr", + "value": "2-x40-gbase-sr", + "description": "2 times 40GBASE-S compatible to 802.3 Clause 86 over 10 lane multimode fiber" + }, + { + "key": "10-x10-gbase-sr", + "value": "10-x10-gbase-sr", + "description": "10 times 10GBASE-S compatible to 802.3 Clause 52 over 10 lane multimode fiber" + }, + { + "key": "12-x10-gbase-sr", + "value": "12-x10-gbase-sr", + "description": "12 times 10GBASE-S compatible to 802.3 Clause 52 over 12 lane multimode fiber" + }, + { + "key": "100-gbase-lr4", + "value": "100-gbase-lr4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with long reach, as specified in 802.3 Clause 88" + }, + { + "key": "100-gbase-er4", + "value": "100-gbase-er4", + "description": "100GBASE-R Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) over 4 WDM lane single mode fiber Physical Medium Dependent (PMD), with extended reach, as specified in 802.3 Clause 88" + }, + { + "key": "not-yet-defined", + "value": "not-yet-defined", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Indicates the kind of Physical Medium Dependent (PMD) currently operated at this interface" + }, + { + "id": "signal-ordering-kind-cur", + "label": "signal-ordering-kind-cur", + "uiType": "object", + "viewId": "microwave-model:wire-interface-status-g:signal-ordering-kind-cur", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Reference on a SignalOrderingType for expressing the currently active way of ordering the signals on the physical medium. Must contain a value as defined in TypeDefinitions::SignalOrderingType::signalOrderingKindName" + }, + { + "id": "eee-is-up", + "label": "eee-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = Energy Efficient Ethernet is supported at both ends of the link and it is activated" + }, + { + "id": "link-is-up", + "label": "link-is-up", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Parameter 1 = (transceiverIsUp=1) AND communication is established to the remote site" + }, + { + "id": "link-is-idle", + "label": "link-is-idle", + "uiType": "boolean", + "trueValue": "true", + "falseValue": "false", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "1 = (linkIsUp=1) AND (eeeIsAvail=1) AND (eeeIsOn=1) AND link is currently in idle mode. If Energy Efficient Ethernet is not supported or switched off, this attribute must be 0." + }, + { + "id": "tx-level-cur", + "label": "tx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current transmit power" + }, + { + "id": "rx-level-cur", + "label": "rx-level-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "dBm", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current receive power; Also used for receive signal power measured at the Medium Dependent Interface (MDI) of 10GBASE-T during training as described in 802.3 55.4.3.1" + }, + { + "id": "temp-cur", + "label": "temp-cur", + "uiType": "number", + "min": -128, + "max": 127, + "format": "#", + "unit": "Celsius", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Current temperature (in degree Celsius) inside the transceiver To be moved to CoreModel::CorePhysicalModel-Initial::EquipmentDetail::ObjectClasses::DynamicDetails::PhysicalProperties" + }, + { + "id": "loop-back-kind-up", + "label": "loop-back-kind-up", + "uiType": "selection", + "options": [ + { + "key": "rf-to-remote", + "value": "rf-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the radio interface between both outdoor units." + }, + { + "key": "rf-to-local", + "value": "rf-to-local", + "description": "Returning the header information of the local site back to the local site on the radio interface between both outdoor units." + }, + { + "key": "if-to-remote", + "value": "if-to-remote", + "description": "Returning the header information of the remote site back to the remote site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "if-to-local", + "value": "if-to-local", + "description": "Returning the header information of the local site back to the local site on the intermediate frequency interface between local indoor unit and outdoor unit." + }, + { + "key": "none", + "value": "none", + "description": "none" + }, + { + "key": "if", + "value": "if", + "description": "Intermediate Frequency on the interface between indoor and outdoor unit." + }, + { + "key": "rf", + "value": "rf", + "description": "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site." + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Paramter and MW IM The currently active (not just configured) type of looping back of the wire interface header shall be expressed here. The received header is returned to the remote site." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-status-g:signal-ordering-kind-cur", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "signal-ordering-kind-cur", + "language": "en-US", + "title": "signal-ordering-kind-cur", + "elements": [ + { + "id": "signal-ordering-kind-name", + "label": "signal-ordering-kind-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "To be filled according to TR-541. Must be unique for referencing during configuration of the interface." + }, + { + "id": "signal-list", + "label": "signal-list", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Desciption of the signals on the Media Dependent Interface (MDI), might be e.g. 'TX+' in case of e.g. 10BASE-T, might be e.g. '1,295.56 nm' in case of e.g. 100GBASE-LR4" + } + ], + "description": "Reference on a SignalOrderingType for expressing the currently active way of ordering the signals on the physical medium. Must contain a value as defined in TypeDefinitions::SignalOrderingType::signalOrderingKindName" + }, + { + "id": "microwave-model:wire-interface-current-problems-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-pac", + "object": "wirebased-interface-current-problems", + "name": "wire-interface-current-problems", + "language": "en-US", + "title": "wire-interface-current-problems", + "elements": [ + { + "id": "current-problem-list", + "label": "current-problem-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-current-problems-g:current-problem-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-current-problems-g:current-problem-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-problem-list", + "language": "en-US", + "title": "current-problem-list", + "elements": [ + { + "id": "problem-name", + "label": "problem-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the alarm according to WireInterface::WireInterfaceCapability::supportedAlarms" + }, + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:wire-interface-current-performance-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-pac", + "object": "wirebased-interface-current-performance", + "name": "wire-interface-current-performance", + "language": "en-US", + "title": "wire-interface-current-performance", + "elements": [ + { + "id": "current-performance-data-list", + "label": "current-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-current-performance-g:current-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + } + ], + "description": "Aggregated performance information of the air interface at a particular moment." + }, + { + "id": "microwave-model:wire-interface-current-performance-g:current-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "current-performance-data-list", + "language": "en-US", + "title": "current-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:wire-interface-current-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too." + }, + { + "id": "microwave-model:wire-interface-historical-performances-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "wire-interface-pac", + "object": "wirebased-interface-historical-performances", + "name": "wire-interface-historical-performances", + "language": "en-US", + "title": "wire-interface-historical-performances", + "elements": [ + { + "id": "historical-performance-data-list", + "label": "historical-performance-data-list", + "uiType": "list", + "listType": "object", + "viewId": "microwave-model:wire-interface-historical-performances-g:historical-performance-data-list", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "Aggregated performance information of the air interface for a pre-defined measurement interval." + }, + { + "id": "microwave-model:wire-interface-historical-performances-g:historical-performance-data-list", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "name": "historical-performance-data-list", + "language": "en-US", + "title": "historical-performance-data-list", + "elements": [ + { + "id": "performance-data", + "label": "performance-data", + "uiType": "object", + "viewId": "microwave-model:wire-interface-historical-performance-type-g:performance-data", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + } + ], + "description": "none" + }, + { + "id": "microwave-model:mw-current-problem-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "microwave-model", + "object": "air-interface-current-problem-type-g", + "name": "mw-current-problem", + "language": "en-US", + "title": "mw-current-problem", + "elements": [ + { + "id": "sequence-number", + "label": "sequence-number", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Unique sequence number of the current problem object." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Time and date of the problem." + }, + { + "id": "problem-severity", + "label": "problem-severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the alarm." + } + ], + "description": "none" + }, + { + "id": "microwave-model:object-creation-notification-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "microwave-model", + "object": "object-creation-notification", + "name": "object-creation-notification", + "language": "en-US", + "title": "object-creation-notification", + "elements": [ + { + "id": "counter", + "label": "counter", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts object creation notifications." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "object-id-ref", + "label": "object-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac." + }, + { + "id": "object-type", + "label": "object-type", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Type of Object to be chosen from the following list of values: 'MW_AirInterface_Pac', 'MW_AirInterfaceDiversity_Pac', 'MW_Structure_Pac', 'MW_PureEthernetStructure_Pac', 'MW_HybridMwStructure_Pac', 'MW_Container_Pac', 'MW_EthernetContainer_Pac' or 'MW_TdmContainer_Pac'." + } + ], + "description": "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac has to be instancieted in the controller." + }, + { + "id": "microwave-model:object-deletion-notification-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "microwave-model", + "object": "object-deletion-notification", + "name": "object-deletion-notification", + "language": "en-US", + "title": "object-deletion-notification", + "elements": [ + { + "id": "counter", + "label": "counter", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts object deletion notifications." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "object-id-ref", + "label": "object-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac." + } + ], + "description": "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac instance has to be deleted in the controller." + }, + { + "id": "microwave-model:attribute-value-changed-notification-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "microwave-model", + "object": "attribute-value-changed-notification", + "name": "attribute-value-changed-notification", + "language": "en-US", + "title": "attribute-value-changed-notification", + "elements": [ + { + "id": "counter", + "label": "counter", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts attribute value changed notifications." + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "object-id-ref", + "label": "object-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac." + }, + { + "id": "attribute-name", + "label": "attribute-name", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the attribute that has been changed." + }, + { + "id": "new-value", + "label": "new-value", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Attribute value converted to a string (xml, json, ...)" + } + ], + "description": "To be sent when an attribute has changed and one or more controllers have to update their data." + }, + { + "id": "microwave-model:problem-notification-g", + "yangModule": "microwave-model", + "revision": "2018-10-10", + "package": "microwave-model", + "object": "problem-notification", + "name": "problem-notification", + "language": "en-US", + "title": "problem-notification", + "elements": [ + { + "id": "counter", + "label": "counter", + "uiType": "number", + "min": -2147483648, + "max": 2147483647, + "format": "#", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Counts problem notifications" + }, + { + "id": "time-stamp", + "label": "time-stamp", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "none" + }, + { + "id": "object-id-ref", + "label": "object-id-ref", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac." + }, + { + "id": "problem", + "label": "problem", + "uiType": "string", + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Name of the problem according to AirInterface::AirInterfaceCapability::supportedAlarms or AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms or Structure::StructureCapability::supportedAlarms or PureEthernetStructure::PureEthernetStructureCapability::supportedAlarms or HybridMwStructure::HybridMwStructureCapability::supportedAlarms or Container::ContainerCapability::supportedAlarms or EthernetContainer::EthernetContainerCapability::supportedAlarms or TdmContainer::TdmContainerCapability::supportedAlarms." + }, + { + "id": "severity", + "label": "severity", + "uiType": "selection", + "options": [ + { + "key": "non-alarmed", + "value": "non-alarmed", + "description": "none" + }, + { + "key": "warning", + "value": "warning", + "description": "none" + }, + { + "key": "minor", + "value": "minor", + "description": "none" + }, + { + "key": "major", + "value": "major", + "description": "none" + }, + { + "key": "critical", + "value": "critical", + "description": "none" + } + ], + "accessFlags": { + "read": true, + "write": false, + "create": false + }, + "description": "Severity of the problem according to AirInterface::AirInterfaceConfiguration::problemSeverityList, AirInterfaceDiversity::AirInterfaceDiversityConfiguration::problemSeverityList, Structure::StructureConfiguration::problemSeverityList, PureEthernetStructure::PureEthernetStructureConfiguration::problemSeverityList, HybridMwStructure::HybridMwStructureConfiguration::problemSeverityList, Container::ContainerConfiguration::problemSeverityList, EthernetContainer::EthernetContainerConfiguration::problemSeverityList or TdmContainer::TdmContainerConfiguration::problemSeverityList" + } + ], + "description": "To be sent when a problem occurs at a MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac." + } + ] +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/src/handlers/configurationAppRootHandler.ts b/sdnr/wt/odlux/apps/configurationApp/src/handlers/configurationAppRootHandler.ts new file mode 100644 index 000000000..4b982149a --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/handlers/configurationAppRootHandler.ts @@ -0,0 +1,68 @@ +// main state handler + +import { combineActionHandler } from '../../../../framework/src/flux/middleware'; + +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { IActionHandler } from '../../../../framework/src/flux/action'; + +import { ViewSpecification } from '../models/uiModels'; +import { CoreModelNetworkElement } from '../models/coreModel'; +import { UpdateCoreModel, UpdateLoading, UpdateLp, UpdateViewData } from '../actions/configurationActions'; + +export interface IConfigurationAppStoreState { + loading: boolean; + nodeId?: string; + lpId?: string; + viewId?: string; + indexValues?: string; + capability?: string; + conditionalPackage?: string, + coreModel?: CoreModelNetworkElement; + viewSpecifications: ViewSpecification[]; + viewData: {}; +} + +declare module '../../../../framework/src/store/applicationStore' { + interface IApplicationStoreState { + configuration: IConfigurationAppStoreState + } +} + +const configurationAppStoreStateInit: IConfigurationAppStoreState = { + loading: false, + viewSpecifications: [], + viewData: {} +}; + +export const configurationAppRootHandler: IActionHandler<IConfigurationAppStoreState> = (state = configurationAppStoreStateInit, action) => { + if (action instanceof UpdateLoading) { + state = { + ...state, + loading: action.loading + }; + } else if (action instanceof UpdateCoreModel) { + state = { + ...state, + nodeId: action.nodeId, + coreModel: action.coreModel + }; + } else if (action instanceof UpdateLp) { + state = { + ...state, + lpId: action.lpId, + capability: action.capability, + conditionalPackage: action.conditionalPackage, + viewSpecifications: action.viewSpecifications + }; + } else if (action instanceof UpdateViewData) { + state = { + ...state, + viewData: action.viewData, + indexValues: action.indexValues, + viewId: action.viewId, + }; + } + return state; +}; + +export default configurationAppRootHandler; diff --git a/sdnr/wt/odlux/apps/configurationApp/src/index.html b/sdnr/wt/odlux/apps/configurationApp/src/index.html new file mode 100644 index 000000000..759b7b535 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/index.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta http-equiv="X-UA-Compatible" content="ie=edge"> + <!-- <link rel="stylesheet" href="./vendor.css"> --> + <title>Configuration App</title> +</head> + +<body> + <div id="app"></div> + <script type="text/javascript" src="./require.js"></script> + <script type="text/javascript" src="./config.js"></script> + <script> + // run the application + require(["app", "connectApp", "maintenanceApp", "configurationApp"], function (app, connectApp, maintenanceApp, configurationApp) { + connectApp.register(); + configurationApp.register(); + maintenanceApp.register(); + app("./app.tsx").runApplication(); + }); + </script> +</body> + +</html>
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts b/sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts new file mode 100644 index 000000000..ade7c2c9c --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts @@ -0,0 +1,56 @@ +export interface NameValue { + "value-name": string; + value: string; +} + +export interface LpResponse { + uuid: string; + "administrative-state": AdministrativeState; + "is-protection-lock-out": boolean; + "termination-state": string; + "local-id": NameValue[]; + "configured-client-capacity": string; + "extension": NameValue[]; + "operational-state": string; + "administrative-control": string; + "name": NameValue[]; + "lp-direction": string; + "fc-blocks-signal-to-lp": string; + "layer-protocol-name": string; + "lifecycle-state": string; + "label": NameValue[]; +} + +export interface LtpResponse { + uuid: string; + "administrative-state": AdministrativeState; + "local-id": NameValue[]; + extension: NameValue[]; + "operational-state": string; + lp: LpResponse[]; + "administrative-control": string; + name: NameValue[]; + "ltp-in-other-view": string[]; + "ltp-direction": string; + "lifecycle-state": string; + "client-ltp": string[]; + "label": NameValue[]; + "server-ltp": string[]; +} + +export interface CoreModelNetworkElement { + "administrative-state": AdministrativeState; + ltp: LtpResponse[]; + "local-id": NameValue[]; + "lifecycle-state": string; + uuid: string; + label: NameValue[]; + extension: NameValue[]; + "operational-state": string; + "administrative-control": string; + name: NameValue[]; +} + + +export type AdministrativeState = "unlocked" | "locked"; + diff --git a/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts b/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts new file mode 100644 index 000000000..99307c648 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts @@ -0,0 +1,73 @@ +export interface AccessFlags { + "read": boolean, + "write": boolean, + "create": boolean +} + +export interface ViewElementBase { + "id": string; + "label": string; + "viewId": string; + "leafrefPath": string; + "accessFlags": AccessFlags; + "description": string; +} + +export interface ViewElementString extends ViewElementBase { + "uiType": "string"; +} + +export interface ViewElementNumber extends ViewElementBase { + "uiType": "number"; + "min"?: number; + "max"?: number; + "unit"?: string; + "format"?: string; +} + +export interface ViewElementBoolean extends ViewElementBase { + "uiType": "boolean"; + "trueValue"?: string; + "falseValue"?: string; +} + +export interface ViewElementObject extends ViewElementBase { + "uiType": "object"; + "viewId": string; +} + +export interface ViewElementSelection extends ViewElementBase { + "uiType": "selection"; + "multiSelect"?: boolean + "options": { + "key": string, + "value": string, + "description": string + }[], +} + +export interface ViewElementList extends ViewElementBase { + "uiType": "list", + "listType": "object" | "string" | "number", + "viewId": string, +} + +export type ViewElement = + | ViewElementString + | ViewElementNumber + | ViewElementBoolean + | ViewElementObject + | ViewElementSelection + | ViewElementList; + +export interface ViewSpecification { + "id": string; + "parentView": string; + "name": string; + "language": string; + "title"?: string; + "url": string; + "dataPath": string; + "elements": ViewElement[]; +} + diff --git a/sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx b/sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx new file mode 100644 index 000000000..b7d44f70b --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx @@ -0,0 +1,90 @@ +// app configuration and main entry point for the app + +import * as React from "react"; +import { withRouter, RouteComponentProps, Route, Switch, Redirect } from 'react-router-dom'; + +import { faAdjust } from '@fortawesome/free-solid-svg-icons'; // select app icon + +import connect, { Connect, IDispatcher } from '../../../framework/src/flux/connect'; +import applicationManager from '../../../framework/src/services/applicationManager'; +import { IApplicationStoreState } from "../../../framework/src/store/applicationStore"; + +import { configurationAppRootHandler } from './handlers/configurationAppRootHandler'; +import configurationService from "./services/configurationService"; + +import ConfigurationApplication from "./views/configurationApplication"; +import { updateMountIdAsyncActionCreator, updateLpIdAsyncActionCreator, updateViewDataAsyncActionCreator } from "./actions/configurationActions"; + +let currentMountId: string | null | undefined = undefined; +let currentLpId: string | null |undefined = undefined; +let currentViewId: string | null | undefined = undefined; +let currentIndex: string | null | undefined = undefined; +let lastUrl: string | undefined = undefined; + +const mapProps = (state: IApplicationStoreState) => ({ + // currentProblemsProperties: createCurrentProblemsProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + updateMountId: (mountId: string | undefined) => dispatcher.dispatch(updateMountIdAsyncActionCreator(mountId)), + updateLpId: (lpId: string | undefined) => dispatcher.dispatch(updateLpIdAsyncActionCreator(lpId)), + updateViewData: (viewPath: string, indexValues: string[]) => dispatcher.dispatch(updateViewDataAsyncActionCreator(viewPath, indexValues)), +}); + +const ConfigurationApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComponentProps<{ mountId?: string, lpId?: string, viewId?: string, "0"?: string }> & Connect<typeof mapProps, typeof mapDisp>) => { + if (props.location.pathname !== lastUrl) { + // ensure the asynchronus update will only be called once per path + lastUrl = props.location.pathname; + window.setTimeout(async () => { + + // check if the mountId has changed + if (currentMountId !== props.match.params.mountId) { + currentMountId = props.match.params.mountId || undefined; + currentLpId = null; + currentViewId = null; + currentIndex = null; + await props.updateMountId(currentMountId); + } + + // check if the lpId has changed + if (currentLpId !== props.match.params.lpId) { + currentLpId = props.match.params.lpId || undefined; + currentViewId = null; + currentIndex = null; + currentLpId && await props.updateLpId(currentLpId); + } + + // check if the viewId or the indices has changed + if (currentViewId !== props.match.params.viewId || currentIndex !== props.match.params[0]) { + currentViewId = props.match.params.viewId || undefined; + currentIndex = props.match.params[0] || undefined; + currentViewId && await props.updateViewData(currentViewId || '', currentIndex && currentIndex.split("/") || [] ); + } + + }); + } + return ( + <ConfigurationApplication /> + ); +}); + +const App = withRouter((props: RouteComponentProps) => ( + <Switch> + <Route path={`${props.match.path}/:mountId/:lpId/:viewId/*`} component={ConfigurationApplicationRouteAdapter} /> + <Route path={`${props.match.path}/:mountId/:lpId/:viewId`} component={ConfigurationApplicationRouteAdapter} /> + <Route path={`${props.match.path}/:mountId/:lpId`} component={ConfigurationApplicationRouteAdapter} /> + <Route path={`${props.match.path}/:mountId`} component={ConfigurationApplicationRouteAdapter} /> + <Route path={`${props.match.path}`} component={ConfigurationApplicationRouteAdapter} /> + <Redirect to={`${props.match.path}`} /> + </Switch> +)); + +export function register() { + applicationManager.registerApplication({ + name: "configuration", + icon: faAdjust, + rootComponent: App, + rootActionHandler: configurationAppRootHandler, + menuEntry: "Configuration" + }); +} diff --git a/sdnr/wt/odlux/apps/configurationApp/src/services/configurationService.ts b/sdnr/wt/odlux/apps/configurationApp/src/services/configurationService.ts new file mode 100644 index 000000000..707fed833 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/services/configurationService.ts @@ -0,0 +1,36 @@ + +import { requestRest } from '../../../../framework/src/services/restService'; + +import { CoreModelNetworkElement, NameValue } from '../models/coreModel'; +import { ViewSpecification } from '../models/uiModels'; + +export const getValueByName = (name: string, nameValuePairs: NameValue[], defaultValue: string | null = null): string | null => { + const entry = nameValuePairs.find(p => p["value-name"] === name); + return entry && entry.value || defaultValue; +}; + +class ConfigurationService { + + /** Gets the core model for a network element by its mountId. */ + public async getCoreModelByNodeId(nodeId: string): Promise<CoreModelNetworkElement | null> { + const path = `restconf/config/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount/core-model:network-element`; + const ne = await requestRest<{ "network-element": CoreModelNetworkElement }>(path, { method: "GET" }); + return ne && ne["network-element"] || null; + } + + public async getViewData(path: string): Promise<{} | null> { + const viewData = await requestRest<{}>(path, { method: "GET" }); + return viewData || null; + } + + /** Gets the UI description object for a capability of a network element. */ + public async getUIDescriptionByCapability(capability: string, revision: string | null): Promise<ViewSpecification[] | null> { + const capFile = capability && revision && `${capability}@${revision}.json`; + const coreModelResponse = capFile && await requestRest<{ views: ViewSpecification[] } >(`assets/${capFile}`, { method: "GET" }); + return coreModelResponse && coreModelResponse.views || null; + } + +} + +export const configurationService = new ConfigurationService(); +export default configurationService;
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx b/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx new file mode 100644 index 000000000..5865c10e5 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx @@ -0,0 +1,297 @@ +import * as React from 'react'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { IConnectAppStoreState } from '../../../connectApp/src/handlers/connectAppRootHandler'; +import { MountedNetworkElementType } from '../../../connectApp/src/models/mountedNetworkElements'; +import { NavigateToApplication } from '../../../../framework/src/actions/navigationActions'; +import { Dispatch } from '../../../../framework/src/flux/store'; + +import TextField from '@material-ui/core/TextField'; +import { Tooltip, Button, FormControl, InputLabel, Select, MenuItem, InputAdornment } from '@material-ui/core'; +import Link from '@material-ui/core/Link'; + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TableHead from '@material-ui/core/TableHead'; +import TableRow from '@material-ui/core/TableRow'; + +import { ViewSpecification } from '../models/uiModels'; + +const NetworkElementTable = MaterialTable as MaterialTableCtorType<MountedNetworkElementType>; + +const mapProps = (state: IApplicationStoreState) => ({ + ...state.configuration, + avaliableDevices: state.connect.mountedNetworkElements.elements.filter(el => el.connectionStatus === "connected") +}); +const mapDisp = (dispatcher: IDispatcher) => ({ + navigateTo: (viewId: string, index?: string | number) => dispatcher.dispatch((dispatch: Dispatch, getState: () => IApplicationStoreState) => { + const { configuration: { nodeId, lpId, indexValues } } = getState(); + const newIndexValues = typeof index === 'number' && indexValues + ? indexValues.split('/').slice(0, index).join("/") + : indexValues + ? `${indexValues}${index ? `/${index}` : ''}` + : index; + dispatch(new NavigateToApplication("configuration", `${nodeId}/${lpId}/${viewId}${newIndexValues ? `/${newIndexValues}` : ''}`)); + + }), + changeNode: (ndoeId: string) => dispatcher.dispatch((dispatch: Dispatch) => { + dispatch(new NavigateToApplication("configuration", ndoeId)); + }), + changeLp: (lpId: string) => dispatcher.dispatch((dispatch: Dispatch, getState: () => IApplicationStoreState) => { + const { configuration: { nodeId } } = getState(); + dispatch(new NavigateToApplication("configuration", `${nodeId}/${lpId}`)); + }) +}); + +type ConfigurationApplicationProps = Connect<typeof mapProps, typeof mapDisp>; + +type ConfigurationApplicationState = { + +} + +class ConfigurationApplicationComponent extends React.Component<ConfigurationApplicationProps, ConfigurationApplicationState> { + + render() { + if (this.props.loading) { + return ( + <h2>Collecting data from network element. Please wait ...</h2> + ); + } else if (!this.props.nodeId) { + return ( + <> + <h2>Please select an network element to configure !</h2> + <NetworkElementTable idProperty={"mountId"} rows={this.props.avaliableDevices} asynchronus + onHandleClick={(evetm, rowData) => { this.props.changeNode(rowData.mountId) }} columns={ + [{ property:"mountId" }] + } /> + </> + ); + } else if (!this.props.lpId) { + return ( + <> + <h2>Please select an existing LP first !</h2> + <ul> + { this.props.coreModel && this.props.coreModel.ltp.map(ltp => { + return <li key={ltp.uuid}> + <Link component="a" variant="body2" color="secondary" onClick={() => { + this.props.changeLp(ltp.lp[0].uuid); + }}>{ltp.lp[0].label[0].value}</Link> + </li> + }) || null} + </ul> + </> + ); + } else if (!this.props.capability && !this.props.viewId) { + return ( + <h2>Please select a capability or viewId first !</h2> + ); + } + const viewData = this.props.viewData; + const viewSpecification = this.props.viewId + ? this.props.viewSpecifications.find(d => d.id === this.props.viewId) + : this.props.viewSpecifications.find(d => d.name === this.props.conditionalPackage); + + return viewSpecification + ? ( + <> + <hgroup style={{ marginBottom: 15 }}> + <h2>{`${this.props.nodeId} - ${this.props.lpId}`}</h2> + {this.createBreadCrump(viewSpecification.id, this.props.viewSpecifications)} + </hgroup> + <div style={{ display: "flex", flexWrap: "wrap", overflow: "auto" }}> + { + + (this.props.viewData && this.props.viewData instanceof Array) + ? this.renderUIList(viewSpecification, viewData as { [key: string]: string | number }[]) + : this.renderUIElement(viewSpecification, viewData as { [key: string]: string | number }) + } + {/* { <pre>{JSON.stringify(this.props.viewData, null, 2)} </pre> } */} + + </div> + </> + ) + : <h2>View Not Found</h2>; + } + + private static keyPropertyParser = /\$\$INDEX:(\d+):?([a-z\-]+)?\$\$$/; + private renderUIList = (viewSpecification: ViewSpecification, viewData: { [key: string]: string | number }[]) => { + const keyMatch = ConfigurationApplicationComponent.keyPropertyParser.exec(viewSpecification.dataPath); + const keyProperty = keyMatch && keyMatch[2]; + return ( + <Table> + <TableHead> + <TableRow> + {viewSpecification.elements.map(uiElement => { + switch (uiElement.uiType) { + case "number": + return ( + <TableCell key={uiElement.id} align={"right"} >{uiElement.label}</TableCell> + ); + case "selection": + case "object": + case "list": + case "string": + case "boolean": + return ( + <TableCell key={uiElement.id} align={"left"} >{uiElement.label}</TableCell> + ); + default: + if (process.env.NODE_ENV !== "production") { + console.error(`Unknown column type - ${(uiElement as any).uiType} in ${(uiElement as any).id}.`) + } + return null; + } + }) + } + <TableCell align={"right"} >Actions</TableCell> + </TableRow> + </TableHead> + <TableBody> + {viewData.map((row, ind) => ( + <TableRow key={keyProperty && row[keyProperty] || ind}> + {viewSpecification.elements.map(uiElement => { + switch (uiElement.uiType) { + case "string": + case "number": + return ( + <TableCell key={uiElement.id} component="td" scope="row" align={uiElement.uiType === "number" ? "right" : "left"}>{row[uiElement.id] == null ? "---" : row[uiElement.id] } </TableCell> + ); + case "boolean": + return ( + <TableCell key={uiElement.id} component="td" scope="row" align={"left"} >{row[uiElement.id] == null ? "---" : row[uiElement.id] ? uiElement.trueValue || 'True' : uiElement.falseValue || 'False'} </TableCell> + ); + case "list": + case "object": + return ( + <TableCell key={uiElement.id} component="td" scope="row" align={"left"} > + <Tooltip title={uiElement.description || ''}> + <Link component="a" variant="body2" color="secondary" onClick={() => { + this.props.navigateTo(uiElement.viewId, String(ind)); + }}>{uiElement.label}</Link> + </Tooltip></TableCell> + ); + case "selection": + const option = row[uiElement.id] ? uiElement.options.find(opt => opt.key === row[uiElement.id]) : null; + return ( + <TableCell key={uiElement.id} component="td" scope="row" align={"left"} >{option ? option.value : row[uiElement.id] == null ? "---" : row[uiElement.id] } </TableCell> + ); + default: + if (process.env.NODE_ENV !== "production") { + console.error(`Unknown column type - ${(uiElement as any).uiType} in ${(uiElement as any).id}.`) + } + return null; + } + })} + <TableCell align={"right"} ><Button onClick={() => { + this.props.navigateTo(this.props.viewId || '', String(/*keyProperty && row[keyProperty] || */ ind)); + }} >Details</Button> + </TableCell> + </TableRow> + ))} + </TableBody> + </Table> + ); + } + + private renderUIElement = (viewSpecification: ViewSpecification, viewData: { [key: string]: string | number }) => ( + viewSpecification.elements.map(uiElement => { + if (uiElement.leafrefPath) { + return null; + } + switch (uiElement.uiType) { + case "selection": + return (viewData[uiElement.id] != null + ? (<FormControl key={uiElement.id} style={{ width: 485, marginLeft: 20, marginRight: 20 }}> + <InputLabel htmlFor={`select-${uiElement.id}`} >{uiElement.label}</InputLabel> + <Select + readOnly={ true } + value={(viewData[uiElement.id] || '').toString().toLowerCase()} + inputProps={{ + name: uiElement.id, + id: `select-${uiElement.id}`, + }} + > + {uiElement.options.map(option => (<MenuItem title={option.description} value={option.value}>{option.key}</MenuItem>))} + </Select> + </FormControl>) + : null + ); + case "boolean": + return (viewData[uiElement.id] != null + ? (<FormControl key={uiElement.id} style={{ width: 485, marginLeft: 20, marginRight: 20 }}> + <InputLabel htmlFor={`select-${uiElement.id}`} >{uiElement.label}</InputLabel> + <Select + readOnly={ true } + + value={String(viewData[uiElement.id]).toLowerCase()} + inputProps={{ + name: uiElement.id, + id: `select-${uiElement.id}`, + }} + > + <MenuItem value={'true'}>{uiElement.trueValue || 'True'}</MenuItem> + <MenuItem value={'false'}>{uiElement.falseValue || 'False'}</MenuItem> + + </Select> + </FormControl>) + : null + ); + case "string": + return ( + <Tooltip key={uiElement.id} title={uiElement.description || ''}> + <TextField InputProps={{ readOnly: true }} spellCheck={false} autoFocus margin="dense" + id={uiElement.id} label={uiElement.label} type="text" value={viewData[uiElement.id] || ''} style={{ width: 485, marginLeft: 20, marginRight: 20 }} /> + </Tooltip> + ); + case "number": + return ( + <Tooltip key={uiElement.id} title={uiElement.description || ''}> + <TextField InputProps={{ readOnly: true, startAdornment: uiElement.unit != null ? <InputAdornment position="start">{uiElement.unit}</InputAdornment> : undefined }} spellCheck={false} autoFocus margin="dense" + id={uiElement.id} label={uiElement.label} type="text" value={viewData[uiElement.id] || ''} style={{ width: 485, marginLeft: 20, marginRight: 20 }} /> + </Tooltip> + ); + case "list": + case "object": + return ( + <Tooltip key={uiElement.id} title={uiElement.description || ''}> + <Link component="a" variant="body2" color="secondary" style={{ width: 485, marginLeft: 20, marginRight: 20 }} onClick={() => { + this.props.navigateTo(uiElement.viewId); + }}>{uiElement.label}</Link> + </Tooltip> + ); + default: + if (process.env.NODE_ENV !== "production") { + console.error(`Unknown type - ${(uiElement as any).uiType} in ${(uiElement as any).id}.`) + } + return null; + } + }) + ) + + private createBreadCrump = (viewId: string, viewSpecifications: ViewSpecification[]) => { + const result: JSX.Element[] = []; + const hasIndex = /\/\$\$INDEX:(\d+):?([a-z\-]+)?\$\$/i; + let currentViewSpecification = viewSpecifications.find(s => s.id === viewId); + let indexCounter = 0; + while (currentViewSpecification != null) { + const currentViewId = currentViewSpecification.id; + const currentDataPathHasIndex = hasIndex.test(currentViewSpecification.dataPath); + result.unshift(( + <span> + <Link component="a" variant="body2" color="secondary" onClick={() => { + this.props.navigateTo(currentViewId, currentDataPathHasIndex ? ++indexCounter : indexCounter); + }}>{currentViewSpecification.name}</Link> + {viewId === currentViewId ? null : " | "} + </span> + )); + currentViewSpecification = viewSpecifications.find(s => s.id === (currentViewSpecification && currentViewSpecification.parentView || '')); + } + return result; + } +} + +export const ConfigurationApplication = connect(mapProps, mapDisp)(ConfigurationApplicationComponent); +export default ConfigurationApplication;
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java b/sdnr/wt/odlux/apps/configurationApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java new file mode 100644 index 000000000..1e882fc69 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.odlux.bundles; + +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle; +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader; + +public class MyOdluxBundle extends OdluxBundle { + + @Override + public void initialize() { + super.initialize(); + } + + @Override + public void clean() { + super.clean(); + } + + @Override + public String getResourceFileContent(String filename) { + return super.getResourceFileContent(filename); + } + + @Override + public boolean hasResource(String filename) { + return super.hasResource(filename); + } + + @Override + public void setBundleName(String bundleName) { + super.setBundleName(bundleName); + } + + @Override + public void setLoader(OdluxBundleLoader loader) { + super.setLoader(loader); + } + + @Override + public String getBundleName() { + return super.getBundleName(); + } + + @Override + public OdluxBundleLoader getLoader() { + return super.getLoader(); + } + + public MyOdluxBundle() { + super(); + } +} diff --git a/sdnr/wt/odlux/apps/configurationApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wt/odlux/apps/configurationApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml new file mode 100644 index 000000000..48f7dde3d --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -0,0 +1,9 @@ +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + <reference id="loadersvc" availability="mandatory" activation="eager" interface="org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader"/> + + <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.onap.ccsdk.features.sdnr.wt.odlux.bundles.MyOdluxBundle"> + <property name="loader" ref="loadersvc"/> + <property name="bundleName" value="configurationApp"/> + <property name="index" value="30"/> + </bean> +</blueprint> diff --git a/sdnr/wt/odlux/apps/configurationApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java b/sdnr/wt/odlux/apps/configurationApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java new file mode 100644 index 000000000..edf68e096 --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.odlux.bundles.test; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.odlux.OdluxBundleLoaderImpl; +import org.onap.ccsdk.features.sdnr.wt.odlux.bundles.MyOdluxBundle; + +public class TestBundleRes { + + @Test + public void test() { + OdluxBundleLoaderImpl loader = OdluxBundleLoaderImpl.getInstance(); + MyOdluxBundle b = new MyOdluxBundle(); + b.setLoader(loader); + b.setIndex(0); + b.setBundleName("abc"); + b.initialize(); + assertTrue(loader.getNumberOfBundles()==1); + assertNotNull(b.getLoader()); + assertEquals("abc",b.getBundleName()); + assertTrue(b.hasResource("test.js")); + assertNotNull(b.getResourceFileContent("test.js")); + b.clean(); + assertTrue(loader.getNumberOfBundles()==0); + } + +} diff --git a/sdnr/wt/odlux/apps/configurationApp/src2/test/resources/test.js b/sdnr/wt/odlux/apps/configurationApp/src2/test/resources/test.js new file mode 100644 index 000000000..b47fdc39f --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/src2/test/resources/test.js @@ -0,0 +1,5 @@ +asdac sad +as +d +sad + sadfa
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/configurationApp/tsconfig.json b/sdnr/wt/odlux/apps/configurationApp/tsconfig.json new file mode 100644 index 000000000..b0c9b424d --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/tsconfig.json @@ -0,0 +1,38 @@ +{ + "compilerOptions": { + "baseUrl": "./src", + "outDir": "./dist", + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports": false, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "strictNullChecks": true, + "pretty": true, + "newLine": "LF", + "module": "es2015", + "target": "es2016", + "moduleResolution": "node", + "experimentalDecorators": true, + "jsx": "preserve", + "lib": [ + "dom", + "es2015", + "es2016" + ], + "types": [ + "node", + "prop-types", + "react", + "react-dom" + ] + }, + "exclude": [ + "dist", + "node_modules" + ] +} diff --git a/sdnr/wt/odlux/apps/configurationApp/webpack.config.js b/sdnr/wt/odlux/apps/configurationApp/webpack.config.js new file mode 100644 index 000000000..e44b9322b --- /dev/null +++ b/sdnr/wt/odlux/apps/configurationApp/webpack.config.js @@ -0,0 +1,158 @@ +/** + * Webpack 4 configuration file + * see https://webpack.js.org/configuration/ + * see https://webpack.js.org/configuration/dev-server/ + */ + +"use strict"; + +const path = require("path"); +const webpack = require("webpack"); +const CopyWebpackPlugin = require("copy-webpack-plugin"); +const TerserPlugin = require('terser-webpack-plugin'); + +// const __dirname = (path => path.replace(/^([a-z]\:)/, c => c.toUpperCase()))(process.__dirname()); + +module.exports = (env) => { + const distPath = path.resolve(__dirname, env === "release" ? "." : "../..", "dist"); + const frameworkPath = path.resolve(__dirname, env === "release" ? "../../framework" : "../..", "dist"); + return [{ + name: "App", + + mode: "none", //disable default behavior + + target: "web", + + context: path.resolve(__dirname, "src"), + + entry: { + configurationApp: ["./plugin.tsx"] + }, + + devtool: env === "release" ? false : "source-map", + + resolve: { + extensions: [".ts", ".tsx", ".js", ".jsx"] + }, + + output: { + path: distPath, + filename: "[name].js", + library: "[name]", + libraryTarget: "umd2", + chunkFilename: "[name].js" + }, + module: { + rules: [{ + test: /\.tsx?$/, + exclude: /node_modules/, + use: [{ + loader: "babel-loader" + }, { + loader: "ts-loader" + }] + }, { + test: /\.jsx?$/, + exclude: /node_modules/, + use: [{ + loader: "babel-loader" + }] + }] + }, + + optimization: { + noEmitOnErrors: true, + namedModules: env !== "release", + minimize: env === "release", + minimizer: env !== "release" ? [] : [new TerserPlugin({ + terserOptions: { + warnings: false, // false, true, "verbose" + compress: { + drop_console: true, + drop_debugger: true, + } + } + })], + }, + + plugins: [ + new webpack.DllReferencePlugin({ + context: path.resolve(__dirname, "../../framework/src"), + manifest: require(path.resolve(frameworkPath, "vendor-manifest.json")), + sourceType: "umd2" + }), + new webpack.DllReferencePlugin({ + context: path.resolve(__dirname, "../../framework/src"), + manifest: require(path.resolve(frameworkPath, "app-manifest.json")), + sourceType: "umd2" + }), + new CopyWebpackPlugin([{ + from: "assets", + to: path.resolve(distPath, "assets") + }]), + ...(env === "release") ? [ + new webpack.DefinePlugin({ + "process.env": { + NODE_ENV: "'production'", + VERSION: JSON.stringify(require("./package.json").version) + } + }), + ] : [ + new webpack.DefinePlugin({ + "process.env": { + NODE_ENV: "'development'", + VERSION: JSON.stringify(require("./package.json").version) + } + }), + new CopyWebpackPlugin([{ + from: 'index.html', + to: distPath + }]), + ] + ], + + devServer: { + public: "http://localhost:3100", + contentBase: frameworkPath, + + compress: true, + headers: { + "Access-Control-Allow-Origin": "*" + }, + host: "0.0.0.0", + port: 3100, + disableHostCheck: true, + historyApiFallback: true, + inline: true, + hot: false, + quiet: false, + stats: { + colors: true + }, + proxy: { + "/oauth2/": { + target: "http://localhost:3000", + secure: false + }, + "/database/": { + target: "http://localhost:3000", + secure: false + }, + "/restconf/": { + target: "http://localhost:3000", + secure: false + }, + "/help/": { + target: "http://localhost:3000", + secure: false + }, + "/websocket/": { + target: "http://localhost:3000", + ws: true, + changeOrigin: true, + secure: false + } + } + } + }]; +} diff --git a/sdnr/wt/odlux/apps/connectApp/pom.xml b/sdnr/wt/odlux/apps/connectApp/pom.xml index d8579e43c..b59a360eb 100644 --- a/sdnr/wt/odlux/apps/connectApp/pom.xml +++ b/sdnr/wt/odlux/apps/connectApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -125,7 +127,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx index 9cbc368cb..9246ffb9d 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx +++ b/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx @@ -45,7 +45,7 @@ const styles = (theme: Theme) => createStyles({ const mapProps = (state: IApplicationStoreState) => ({ requiredNetworkElementsProperties: createRequiredNetworkElementsProperties(state), - mountedNetworkElements: state.connectApp.mountedNetworkElements + mountedNetworkElements: state.connect.mountedNetworkElements }); const mapDispatch = (dispatcher: IDispatcher) => ({ @@ -74,7 +74,7 @@ export class RequiredNetworkElementsListComponent extends React.Component<Requir }; } - // private navigationCreator + // private navigationCreator render(): JSX.Element { const { classes } = this.props; @@ -123,11 +123,11 @@ export class RequiredNetworkElementsListComponent extends React.Component<Requir <Tooltip title={ "Info" } ><Button className={ classes.button } >I</Button></Tooltip> </div> <div className={ classes.spacer }> - <Tooltip title={ "Fault" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("faultApp", rowData) } >F</Button></Tooltip> - <Tooltip title={ "Configure" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("configureApp", rowData)} >C</Button></Tooltip> - <Tooltip title={ "Accounting " } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("accountingApp", rowData) }>A</Button></Tooltip> - <Tooltip title={ "Performance" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("performanceApp", rowData) }>P</Button></Tooltip> - <Tooltip title={ "Security" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("securityApp", rowData) }>S</Button></Tooltip> + <Tooltip title={ "Fault" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("fault", rowData) } >F</Button></Tooltip> + <Tooltip title={"Configure"} ><Button className={classes.button} onClick={this.navigateToApplicationHandlerCreator("configuration", rowData)} >C</Button></Tooltip> + <Tooltip title={ "Accounting " } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("accounting", rowData) }>A</Button></Tooltip> + <Tooltip title={ "Performance" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("performance", rowData) }>P</Button></Tooltip> + <Tooltip title={ "Security" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("security", rowData) }>S</Button></Tooltip> </div> </> ) diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx index fe2c58ced..f4a885a11 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx +++ b/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx @@ -32,7 +32,7 @@ const styles = (theme: Theme) => createStyles({ } }); -const mapProps = ({ connectApp: state }: IApplicationStoreState) => ({ +const mapProps = ({ connect: state }: IApplicationStoreState) => ({ mountedNetworkElements: state.mountedNetworkElements }); @@ -126,11 +126,11 @@ export class UnknownNetworkElementsListComponent extends React.Component<Unknown <Tooltip title={ "Info" } ><Button className={ classes.button } >I</Button></Tooltip> </div> <div className={ classes.spacer }> - <Tooltip title={ "Fault" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("faultApp", rowData) } >F</Button></Tooltip> - <Tooltip title={ "Configure" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("configureApp", rowData) } >C</Button></Tooltip> - <Tooltip title={ "Accounting " } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("accountingApp", rowData) }>A</Button></Tooltip> - <Tooltip title={ "Performance" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("performanceApp", rowData) }>P</Button></Tooltip> - <Tooltip title={ "Security" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("securityApp", rowData) }>S</Button></Tooltip> + <Tooltip title={ "Fault" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("fault", rowData) } >F</Button></Tooltip> + <Tooltip title={ "Configure" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("configuration", rowData) } >C</Button></Tooltip> + <Tooltip title={ "Accounting " } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("accounting", rowData) }>A</Button></Tooltip> + <Tooltip title={ "Performance" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("performance", rowData) }>P</Button></Tooltip> + <Tooltip title={ "Security" } ><Button className={ classes.button } onClick={ this.navigateToApplicationHandlerCreator("security", rowData) }>S</Button></Tooltip> </div> </> ) diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx index dd9e3e1df..f67d5b8c9 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx +++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx @@ -11,7 +11,7 @@ export interface IConnectAppStoreState { declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - connectApp: IConnectAppStoreState + connect: IConnectAppStoreState } } diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx index 140020eaa..a3b1f1a2f 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx +++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx @@ -12,10 +12,14 @@ const connectionStatusLogSearchHandler = createSearchDataHandler<{ event: Connec objectId: event._source.event.objectId, type: event._source.event.type, elementStatus: event._source.event.type === 'ObjectCreationNotificationXml' - ? 'connected' + ? 'mounted' : event._source.event.type === 'ObjectDeletionNotificationXml' - ? 'disconnected' - : 'unknown' + ? 'unmounted' + : event._source.event.type === 'AttributeValueChangedNotificationXml' + ? event._source.event.newValue + : 'unknown', + newValue: '' + }), (name) => `event.${ name }`); @@ -25,6 +29,6 @@ export const { createProperties: createConnectionStatusLogProperties, reloadAction: connectionStatusLogReloadAction, - // set value action, to change a value -} = createExternal<ConnectionStatusLogType>(connectionStatusLogSearchHandler, appState => appState.connectApp.connectionStatusLog); + // set value action, to change a value +} = createExternal<ConnectionStatusLogType>(connectionStatusLogSearchHandler, appState => appState.connect.connectionStatusLog); diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx index b2d547717..332cb6dcb 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx +++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx @@ -13,6 +13,6 @@ export const { createProperties: createRequiredNetworkElementsProperties, reloadAction: requiredNetworkElementsReloadAction, - // set value action, to change a value -} = createExternal<RequiredNetworkElementType>(requiredNetworkElementsSearchHandler, appState => appState.connectApp.requiredNetworkElements); + // set value action, to change a value +} = createExternal<RequiredNetworkElementType>(requiredNetworkElementsSearchHandler, appState => appState.connect.requiredNetworkElements); diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/connectionStatusLog.ts b/sdnr/wt/odlux/apps/connectApp/src/models/connectionStatusLog.ts index d3aa20379..61f7ef5ca 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/models/connectionStatusLog.ts +++ b/sdnr/wt/odlux/apps/connectApp/src/models/connectionStatusLog.ts @@ -5,5 +5,6 @@ export type ConnectionStatusLogType = { timeStamp: string; objectId: string; type: string; + newValue: string; } diff --git a/sdnr/wt/odlux/apps/connectApp/src/plugin.tsx b/sdnr/wt/odlux/apps/connectApp/src/plugin.tsx index 4a02b9f35..c9c11820e 100644 --- a/sdnr/wt/odlux/apps/connectApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/connectApp/src/plugin.tsx @@ -9,7 +9,8 @@ import ConnectApplication from './views/connectView'; import { addMountedNetworkElementAsyncActionCreator, - updateMountedNetworkElementAsyncActionCreator + updateMountedNetworkElementAsyncActionCreator, + loadAllMountedNetworkElementsAsync } from './actions/mountedNetworkElementsActions'; import { AddSnackbarNotification } from '../../../framework/src/actions/snackbarActions'; @@ -23,21 +24,22 @@ type ObjectNotification = { export function register() { const applicationApi = applicationManager.registerApplication({ - name: "connectApp", + name: "connect", icon: faPlug, rootComponent: ConnectApplication, rootActionHandler: connectAppRootHandler, - menuEntry: "Connect App" + menuEntry: "Connect" }); + applicationApi.applicationStoreInitialized.then(applicationStore => { applicationStore.dispatch(loadAllMountedNetworkElementsAsync); }); // subscribe to the websocket notifications - subscribe<ObjectNotification & IFormatedMessage>(["ObjectCreationNotification", "ObjectDeletionNotification"], (msg => { - const store = applicationApi && applicationApi.applicationStore; + subscribe<ObjectNotification & IFormatedMessage>(["ObjectCreationNotification", "ObjectDeletionNotification", "AttributeValueChangedNotification"], (msg => { + const store = applicationApi.applicationStore; if (msg && msg.notifType === "ObjectCreationNotification" && store) { store.dispatch(addMountedNetworkElementAsyncActionCreator(msg.objectId)); - store.dispatch(new AddSnackbarNotification({ message: `Adding network element [${ msg.objectId }]`, options: { variant: 'info' } })); - } else if (msg && msg.notifType === "ObjectDeletionNotification" && store) { - store.dispatch(new AddSnackbarNotification({ message: `Updating network element [${ msg.objectId }]`, options: { variant: 'info' } })); + store.dispatch(new AddSnackbarNotification({ message: `Adding network element [${msg.objectId}]`, options: { variant: 'info' } })); + } else if (msg && (msg.notifType === "ObjectDeletionNotification" || msg.notifType === "AttributeValueChangedNotification") && store) { + store.dispatch(new AddSnackbarNotification({ message: `Updating network element [${msg.objectId}]`, options: { variant: 'info' } })); store.dispatch(updateMountedNetworkElementAsyncActionCreator(msg.objectId)); } })); diff --git a/sdnr/wt/odlux/apps/demoApp/pom.xml b/sdnr/wt/odlux/apps/demoApp/pom.xml index 6e7065664..1d8b9d739 100644 --- a/sdnr/wt/odlux/apps/demoApp/pom.xml +++ b/sdnr/wt/odlux/apps/demoApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -125,7 +127,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/demoApp/src/handlers/demoAppRootHandler.ts b/sdnr/wt/odlux/apps/demoApp/src/handlers/demoAppRootHandler.ts index ee21a9c90..00546fd07 100644 --- a/sdnr/wt/odlux/apps/demoApp/src/handlers/demoAppRootHandler.ts +++ b/sdnr/wt/odlux/apps/demoApp/src/handlers/demoAppRootHandler.ts @@ -13,7 +13,7 @@ export interface IDemoAppStoreState { declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - demoApp: IDemoAppStoreState + demo: IDemoAppStoreState } } diff --git a/sdnr/wt/odlux/apps/demoApp/src/plugin.tsx b/sdnr/wt/odlux/apps/demoApp/src/plugin.tsx index f450275c2..cd9efe136 100644 --- a/sdnr/wt/odlux/apps/demoApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/demoApp/src/plugin.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import * as React from "react"; import { withRouter, RouteComponentProps, Route, Switch, Redirect } from 'react-router-dom'; import { faAddressBook, faRegistered } from '@fortawesome/free-solid-svg-icons'; @@ -17,21 +17,21 @@ type AppProps = RouteComponentProps & Connect; const App = (props: AppProps) => ( <Switch> - <Route exact path={ `${ props.match.path }/authors` } component={AuthorsList} /> - <Route path={ `${ props.match.path }/authors/:authorId` } component={EditAuthor } /> + <Route exact path={ `${ props.match.path }/authors` } component={AuthorsList} /> + <Route path={ `${ props.match.path }/authors/:authorId` } component={EditAuthor } /> <Redirect to={ `${ props.match.path }/authors` } /> </Switch> -); - -const FinalApp = withRouter(connect()(App)); +); + +const FinalApp = withRouter(connect()(App)); export function register() { const applicationApi = applicationManager.registerApplication({ - name: "demoApp", + name: "demo", icon: faAddressBook, rootComponent: FinalApp, rootActionHandler: demoAppRootHandler, exportedComponents: { counter: Counter }, - menuEntry: "Demo App" + menuEntry: "Demo" }); } diff --git a/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx b/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx index b192fccf8..75761cd19 100644 --- a/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx +++ b/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx @@ -20,7 +20,7 @@ interface IAuthorsListProps { } class AuthorsListComponent extends React.Component<RouteComponentProps & IAuthorsListProps> { - + render(): JSX.Element { const { authors, busy } = this.props; return ( @@ -58,7 +58,7 @@ class AuthorsListComponent extends React.Component<RouteComponentProps & IAuthor export const AuthorsList = withRouter( connect( - ({ demoApp: state }) => ({ + ({ demo: state }) => ({ authors: state.listAuthors.authors, busy: state.listAuthors.busy }), diff --git a/sdnr/wt/odlux/apps/faultApp/pom.xml b/sdnr/wt/odlux/apps/faultApp/pom.xml index 376449bc0..5bfcd52ec 100644 --- a/sdnr/wt/odlux/apps/faultApp/pom.xml +++ b/sdnr/wt/odlux/apps/faultApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> @@ -126,7 +128,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts index 0b974207b..3cc467546 100644 --- a/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts +++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts @@ -19,6 +19,6 @@ export const { createProperties: createAlarmLogEntriesProperties, reloadAction: alarmLogEntriesReloadAction, - // set value action, to change a value -} = createExternal<Fault>(alarmLogEntriesSearchHandler, appState => appState.faultApp.alarmLogEntries); + // set value action, to change a value +} = createExternal<Fault>(alarmLogEntriesSearchHandler, appState => appState.fault.alarmLogEntries); diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts index 6bbe2976f..67eb10d32 100644 --- a/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts +++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts @@ -19,6 +19,6 @@ export const { createProperties: createCurrentProblemsProperties, reloadAction: currentProblemsReloadAction, - // set value action, to change a value -} = createExternal<Fault>(currentProblemsSearchHandler, appState => appState.faultApp.currentProblems); + // set value action, to change a value +} = createExternal<Fault>(currentProblemsSearchHandler, appState => appState.fault.currentProblems); diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts index 005e3e5a4..a887a3327 100644 --- a/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts +++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts @@ -27,7 +27,7 @@ const currentOpenPanelHandler: IActionHandler<string | null> = (state = null, ac declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - faultApp: IFaultAppStoreState; + fault: IFaultAppStoreState; } } diff --git a/sdnr/wt/odlux/apps/faultApp/src/plugin.tsx b/sdnr/wt/odlux/apps/faultApp/src/plugin.tsx index 6f83e74dc..c4545ad1a 100644 --- a/sdnr/wt/odlux/apps/faultApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/faultApp/src/plugin.tsx @@ -1,7 +1,7 @@ // app configuration and main entry point for the app -import * as React from "react"; +import * as React from "react"; import { withRouter, RouteComponentProps, Route, Switch, Redirect } from 'react-router-dom'; import connect, { Connect, IDispatcher } from '../../../framework/src/flux/connect'; @@ -22,7 +22,7 @@ import { AddFaultNotificationAction } from "./actions/notificationActions"; import { createCurrentProblemsProperties, createCurrentProblemsActions } from "./handlers/currentProblemsHandler"; -let currentMountId: string | undefined = undefined; +let currentMountId: string | undefined = undefined; const mapProps = (state: IApplicationStoreState) => ({ currentProblemsProperties: createCurrentProblemsProperties(state), @@ -35,7 +35,7 @@ const mapDisp = (dispatcher: IDispatcher) => ({ const FaultApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComponentProps<{ mountId?: string }> & Connect<typeof mapProps, typeof mapDisp>) => { if (currentMountId !== props.match.params.mountId) { - // route parameter has changed + // route parameter has changed currentMountId = props.match.params.mountId || undefined; // Hint: This timeout is need, since it is not recommended to change the state while rendering is in progress ! window.setTimeout(() => { @@ -54,14 +54,14 @@ const FaultApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteCom const App = withRouter((props: RouteComponentProps) => ( <Switch> - <Route path={ `${ props.match.path }/:mountId?` } component={ FaultApplicationRouteAdapter } /> + <Route path={ `${ props.match.path }/:mountId?` } component={ FaultApplicationRouteAdapter } /> <Redirect to={ `${ props.match.path }` } /> </Switch> -)); - +)); + export function register() { const applicationApi = applicationManager.registerApplication({ - name: "faultApp", + name: "fault", icon: faBell, rootComponent: App, rootActionHandler: faultAppRootHandler, diff --git a/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx b/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx index 9eb3a00ff..d4c7c597a 100644 --- a/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx +++ b/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { withRouter, RouteComponentProps } from 'react-router-dom'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; +import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; import { Panel } from '../../../../framework/src/components/material-ui'; @@ -19,9 +19,9 @@ import { createAlarmLogEntriesProperties, createAlarmLogEntriesActions, alarmLog import { SetPanelAction } from '../actions/panelChangeActions'; const mapProps = (state: IApplicationStoreState) => ({ - activePanel: state.faultApp.currentOpenPanel, + activePanel: state.fault.currentOpenPanel, currentProblemsProperties: createCurrentProblemsProperties(state), - faultNotifications: state.faultApp.faultNotifications, + faultNotifications: state.fault.faultNotifications, alarmLogEntriesProperties: createAlarmLogEntriesProperties(state) }); @@ -39,15 +39,15 @@ type FaultApplicationComponentProps = RouteComponentProps & Connect<typeof mapPr const FaultTable = MaterialTable as MaterialTableCtorType<Fault>; class FaultApplicationComponent extends React.Component<FaultApplicationComponentProps>{ - + render(): JSX.Element { - + const { activePanel } = this.props; - + const onTogglePanel = (panelId: PanelId) => { const nextActivePanel = panelId === this.props.activePanel ? null : panelId; this.props.setCurrentPanel(nextActivePanel); - + switch (nextActivePanel) { case 'CurrentProblem': this.props.reloadCurrentProblems(); @@ -66,7 +66,7 @@ class FaultApplicationComponent extends React.Component<FaultApplicationComponen return ( <> <Panel activePanel={ activePanel } panelId={ 'CurrentProblem' } onToggle={ onTogglePanel } title={ 'Current Problem List' }> - <FaultTable idProperty={ '_id' } columns={ [ + <FaultTable idProperty={ '_id' } columns={ [ { property: "icon", title: "", type: ColumnType.custom, customControl: this.renderIcon }, { property: "timeStamp", type: ColumnType.text, title: "Time Stamp" }, { property: "nodeName", title: "Node Name", type: ColumnType.text }, @@ -76,7 +76,7 @@ class FaultApplicationComponent extends React.Component<FaultApplicationComponen { property: "severity", title: "Severity", type: ColumnType.text, width: "140px" }, ] } { ...this.props.currentProblemsProperties } { ...this.props.currentProblemsActions } /> </Panel> - <Panel activePanel={ activePanel } panelId={ 'AlarmNotifications' } onToggle={ onTogglePanel } title={ `Alarm Notifications ${this.props.faultNotifications.faults.length} ${this.props.faultNotifications.since}` }> + <Panel activePanel={ activePanel } panelId={ 'AlarmNotifications' } onToggle={ onTogglePanel } title={ `Alarm Notifications ${this.props.faultNotifications.faults.length} since ${this.props.faultNotifications.since}` }> <FaultTable rows={ this.props.faultNotifications.faults } asynchronus columns={ [ { property: "icon", title: "", type: ColumnType.custom, customControl: this.renderIcon }, { property: "timeStamp", title: "Time Stamp" }, @@ -104,9 +104,9 @@ class FaultApplicationComponent extends React.Component<FaultApplicationComponen private renderIcon = (props: { rowData: Fault }) => { return ( - <FontAwesomeIcon icon={ faExclamationTriangle } /> + <FontAwesomeIcon icon={ faExclamationTriangle } /> ); - }; + }; } diff --git a/sdnr/wt/odlux/apps/helpApp/pom.xml b/sdnr/wt/odlux/apps/helpApp/pom.xml index 3e1d4e0ca..9115d896a 100644 --- a/sdnr/wt/odlux/apps/helpApp/pom.xml +++ b/sdnr/wt/odlux/apps/helpApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -125,7 +127,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx b/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx index 72bb39e39..2328b12b3 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx +++ b/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx @@ -13,23 +13,23 @@ import { TocTreeNode } from '../models/tocNode'; const TocTree = TreeView as any as TreeViewCtorType<TocTreeNode>; const mapProps = (state: IApplicationStoreState) => ({ - helpToc: state.helpApp.toc, - helpBusy: state.helpApp.busy + helpToc: state.help.toc, + helpBusy: state.help.busy }); const mapDisp = (dispatcher: IDispatcher) => ({ - requestDocument: (node: TocTreeNode) => dispatcher.dispatch(new NavigateToApplication("helpApp", node.uri)) + requestDocument: (node: TocTreeNode) => dispatcher.dispatch(new NavigateToApplication("help", node.uri)) }); const SubMenuEntryComponent: React.SFC<Connect<typeof mapProps, typeof mapDisp>> = (props) => { return props.helpToc ? ( - <TocTree items={ props.helpToc } contentProperty={ "label" } childrenProperty={ "nodes" } depthOffset={ 1 } + <TocTree items={ props.helpToc } contentProperty={ "label" } childrenProperty={ "nodes" } depthOffset={ 1 } useFolderIcons={ false } enableSearchBar={ false } onItemClick={ props.requestDocument } /> ) - : ( - <ListItemText >Loading ...</ListItemText> - ) + : ( + <ListItemText >Loading ...</ListItemText> + ) }; export const SubMenuEntry = connect(mapProps, mapDisp)(SubMenuEntryComponent); diff --git a/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts b/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts index efdc6e83d..b9ddc50af 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts +++ b/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts @@ -14,14 +14,14 @@ export interface IHelpAppStoreState { declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - helpApp: IHelpAppStoreState + help: IHelpAppStoreState } } const helpAppStoreStateInit: IHelpAppStoreState = { busy: false, toc: undefined, - content: undefined, + content: undefined, currentPath: undefined }; diff --git a/sdnr/wt/odlux/apps/helpApp/src/index.html b/sdnr/wt/odlux/apps/helpApp/src/index.html index 2d20410e0..6865db051 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/index.html +++ b/sdnr/wt/odlux/apps/helpApp/src/index.html @@ -17,7 +17,7 @@ // run the application require(["app", "helpApp"], function (app, helpApp) { helpApp.register(); - app("./app.tsx") + app("./app.tsx").runApplication(); }); </script> </body> diff --git a/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx b/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx index d1cf80804..f871ab9d9 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx @@ -1,6 +1,6 @@ // app configuration and main entry point for the app -import * as React from "react"; +import * as React from "react"; import { withRouter, RouteComponentProps, Route, Switch, Redirect } from 'react-router-dom'; import { faFirstAid } from '@fortawesome/free-solid-svg-icons'; // select app icon @@ -18,7 +18,7 @@ import { SubMenuEntry } from "./components/subMenuEntry"; import '!style-loader!css-loader!highlight.js/styles/default.css'; const mapProps = (state: IApplicationStoreState) => ({ - + }); const mapDisp = (dispatcher: IDispatcher) => ({ @@ -31,7 +31,7 @@ let currentHelpPath: string | undefined = undefined; const HelpApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComponentProps<{ '0'?: string }> & Connect<typeof mapProps, typeof mapDisp>) => { if (currentHelpPath !== props.match.params["0"]) { - // route parameter has changed + // route parameter has changed currentHelpPath = props.match.params["0"] || undefined; // Hint: This timeout is need, since it is not recommended to change the state while rendering is in progress ! window.setTimeout(() => { @@ -54,7 +54,7 @@ const App = withRouter((props: RouteComponentProps) => ( export async function register() { const applicationApi = applicationManager.registerApplication({ - name: "helpApp", + name: "help", icon: faFirstAid, rootComponent: App, rootActionHandler: helpAppRootHandler, @@ -63,7 +63,7 @@ export async function register() { }); // start the initial toc request after the application store is initalized - const store = await applicationApi.applicationStoreInitialized; + const store = await applicationApi.applicationStoreInitialized; store.dispatch(requestTocAsyncAction); }
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts index 480cdd04e..800e0b47f 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts +++ b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts @@ -9,7 +9,7 @@ class HelpService { public async getDocument(path: string): Promise<string | null> { // check if the result is allready in the cache if (this.documents[path]) return Promise.resolve(this.documents[path]); - + // request the document const result = await requestRest<string>(`/help/${ path }`.replace(/\/{2,}/i, '/')); if (result) { @@ -23,7 +23,7 @@ class HelpService { if (this.tocNodeCollection) return Promise.resolve(this.tocNodeCollection); // request the table of contents - const result = await requestRest<TocNodeCollection>('/help/?meta'); + const result = await requestRest<TocNodeCollection>('/help/?meta', undefined, false); if (result !== false) { const mapNodesCollection = (col: TocNodeCollection): TocTreeNode[] => { return Object.keys(col).reduce <TocTreeNode[]>((acc, key) => { diff --git a/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx b/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx index dedb93607..54f708458 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx +++ b/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx @@ -11,8 +11,8 @@ import { Markdown } from "../components/markdown"; import '!style-loader!css-loader!github-markdown-css/github-markdown.css' const mapProps = (state: IApplicationStoreState) => ({ - content: state.helpApp.content, - currentPath: state.helpApp.currentPath + content: state.help.content, + currentPath: state.help.currentPath }); type HelpApplicationComponentProps = Connect<typeof mapProps>; @@ -22,27 +22,27 @@ class HelpApplicationComponent extends React.Component<HelpApplicationComponentP /** * Initializes a new instance. */ - constructor(props: HelpApplicationComponentProps) { + constructor (props: HelpApplicationComponentProps) { super(props); - + this.renderer = new marked.Renderer(); this.renderer.link = (href: string, title: string, text: string) => { // check if href is rel or abs const absUrlMatch = href.trim().match(/^https?:\/\//i); - return `<a href="${ absUrlMatch ? href : resolvePath('#/helpApp/', this.props.currentPath || '/', href) }" title="${ title }" >${ text }</a>` + return `<a href="${absUrlMatch ? href : resolvePath('#/help/', this.props.currentPath || '/', href)}" title="${title}" >${text}</a>` }; this.renderer.image = (href: string, title: string) => { - return `<img src="${ resolvePath('/help/', this.props.currentPath || '/', href) }" alt="${ title }" />` + return `<img src="${resolvePath('/help/', this.props.currentPath || '/', href)}" alt="${title}" />` }; } render(): JSX.Element { return this.props.content ? ( - <Markdown text={ this.props.content } markedOptions={ { renderer: this.renderer } } className="markdown-body" - style={{ maxWidth: "960px", margin: "1.5em auto" }} /> + <Markdown text={this.props.content} markedOptions={{ renderer: this.renderer }} className="markdown-body" + style={{ maxWidth: "960px", margin: "1.5em auto" }} /> ) : (<h2>Loading ...</h2>) } diff --git a/sdnr/wt/odlux/apps/helpApp/webpack.config.js b/sdnr/wt/odlux/apps/helpApp/webpack.config.js index fdae7d957..f9448a310 100644 --- a/sdnr/wt/odlux/apps/helpApp/webpack.config.js +++ b/sdnr/wt/odlux/apps/helpApp/webpack.config.js @@ -143,8 +143,26 @@ module.exports = (env) => { colors: true }, proxy: { - "/help": { - target: "http://localhost:8181", + "/oauth2/": { + target: "http://localhost:3000", + secure: false + }, + "/database/": { + target: "http://localhost:3000", + secure: false + }, + "/restconf/": { + target: "http://localhost:3000", + secure: false + }, + "/help/": { + target: "http://localhost:3000", + secure: false + }, + "/websocket/": { + target: "http://localhost:3000", + ws: true, + changeOrigin: true, secure: false } } diff --git a/sdnr/wt/odlux/apps/inventoryApp/pom.xml b/sdnr/wt/odlux/apps/inventoryApp/pom.xml index b2572563f..713dd3606 100644 --- a/sdnr/wt/odlux/apps/inventoryApp/pom.xml +++ b/sdnr/wt/odlux/apps/inventoryApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -125,7 +127,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts new file mode 100644 index 000000000..6330e7e87 --- /dev/null +++ b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts @@ -0,0 +1,27 @@ +// main state handler + +import { combineActionHandler } from '../../../../framework/src/flux/middleware'; + +// ** do not remove ** +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { IActionHandler } from '../../../../framework/src/flux/action'; +import { IInventoryElementsState, inventoryElementsActionHandler } from './inventoryElementsHandler'; + + +export interface IInventoryAppStateState { + inventoryElements: IInventoryElementsState +} + + +declare module '../../../../framework/src/store/applicationStore' { + interface IApplicationStoreState { + inventory: IInventoryAppStateState; + } +} + +const actionHandlers = { + inventoryElements: inventoryElementsActionHandler +}; + +export const faultAppRootHandler = combineActionHandler<IInventoryAppStateState>(actionHandlers); +export default faultAppRootHandler; diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx new file mode 100644 index 000000000..5673d1778 --- /dev/null +++ b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx @@ -0,0 +1,19 @@ +import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { InventoryType } from '../models/inventory'; + +export interface IInventoryElementsState extends IExternalTableState<InventoryType> { } + +// create eleactic search material data fetch handler +const inventoryElementsSearchHandler = createSearchDataHandler<InventoryType>("sdnevents/inventoryequipment"); + +export const { + actionHandler: inventoryElementsActionHandler, + createActions: createInventoryElementsActions, + createProperties: createInventoryElementsProperties, + reloadAction: inventoryElementsReloadAction, + + // set value action, to change a value +} = createExternal<InventoryType>(inventoryElementsSearchHandler, appState => appState.inventory.inventoryElements); + diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/index.html b/sdnr/wt/odlux/apps/inventoryApp/src/index.html index d24358e18..0cdb9e93b 100644 --- a/sdnr/wt/odlux/apps/inventoryApp/src/index.html +++ b/sdnr/wt/odlux/apps/inventoryApp/src/index.html @@ -17,7 +17,7 @@ // run the application require(["app", "inventoryApp"], function (app, inventoryApp) { inventoryApp.register(); - app("./app.tsx"); + app("./app.tsx").runApplication(); }); </script> </body> diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx b/sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx index 52e1d4802..e5e7cc8c7 100644 --- a/sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx @@ -6,12 +6,14 @@ import { faShoppingBag } from '@fortawesome/free-solid-svg-icons'; // select ap import applicationManager from '../../../framework/src/services/applicationManager'; import { Dashboard } from './views/dashboard'; +import faultAppRootHandler from './handlers/inventoryAppRootHandler'; export function register() { applicationManager.registerApplication({ - name: "inventoryApp", + name: "inventory", icon: faShoppingBag, + rootActionHandler: faultAppRootHandler, rootComponent: Dashboard, - menuEntry: "Inventory App" + menuEntry: "Inventory" }); } diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx b/sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx index 8d07fa88c..2c6b4c838 100644 --- a/sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx +++ b/sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx @@ -1,73 +1,47 @@ import * as React from "react"; -import { MaterialTable, DataCallback, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; -import { Result, InventoryType } from '../models/inventory'; +import { Connect, connect, IDispatcher } from '../../../../framework/src/flux/connect'; +import { MaterialTable, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; - -const url = `${ window.location.origin}/database/sdnevents/inventoryequipment/_search`; - -const fetchData: DataCallback = async (page, rowsPerPage, orderBy, order, filter) => { - const from = rowsPerPage && page != null && !isNaN(+page) - ? (+page) * rowsPerPage - : null; - - const filterKeys = filter && Object.keys(filter) || []; - - const query = { - ...filterKeys.length > 0 ? { - query: { - bool: { - must: filterKeys.reduce((acc, cur) => { - if (acc && filter && filter[cur]) { - acc.push({ [filter[cur].indexOf("*") > -1 || filter[cur].indexOf("?") > -1 ? "wildcard" : "prefix"]: { [cur]: filter[cur] } }); - } - return acc; - }, [] as any[]) - } - } - }: { "query": { "match_all": {} } }, - ...rowsPerPage ? { "size": rowsPerPage } : {} , - ...from ? { "from": from } : {}, - ...orderBy && order ? { "sort": [{ [orderBy]: order }] } : {}, - }; - - const result = await fetch(url, { - method: "POST", // *GET, POST, PUT, DELETE, etc. - mode: "no-cors", // no-cors, cors, *same-origin - cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached - headers: { - "Content-Type": "application/json; charset=utf-8", - // "Content-Type": "application/x-www-form-urlencoded", - }, - body: JSON.stringify(query), // body data type must match "Content-Type" header - }); - - if (result.ok) { - const queryResult: Result<InventoryType> = await result.json(); - const data = { - page: Math.min(page || 0, queryResult.hits.total || 0 / (rowsPerPage || 1)), rowCount: queryResult.hits.total, rows: queryResult && queryResult.hits && queryResult.hits.hits && queryResult.hits.hits.map(h => ( - { ...h._source, _id: h._id } - )) || [] - }; - return data; - } - - return { page: 0, rowCount: 0, rows: [] }; -}; +import { InventoryType } from '../models/inventory'; +import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore"; +import { createInventoryElementsProperties, createInventoryElementsActions } from "../handlers/inventoryElementsHandler"; const InventoryTable = MaterialTable as MaterialTableCtorType<InventoryType & {_id: string}>; -export const Dashboard : React.SFC = (props) => ( - <InventoryTable onRequestData={ fetchData } columns={ [ - { property: "uuid", title: "Name" }, - { property: "parentUuid", title: "Parent" }, - { property: "mountpoint", title: "Mountpoint" }, - { property: "manufacturerIdentifier", title: "Manufacturer" }, - { property: "serial", title: "Serial" }, - { property: "typeName", title: "Type" }, - ] } title="Inventory" idProperty="_id" > +const mapProps = (state: IApplicationStoreState) => ({ + inventoryElementsProperties: createInventoryElementsProperties(state), + inventoryElements: state.inventory.inventoryElements +}); + +const mapDispatch = (dispatcher: IDispatcher) => ({ + inventoryElementsActions: createInventoryElementsActions(dispatcher.dispatch) +}); + +class DashboardComponent extends React.Component<Connect<typeof mapProps, typeof mapDispatch>> { + render() { + return <InventoryTable title="Inventory" idProperty="_id" columns={[ + { property: "mountpoint", title: "Mountpoint" }, + { property: "manufacturerIdentifier", title: "Manufacturer" }, + { property: "parentUuid", title: "Parent" }, + { property: "uuid", title: "Name" }, + { property: "serial", title: "Serial" }, + { property: "version", title: "Version" }, + { property: "date", title: "Date" }, + { property: "description", title: "Description" }, + { property: "partTypeId", title: "Part Type Id" }, + { property: "modelIdentifier", title: "Model Identifier" }, + { property: "typeName", title: "Type" }, + { property: "treeLevel", title: "Containment Level" }, + ]} {...this.props.inventoryElementsActions} {...this.props.inventoryElementsProperties} > + </InventoryTable> + } - </InventoryTable> -); + componentDidMount() { + this.props.inventoryElementsActions.onToggleFilter(); + this.props.inventoryElementsActions.onHandleRequestSort("mountpoint"); + } +} +export const Dashboard = connect(mapProps, mapDispatch)(DashboardComponent); export default Dashboard;
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js b/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js index e992a1042..2af2bdb95 100644 --- a/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js +++ b/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js @@ -79,13 +79,13 @@ module.exports = (env) => { new webpack.DllReferencePlugin({ context: path.resolve(__dirname, "../../framework/src"), manifest: require(path.resolve(frameworkPath, "vendor-manifest.json")), - sourceType: "umd2" - }), + sourceType: "umd2" + }), new webpack.DllReferencePlugin({ context: path.resolve(__dirname, "../../framework/src"), manifest: require(path.resolve(frameworkPath, "app-manifest.json")), - sourceType: "umd2" - }), + sourceType: "umd2" + }), ...(env === "release") ? [ new webpack.DefinePlugin({ "process.env": { @@ -126,11 +126,31 @@ module.exports = (env) => { colors: true }, proxy: { - "/database": { - target: "http://localhost:8181", + + "/oauth2/": { + target: "http://localhost:3000", + secure: false + }, + "/database/": { + target: "http://localhost:3000", + secure: false + }, + "/restconf/": { + target: "http://localhost:3000", + secure: false + }, + "/help/": { + target: "http://localhost:3000", + secure: false + }, + "/websocket/": { + target: "http://localhost:3000", + ws: true, + changeOrigin: true, secure: false } } + } }]; } diff --git a/sdnr/wt/odlux/apps/maintenanceApp/pom.xml b/sdnr/wt/odlux/apps/maintenanceApp/pom.xml index cdbc9b096..87ff29043 100644 --- a/sdnr/wt/odlux/apps/maintenanceApp/pom.xml +++ b/sdnr/wt/odlux/apps/maintenanceApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -125,7 +127,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts index 753c1183f..3fe75ad51 100644 --- a/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts +++ b/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts @@ -30,7 +30,7 @@ export const loadAllMainteneceEntriesAsyncAction = (dispatch: Dispatch , getStat } // combine ell entries from the maintenance index with all networkelements - const networkElements = getState().connectApp.mountedNetworkElements; + const networkElements = getState().connect.mountedNetworkElements; const maintenenceEntries = networkElements.elements.reduce((acc, cur) => { const entry = entries.find(e => e.mountId === cur.mountId); acc.push(entry || { diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts index 956d05843..d2e387cc4 100644 --- a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts +++ b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts @@ -14,8 +14,8 @@ export interface IMaintenanceAppStoreState { declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - maintenanceApp: IMaintenanceAppStoreState, - connectApp: IConnectAppStoreState + maintenance: IMaintenanceAppStoreState, + connect: IConnectAppStoreState } } diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx b/sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx index 19e188ec2..f23a875e3 100644 --- a/sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx @@ -16,11 +16,11 @@ const App : React.SFC = (props) => { export function register() { applicationManager.registerApplication({ - name: "maintenanceApp", + name: "maintenance", icon: faLock, rootComponent: App, rootActionHandler: maintenanceAppRootHandler, - menuEntry: "Maintenance App" + menuEntry: "Maintenance" }); } diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx b/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx index f048d6cc5..b9ea8ffa1 100644 --- a/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx +++ b/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx @@ -2,6 +2,9 @@ import * as React from 'react'; import { Theme, createStyles, WithStyles, withStyles, Tooltip } from '@material-ui/core'; +import { faBan } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + import AddIcon from '@material-ui/icons/Add'; import EditIcon from '@material-ui/icons/Edit'; import RemoveIcon from '@material-ui/icons/RemoveCircleOutline'; @@ -37,8 +40,8 @@ const styles = (theme: Theme) => createStyles({ const MaintenenceEntriesTable = MaterialTable as MaterialTableCtorType<MaintenenceEntry>; const mapProps = (state: IApplicationStoreState) => ({ - maintenenceEntries: state.maintenanceApp.maintenenceEntries.entries, - busy: state.maintenanceApp.maintenenceEntries.busy + maintenenceEntries: state.maintenance.maintenenceEntries.entries, + busy: state.maintenance.maintenenceEntries.busy }); const mapDispatcher = (dispatcher: IDispatcher) => ({ @@ -94,12 +97,18 @@ class MaintenenceViewComponent extends React.Component<MaintenenceViewComponentP }); } }; + const now = new Date().valueOf(); return ( <> <MaintenenceEntriesTable asynchronus rows={this.props.maintenenceEntries} customActionButtons={[ addMaintenenceEntryAction ]} columns={ [ - { property: "mountId", title: "Mount Id", type: ColumnType.text }, - { property: "active", title: "Active", type: ColumnType.boolean, labels: { "true": "active", "false": "not active" }, }, + { property: "mountId", title: "Mount Id", type: ColumnType.text }, + { + property: "notifications", title: "Notification", width: 50, align: "center", type: ColumnType.custom, customControl: ({ rowData }) => ( + rowData.active && (Date.parse(rowData.start).valueOf() <= now) && (Date.parse(rowData.end).valueOf() >= now) && <FontAwesomeIcon icon={faBan} /> || null + ) + }, + { property: "active", title: "Activation State", type: ColumnType.boolean, labels: { "true": "active", "false": "not active" }, }, { property: "start", title: "Start Date", type: ColumnType.text }, { property: "end", title: "End Date", type: ColumnType.text }, { property: "actions", title: "Actions", type: ColumnType.custom, customControl : ({ rowData })=>( diff --git a/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js b/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js index 0a2f5abb8..325e70380 100644 --- a/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js +++ b/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js @@ -127,11 +127,11 @@ module.exports = (env) => { }, proxy: { "/restconf": { - target: "http://localhost:8181", + target: "http://localhost:3000", secure: false }, "/database": { - target: "http://localhost:8181", + target: "http://localhost:3000", secure: false } } diff --git a/sdnr/wt/odlux/apps/mediatorApp/pom.xml b/sdnr/wt/odlux/apps/mediatorApp/pom.xml index 826e6b586..a8c9cea9f 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/pom.xml +++ b/sdnr/wt/odlux/apps/mediatorApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> - <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <version>1.1.2</version> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> @@ -126,7 +128,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorConfigActions.ts b/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorConfigActions.ts index fcfc63e22..058110614 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorConfigActions.ts +++ b/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorConfigActions.ts @@ -38,11 +38,11 @@ export class RemoveMediatorConfig extends BaseAction { export const startMediatorByNameAsyncActionCreator = (name: string) => (dispatch: Dispatch, getState: () => IApplicationStoreState) => { dispatch(new SetMediatorBusyByName(name, true)); - const { mediatorApp: { mediatorServerState: { url } } } = getState(); + const { mediator: { mediatorServerState: { url } } } = getState(); if (url) { mediatorService.startMediatorByName(url, name).then(msg => { dispatch(new AddSnackbarNotification({ message: msg + ' ' + name, options: { variant: 'info' } })); - // since there is no notification, a timeout will be need here + // since there is no notification, a timeout will be need here window.setTimeout(() => { mediatorService.getMediatorServerConfigByName(url, name).then(config => { if (config) { @@ -62,11 +62,11 @@ export const startMediatorByNameAsyncActionCreator = (name: string) => (dispatch export const stopMediatorByNameAsyncActionCreator = (name: string) => (dispatch: Dispatch, getState: () => IApplicationStoreState) => { dispatch(new SetMediatorBusyByName(name, true)); - const { mediatorApp: { mediatorServerState: { url } } } = getState(); + const { mediator: { mediatorServerState: { url } } } = getState(); if (url) { mediatorService.stopMediatorByName(url, name).then(msg => { dispatch(new AddSnackbarNotification({ message: msg + ' ' + name, options: { variant: 'info' } })); - // since there is no notification, a timeout will be need here + // since there is no notification, a timeout will be need here window.setTimeout(() => { mediatorService.getMediatorServerConfigByName(url, name).then(config => { if (config) { @@ -86,11 +86,11 @@ export const stopMediatorByNameAsyncActionCreator = (name: string) => (dispatch: export const addMediatorConfigAsyncActionCreator = (config: MediatorConfig) => (dispatch: Dispatch, getState: () => IApplicationStoreState) => { const { Name: name } = config; - const { mediatorApp: { mediatorServerState: { url } } } = getState(); + const { mediator: { mediatorServerState: { url } } } = getState(); if (url) { mediatorService.createMediatorConfig(url, config).then(msg => { dispatch(new AddSnackbarNotification({ message: msg + ' ' + name, options: { variant: 'info' } })); - // since there is no notification, a timeout will be need here + // since there is no notification, a timeout will be need here window.setTimeout(() => { mediatorService.getMediatorServerConfigByName(url, name).then(config => { if (config) { @@ -112,11 +112,11 @@ export const updateMediatorConfigAsyncActionCreator = (config: MediatorConfig) = export const removeMediatorConfigAsyncActionCreator = (config: MediatorConfig) => (dispatch: Dispatch, getState: () => IApplicationStoreState) => { const { Name: name } = config; - const { mediatorApp: { mediatorServerState: { url } } } = getState(); + const { mediator: { mediatorServerState: { url } } } = getState(); if (url) { mediatorService.deleteMediatorConfigByName(url, name).then(msg => { dispatch(new AddSnackbarNotification({ message: msg + ' ' + name, options: { variant: 'info' } })); - // since there is no notification, a timeout will be need here + // since there is no notification, a timeout will be need here window.setTimeout(() => { mediatorService.getMediatorServerConfigByName(url, config.Name).then(config => { if (!config) { diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts b/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts index b8e8c7e94..e7719aac5 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts +++ b/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts @@ -62,11 +62,11 @@ export const initializeMediatorServerAsyncActionCreator = (serverId: string) => if (!mediatorServer) { dispatch(new SetMediatorServerBusy(false)); dispatch(new AddSnackbarNotification({ message: `Error loading mediator server [${serverId}]`, options: { variant: 'error' } })); - dispatch(new NavigateToApplication("mediatorApp")); - return; + dispatch(new NavigateToApplication("mediator")); + return; } dispatch(new SetMediatorServerInfo(mediatorServer.name, mediatorServer.url)); - + mediatorService.getMediatorServerVersion(mediatorServer.url).then(versionInfo => { dispatch(new SetMediatorServerVersion(versionInfo)); }); diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx index c1167c4a7..ef12ee253 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx +++ b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx @@ -78,7 +78,7 @@ export enum EditMediatorConfigDialogMode { } const mapProps = (state: IApplicationStoreState) => ({ - supportedDevices: state.mediatorApp.mediatorServerState.supportedDevices + supportedDevices: state.mediator.mediatorServerState.supportedDevices }); const mapDispatch = (dispatcher: IDispatcher) => ({ @@ -182,7 +182,7 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf <Tab label="Config" /> <Tab label="ODL AutoConnect" /> </Tabs> - { this.state.activeTab === 0 ? <TabContainer > + {this.state.activeTab === 0 ? <TabContainer > <TextField disabled={setting.readonly || setting.readonlyName} spellCheck={false} autoFocus margin="dense" id="name" label="Name" type="text" fullWidth value={this.state.Name} onChange={(event) => { this.setState({ Name: event.target.value }); }} /> <FormControl fullWidth disabled={setting.readonly}> <InputLabel htmlFor="deviceType">Device</InputLabel> @@ -204,15 +204,15 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf {this.props.supportedDevices.map(device => (<MenuItem key={device.id} value={device.id} >{`${device.vendor} - ${device.device} (${device.version || '0.0.0'}) `}</MenuItem>))} </Select> </FormControl> - <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="ipAddress" label="IP Address" type="text" fullWidth value={this.state.DeviceIp} onChange={(event) => { this.setState({ DeviceIp: event.target.value }); }} /> - <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="devicePort" label="Port" type="number" fullWidth value={this.state.DevicePort || ""} onChange={(event) => { this.setState({ DevicePort: +event.target.value }); }} /> + <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="ipAddress" label="Device IP" type="text" fullWidth value={this.state.DeviceIp} onChange={(event) => { this.setState({ DeviceIp: event.target.value }); }} /> + <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="devicePort" label="Device SNMP Port" type="number" fullWidth value={this.state.DevicePort || ""} onChange={(event) => { this.setState({ DevicePort: +event.target.value }); }} /> <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="trapsPort" label="TrapsPort" type="number" fullWidth value={this.state.TrapPort || ""} onChange={(event) => { this.setState({ TrapPort: +event.target.value }); }} /> <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="ncUser" label="Netconf User" type="text" fullWidth value={this.state.NcUsername} onChange={(event) => { this.setState({ NcUsername: event.target.value }); }} /> <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="ncPassword" label="Netconf Password" type="password" fullWidth value={this.state.NcPassword} onChange={(event) => { this.setState({ NcPassword: event.target.value }); }} /> <TextField disabled={setting.readonly} spellCheck={false} autoFocus margin="dense" id="ncPort" label="Netconf Port" type="number" fullWidth value={this.state.NcPort || ""} onChange={(event) => { this.setState({ NcPort: +event.target.value }); }} /> </TabContainer> : null} - { this.state.activeTab === 1 ? <TabContainer > - { this.state.ODLConfig && this.state.ODLConfig.length > 0 + {this.state.activeTab === 1 ? <TabContainer > + {this.state.ODLConfig && this.state.ODLConfig.length > 0 ? this.state.ODLConfig.map((cfg, ind) => { const panelId = `panel-${ind}`; const deleteButton = (<IconButton onClick={() => { @@ -227,15 +227,15 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf <Panel title={cfg.Server && `${cfg.User ? `${cfg.User}@` : ''}${cfg.Protocol}://${cfg.Server}:${cfg.Port}` || "new odl config"} key={panelId} panelId={panelId} activePanel={this.state.activeOdlConfig} customActionButtons={[deleteButton]} onToggle={(id) => this.setState({ activeOdlConfig: (this.state.activeOdlConfig === id) ? "" : (id || "") })} > <div className={classes.alignInOneLine}> - <FormControl className={classes.left} margin={"dense"} > + <FormControl className={classes.left} margin={"dense"} > <InputLabel htmlFor={`protocol-${ind}`}>Protocoll</InputLabel> - <Select value={cfg.Protocol} onChange={ this.odlConfigValueChangeHandlerCreator(ind, "Protocol", e => (e.target.value)) } inputProps={{ name: `protocol-${ind}`, id: `protocol-${ind}` }} fullWidth > + <Select value={cfg.Protocol} onChange={this.odlConfigValueChangeHandlerCreator(ind, "Protocol", e => (e.target.value))} inputProps={{ name: `protocol-${ind}`, id: `protocol-${ind}` }} fullWidth > <MenuItem value={"http"}>http</MenuItem> <MenuItem value={"https"}>https</MenuItem> </Select> </FormControl> <TextField className={classes.left} spellCheck={false} margin="dense" id="hostname" label="Hostname" type="text" value={cfg.Server} onChange={this.odlConfigValueChangeHandlerCreator(ind, "Server", e => e.target.value)} /> - <TextField className={classes.right} style={{ maxWidth: "65px"}} spellCheck={false} margin="dense" id="port" label="Port" type="number" value={cfg.Port|| ""} onChange={this.odlConfigValueChangeHandlerCreator(ind, "Port", e => +e.target.value)} /> + <TextField className={classes.right} style={{ maxWidth: "65px" }} spellCheck={false} margin="dense" id="port" label="Port" type="number" value={cfg.Port || ""} onChange={this.odlConfigValueChangeHandlerCreator(ind, "Port", e => +e.target.value)} /> </div> <div className={classes.alignInOneLine}> <TextField className={classes.left} spellCheck={false} margin="dense" id="username" label="Username" type="text" value={cfg.User} onChange={this.odlConfigValueChangeHandlerCreator(ind, "User", e => e.target.value)} /> @@ -310,6 +310,4 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf } export const EditMediatorConfigDialog = withStyles(styles)(connect(mapProps, mapDispatch)(EditMediatorConfigDialogComponent)); -export default EditMediatorConfigDialog; - - +export default EditMediatorConfigDialog;
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx index 3937e9731..39f9036a6 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx +++ b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx @@ -49,14 +49,14 @@ const settings: { [key: string]: DialogSettings } = { readonly: true, }, [EditMediatorServerDialogMode.AddMediatorServer]: { - dialogTitle: "Add Medator Server", + dialogTitle: "Add Mediator Server", dialogDescription: "", applyButtonText: "Add", cancelButtonText: "Cancel", readonly: false, }, [EditMediatorServerDialogMode.EditMediatorServer]: { - dialogTitle: "Edit Medator Server", + dialogTitle: "Edit Mediator Server", dialogDescription: "", applyButtonText: "Update", cancelButtonText: "Cancel", @@ -71,18 +71,18 @@ const settings: { [key: string]: DialogSettings } = { }, }; -type EditMediatorServerDialogComponentProps = Connect<undefined,typeof mapDispatch> & { +type EditMediatorServerDialogComponentProps = Connect<undefined, typeof mapDispatch> & { mode: EditMediatorServerDialogMode; mediatorServer: MediatorServer; onClose: () => void; }; -type EditMediatorServerDialogComponentState = MediatorServer ; +type EditMediatorServerDialogComponentState = MediatorServer; class EditMediatorServerDialogComponent extends React.Component<EditMediatorServerDialogComponentProps, EditMediatorServerDialogComponentState> { - constructor(props: EditMediatorServerDialogComponentProps) { + constructor (props: EditMediatorServerDialogComponentProps) { super(props); - + this.state = { ...this.props.mediatorServer }; @@ -91,18 +91,18 @@ class EditMediatorServerDialogComponent extends React.Component<EditMediatorServ render(): JSX.Element { const setting = settings[this.props.mode]; return ( - <Dialog open={ this.props.mode !== EditMediatorServerDialogMode.None }> - <DialogTitle id="form-dialog-title">{ setting.dialogTitle }</DialogTitle> + <Dialog open={this.props.mode !== EditMediatorServerDialogMode.None}> + <DialogTitle id="form-dialog-title">{setting.dialogTitle}</DialogTitle> <DialogContent> <DialogContentText> - { setting.dialogDescription } + {setting.dialogDescription} </DialogContentText> - <TextField disabled spellCheck={false} autoFocus margin="dense" id="id" label="Id" type="text" fullWidth value={ this.state._id } onChange={(event)=>{ this.setState({_id: event.target.value}); } } /> - <TextField disabled={ setting.readonly } spellCheck={false} margin="dense" id="name" label="Name" type="text" fullWidth value={ this.state.name } onChange={(event)=>{ this.setState({name: event.target.value}); } }/> - <TextField disabled={ setting.readonly } spellCheck={false} margin="dense" id="url" label="Url" type="text" fullWidth value={ this.state.url } onChange={(event)=>{ this.setState({url: event.target.value}); } }/> - </DialogContent> + {/* <TextField disabled spellCheck={false} autoFocus margin="dense" id="id" label="Id" type="text" fullWidth value={ this.state._id } onChange={(event)=>{ this.setState({_id: event.target.value}); } } /> */} + <TextField disabled={setting.readonly} spellCheck={false} margin="dense" id="name" label="Name" type="text" fullWidth value={this.state.name} onChange={(event) => { this.setState({ name: event.target.value }); }} /> + <TextField disabled={setting.readonly} spellCheck={false} margin="dense" id="url" label="Url" type="text" fullWidth value={this.state.url} onChange={(event) => { this.setState({ url: event.target.value }); }} /> + </DialogContent> <DialogActions> - <Button onClick={ (event) => { + <Button onClick={(event) => { this.onApply({ _id: this.state._id, name: this.state.name, @@ -110,12 +110,12 @@ class EditMediatorServerDialogComponent extends React.Component<EditMediatorServ }); event.preventDefault(); event.stopPropagation(); - } } > { setting.applyButtonText } </Button> - <Button onClick={ (event) => { + }} > {setting.applyButtonText} </Button> + <Button onClick={(event) => { this.onCancel(); event.preventDefault(); event.stopPropagation(); - } } color="secondary"> { setting.cancelButtonText } </Button> + }} color="secondary"> {setting.cancelButtonText} </Button> </DialogActions> </Dialog> ) diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/handlers/avaliableMediatorServersHandler.ts b/sdnr/wt/odlux/apps/mediatorApp/src/handlers/avaliableMediatorServersHandler.ts index 447e5e5bd..244a9d185 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/handlers/avaliableMediatorServersHandler.ts +++ b/sdnr/wt/odlux/apps/mediatorApp/src/handlers/avaliableMediatorServersHandler.ts @@ -15,5 +15,5 @@ export const { createProperties: createAvaliableMediatorServersProperties, reloadAction: avaliableMediatorServersReloadAction, - // set value action, to change a value -} = createExternal<MediatorServer>(avaliableMediatorServersSearchHandler, appState => appState.mediatorApp.avaliableMediatorServers);
\ No newline at end of file + // set value action, to change a value +} = createExternal<MediatorServer>(avaliableMediatorServersSearchHandler, appState => appState.mediator.avaliableMediatorServers);
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorAppRootHandler.ts b/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorAppRootHandler.ts index bfebbdf5d..b64c0a72a 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorAppRootHandler.ts +++ b/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorAppRootHandler.ts @@ -13,7 +13,7 @@ export interface IMediatorAppStoreState { declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - mediatorApp: IMediatorAppStoreState + mediator: IMediatorAppStoreState } } diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/plugin.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/plugin.tsx index 0878fee65..7f440a2ae 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/mediatorApp/src/plugin.tsx @@ -16,7 +16,7 @@ import { MediatorApplication } from "./views/mediatorApplication"; import { MediatorServerSelection } from "./views/mediatorServerSelection"; import { initializeMediatorServerAsyncActionCreator } from "./actions/mediatorServerActions"; -let currentMediatorServerId: string | undefined = undefined; +let currentMediatorServerId: string | undefined = undefined; const mapDisp = (dispatcher: IDispatcher) => ({ loadMediatorServer : (mediatorServerId: string) => dispatcher.dispatch(initializeMediatorServerAsyncActionCreator(mediatorServerId)), @@ -24,7 +24,7 @@ const mapDisp = (dispatcher: IDispatcher) => ({ const MediatorServerRouteAdapter = connect(undefined, mapDisp)((props: RouteComponentProps<{ mediatorServerId: string }> & Connect<undefined, typeof mapDisp>) => { if (currentMediatorServerId !== props.match.params.mediatorServerId) { - // route parameter has changed + // route parameter has changed currentMediatorServerId = props.match.params.mediatorServerId || undefined; // Hint: This timeout is need, since it is not recommended to change the state while rendering is in progress ! window.setTimeout(() => { @@ -42,21 +42,21 @@ type AppProps = RouteComponentProps & Connect; const App = (props: AppProps) => ( <Switch> - <Route exact path={ `${ props.match.path }` } component={ MediatorServerSelection } /> - <Route path={ `${ props.match.path }/:mediatorServerId` } component={ MediatorServerRouteAdapter } /> + <Route exact path={ `${ props.match.path }` } component={ MediatorServerSelection } /> + <Route path={ `${ props.match.path }/:mediatorServerId` } component={ MediatorServerRouteAdapter } /> <Redirect to={ `${ props.match.path }` } /> </Switch> -); +); const FinalApp = withRouter(connect()(App)); export function register() { const applicationApi = applicationManager.registerApplication({ - name: "mediatorApp", + name: "mediator", icon: faGlobe, rootComponent: FinalApp, rootActionHandler: mediatorAppRootHandler, - menuEntry: "Mediator App" + menuEntry: "Mediator" }); // prefetch all avaliable mediator servers diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx index 6b1532cc8..95dee8df7 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx +++ b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx @@ -50,13 +50,13 @@ const styles = (theme: Theme) => createStyles({ }); const mapProps = (state: IApplicationStoreState) => ({ - serverName: state.mediatorApp.mediatorServerState.name, - serverUrl: state.mediatorApp.mediatorServerState.url, - serverVersion: state.mediatorApp.mediatorServerState.serverVersion, - mediatorVersion: state.mediatorApp.mediatorServerState.mediatorVersion, - configurations: state.mediatorApp.mediatorServerState.configurations, - supportedDevices: state.mediatorApp.mediatorServerState.supportedDevices, - busy: state.mediatorApp.mediatorServerState.busy, + serverName: state.mediator.mediatorServerState.name, + serverUrl: state.mediator.mediatorServerState.url, + serverVersion: state.mediator.mediatorServerState.serverVersion, + mediatorVersion: state.mediator.mediatorServerState.mediatorVersion, + configurations: state.mediator.mediatorServerState.configurations, + supportedDevices: state.mediator.mediatorServerState.supportedDevices, + busy: state.mediator.mediatorServerState.busy, }); const mapDispatch = (dispatcher: IDispatcher) => ({ diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx index 38bbdecb4..4e221b613 100644 --- a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx +++ b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx @@ -37,7 +37,7 @@ const mapProps = (state: IApplicationStoreState) => ({ const mapDispatch = (dispatcher: IDispatcher) => ({ mediatorServersActions: createAvaliableMediatorServersActions(dispatcher.dispatch), - selectMediatorServer: (mediatorServerId: string) => mediatorServerId && dispatcher.dispatch(new NavigateToApplication("mediatorApp", mediatorServerId)), + selectMediatorServer: (mediatorServerId: string) => mediatorServerId && dispatcher.dispatch(new NavigateToApplication("mediator", mediatorServerId)), }); const emptyMediatorServer: MediatorServer = { @@ -77,7 +77,7 @@ class MediatorServerSelectionComponent extends React.Component<MediatorServerSel }; return ( <> - <MediatorServersTable customActionButtons={[addMediatorServerActionButton]} idProperty={"_id"} + <MediatorServersTable customActionButtons={[addMediatorServerActionButton]} idProperty={"_id"} {...this.props.mediatorServersActions} {...this.props.mediatorServersProperties} columns={[ { property: "name", title: "Name", type: ColumnType.text }, { property: "url", title: "Url", type: ColumnType.text }, @@ -90,7 +90,7 @@ class MediatorServerSelectionComponent extends React.Component<MediatorServerSel ) } ]} onHandleClick={ this.onSelectMediatorServer } /> - <EditMediatorServerDialog + <EditMediatorServerDialog mediatorServer={ this.state.mediatorServerToEdit } mode={ this.state.mediatorServerEditorMode } onClose={ this.onCloseEditMediatorServerDialog } /> @@ -103,7 +103,7 @@ class MediatorServerSelectionComponent extends React.Component<MediatorServerSel event.stopPropagation(); this.props.selectMediatorServer(server && server._id); - } + } private onEditMediatorServer = (event: React.MouseEvent<HTMLElement>, server: MediatorServer) => { event.preventDefault(); @@ -121,7 +121,7 @@ class MediatorServerSelectionComponent extends React.Component<MediatorServerSel mediatorServerEditorMode: EditMediatorServerDialogMode.RemoveMediatorServer, mediatorServerToEdit: server, }); - } + } private onCloseEditMediatorServerDialog = () => { this.setState({ diff --git a/sdnr/wt/odlux/apps/minimumApp/pom.xml b/sdnr/wt/odlux/apps/minimumApp/pom.xml index f8ee69737..9003ed74e 100644 --- a/sdnr/wt/odlux/apps/minimumApp/pom.xml +++ b/sdnr/wt/odlux/apps/minimumApp/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -125,7 +127,7 @@ <configuration> <instructions> <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> - <Private-Package/> + <Private-Package></Private-Package> </instructions> </configuration> </plugin> diff --git a/sdnr/wt/odlux/apps/minimumApp/src/handlers/minimumAppRootHandler.ts b/sdnr/wt/odlux/apps/minimumApp/src/handlers/minimumAppRootHandler.ts index d1d030488..ae7d7c0bd 100644 --- a/sdnr/wt/odlux/apps/minimumApp/src/handlers/minimumAppRootHandler.ts +++ b/sdnr/wt/odlux/apps/minimumApp/src/handlers/minimumAppRootHandler.ts @@ -9,7 +9,7 @@ export interface IMinimumAppStoreState { declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { - minimumApp: IMinimumAppStoreState + minimum: IMinimumAppStoreState } } diff --git a/sdnr/wt/odlux/apps/minimumApp/src/plugin.tsx b/sdnr/wt/odlux/apps/minimumApp/src/plugin.tsx index dc698e11b..5209abac1 100644 --- a/sdnr/wt/odlux/apps/minimumApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/minimumApp/src/plugin.tsx @@ -20,11 +20,11 @@ const FinalApp = withRouter(connect()(App)); export function register() { applicationManager.registerApplication({ - name: "minimumApp", + name: "minimum", icon: faLock, rootComponent: FinalApp, rootActionHandler: minimumAppRootHandler, - menuEntry: "Minimum App" + menuEntry: "Minimum" }); } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/.babelrc b/sdnr/wt/odlux/apps/performanceHistoryApp/.babelrc new file mode 100644 index 000000000..3d8cd1260 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/.babelrc @@ -0,0 +1,17 @@ +{ + "presets": [ + ["@babel/preset-react"], + ["@babel/preset-env", { + "targets": { + "chrome": "66" + }, + "spec": true, + "loose": false, + "modules": false, + "debug": false, + "useBuiltIns": "usage", + "forceAllTransforms": true + }] + ], + "plugins": [] +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/package.json b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json new file mode 100644 index 000000000..b066010b9 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json @@ -0,0 +1,40 @@ +{ + "name": "@odlux/performancehistory-app", + "version": "0.1.1", + "description": "A react based modular UI to display performance history data from a database.", + "main": "index.js", + "scripts": { + "start": "webpack-dev-server --env debug", + "build": "webpack --env release --config webpack.config.js", + "build:dev": "webpack --env debug --config webpack.config.js" + }, + "repository": { + "type": "git", + "url": "https://git.mfico.de/highstreet-technologies/odlux.git" + }, + "keywords": [ + "reactjs", + "redux", + "ui", + "framework" + ], + "author": "Sai Neetha Phulmali", + "license": "MIT", + "dependencies": { + "@odlux/framework" : "*" + }, + "peerDependencies": { + "@types/react": "16.4.14", + "@types/react-dom": "16.0.8", + "@types/react-router-dom": "4.3.1", + "@material-ui/core": "3.8.3", + "@material-ui/icons": "3.0.2", + "@types/classnames": "2.2.6", + "@types/flux": "3.1.8", + "@types/jquery": "3.3.10", + "jquery": "3.3.1", + "react": "16.5.2", + "react-dom": "16.5.2", + "react-router-dom": "4.3.1" + } +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml b/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml new file mode 100644 index 000000000..d24bfddf0 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml @@ -0,0 +1,158 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <parent> + <groupId>org.onap.ccsdk.parent</groupId> + <artifactId>odlparent</artifactId> + <version>1.2.2-SNAPSHOT</version> + <relativePath /> + </parent> + <modelVersion>4.0.0</modelVersion> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>sdnr-wt-odlux-app-performanceHistoryApp</artifactId> + <version>0.4.2-SNAPSHOT</version> + <packaging>bundle</packaging> + <name>sdnr-wt-odlux-app-performanceHistoryApp</name> + <licenses> + <license> + <name>Apache License, Version 2.0</name> + <url>http://www.apache.org/licenses/LICENSE-2.0</url> + </license> + </licenses> + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-core-model</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>sdnr-wt-odlux-core-provider</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + <build> + <sourceDirectory>src2/main/java</sourceDirectory> + <plugins> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <configuration> + <filesets> + <fileset> + <directory>dist</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>node</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>node_modules</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <fileset> + <directory>../node_modules</directory> + <followSymlinks>false</followSymlinks> + </fileset> + <!-- eclipse bug build bin folder in basedir --> + <fileset> + <directory>bin</directory> + <followSymlinks>false</followSymlinks> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <id>add-test-source</id> + <phase>generate-test-sources</phase> + <goals> + <goal>add-test-source</goal> + </goals> + <configuration> + <sources> + <source>src2/test/java</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>de.jacksitlab</groupId> + <artifactId>frontend-maven-plugin</artifactId> + <version>1.7.1</version> + <executions> + <execution> + <id>install node and yarn</id> + <goals> + <goal>install-node-and-yarn</goal> + </goals> + <!-- optional: default phase is "generate-resources" --> + <phase>initialize</phase> + <configuration> + <nodeVersion>v8.10.0</nodeVersion> + <yarnVersion>v1.12.3</yarnVersion> + </configuration> + </execution> + <execution> + <id>yarn build</id> + <goals> + <goal>yarn</goal> + </goals> + <configuration> + <arguments>run build</arguments> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <configuration> + <instructions> + <Import-Package>org.onap.ccsdk.features.sdnr.wt.odlux.model.*,com.opensymphony.*</Import-Package> + <Private-Package></Private-Package> + </instructions> + </configuration> + </plugin> + </plugins> + <resources> + <resource> + <directory>dist</directory> + <targetPath>odlux</targetPath> + </resource> + <resource> + <directory>src2/main/resources</directory> + </resource> + <resource> + <directory>src2/test/resources</directory> + </resource> + </resources> + </build> + <pluginRepositories> + <pluginRepository> + <id>highstreet repo</id> + <url>https://cloud-highstreet-technologies.com/mvn/</url> + <snapshots> + <enabled>true</enabled> + <updatePolicy>always</updatePolicy> + </snapshots> + </pluginRepository> + </pluginRepositories> +</project> diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts new file mode 100644 index 000000000..0906584b7 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts @@ -0,0 +1,41 @@ +import { Action } from '../../../../framework/src/flux/action'; +import { Dispatch } from '../../../../framework/src/flux/store'; + +import { ConnectedNetworkElements } from '../models/connectedNetworkElements'; +import { PerformanceHistoryService } from '../services/performanceHistoryService'; + +/** + * Represents the base action. + */ +export class BaseAction extends Action { } + +/** + * Represents an action causing the store to load all connected network elements. + */ +export class LoadAllConnectedNetworkElementsAction extends BaseAction { } + +/** + * Represents an action causing the store to update all connected network elements. + */ +export class AllConnectedNetworkElementsLoadedAction extends BaseAction { + /** + * Initialize this instance. + * + * @param connectedNetworkElements The network elements which are returned from the restconf. + */ + constructor(public connectedNetworkElements: ConnectedNetworkElements[] | null, public error?: string) { + super(); + } +} + +/** + * Represents an asynchronous thunk action to load all connected network elements from the restconf. + */ +export const loadAllConnectedNetworkElementsAsync = (dispatch: Dispatch) => { + dispatch(new LoadAllConnectedNetworkElementsAction()); + PerformanceHistoryService.getConnectedNetworkElementsList().then(networkElements => { + networkElements && dispatch(new AllConnectedNetworkElementsLoadedAction(networkElements)); + }).catch(error => { + dispatch(new AllConnectedNetworkElementsLoadedAction(null, error)); + }); +};
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts new file mode 100644 index 000000000..d8842ffbe --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts @@ -0,0 +1,75 @@ +import { Action } from '../../../../framework/src/flux/action'; +import { Dispatch } from '../../../../framework/src/flux/store'; + +import { Ltp } from '../models/availableLtps'; +import { PerformanceHistoryService } from '../services/performanceHistoryService'; + +/** + * Represents the base action. + */ +export class BaseAction extends Action { } + +/** + * Represents an action causing the store to load available ltps. + */ +export class LoadAllAvailableLtpsAction extends BaseAction { } + +/** + * Represents an action causing the store to update available ltps. + */ +export class AllAvailableLtpsLoadedAction extends BaseAction { + /** + * Initialize this instance. + * @param availableLtps The available ltps which are returned from the database. + */ + constructor(public availableLtps: Ltp[] | null, public error?: string) { + super(); + } +} + + +/** + * Represents an asynchronous thunk action to load available distinctLtps by networkElement from the database and set the returned first Ltp as default. + * @param networkElement The network element sent to database to get its available distinct Ltps. + * @param selectedTimePeriod The time period selected sent to database to get the distinct Ltps of the selected network element. + * @param selectedLtp The Ltp which is selected in the dropdown. + * @param selectFirstLtp The function to get the first ltp returned from the database to be selected as default on selection upon network element. + * @param resetLtp The function to verify if the selected ltp is also available in the selected time period database else reset the Ltp dropdown to select. + */ +export const loadDistinctLtpsbyNetworkElementAsync = (networkElement: string, selectedTimePeriod: string, selectedLtp: string, selectFirstLtp?: Function, resetLtp?: Function) => (dispatch: Dispatch) => { + if (selectedTimePeriod == "15min") { + dispatch(new LoadAllAvailableLtpsAction()); + PerformanceHistoryService.getDistinctLtpsFrom15minDatabase(networkElement).then(distinctLtps => { + if(distinctLtps) { + let ltpNotSelected: boolean = true; + selectFirstLtp && selectFirstLtp(distinctLtps[0].key); + distinctLtps.forEach((value: Ltp) => { + if(value.key === selectedLtp) { + ltpNotSelected = false; + } + }); + resetLtp && resetLtp(ltpNotSelected); + dispatch(new AllAvailableLtpsLoadedAction(distinctLtps)) + } + }).catch(error => { + dispatch(new AllAvailableLtpsLoadedAction(null, error)); + }); + } else { + dispatch(new LoadAllAvailableLtpsAction()); + PerformanceHistoryService.getDistinctLtpsFrom24hoursDatabase(networkElement).then(distinctLtps => { + if(distinctLtps) { + let ltpNotSelected: boolean = true; + selectFirstLtp && selectFirstLtp(distinctLtps[0].key); + distinctLtps.forEach((value: Ltp) => { + if(value.key === selectedLtp) { + ltpNotSelected = false; + } + }); + resetLtp && resetLtp(ltpNotSelected); + dispatch(new AllAvailableLtpsLoadedAction(distinctLtps)) + } + }).catch(error => { + dispatch(new AllAvailableLtpsLoadedAction(null, error)); + }); + } +};
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts new file mode 100644 index 000000000..82072c7fe --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts @@ -0,0 +1,15 @@ +import { Action } from '../../../../framework/src/flux/action'; +import { PanelId } from '../models/panelId'; + +/** + * Represents an action causing the store to update the panel. + */ +export class SetPanelAction extends Action { + /** + * Initialize this instance. + * @param panelId Action to set the current panel by its Id. + */ + constructor(public panelId: PanelId) { + super(); + } +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx new file mode 100644 index 000000000..024315c3a --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx @@ -0,0 +1,140 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType'; +import { createAdaptiveModulation15minProperties, createAdaptiveModulation15minActions, adaptiveModulation15minReloadAction } from '../handlers/adaptiveModulation15minHandler'; +import { createAdaptiveModulation24hoursProperties, createAdaptiveModulation24hoursActions, adaptiveModulation24hoursReloadAction } from '../handlers/adaptiveModulation24hoursHandler'; + + +const mapProps = (state: IApplicationStoreState) => ({ + adaptiveModulation15minProperties: createAdaptiveModulation15minProperties(state), + adaptiveModulation24hoursProperties: createAdaptiveModulation24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + adaptiveModulation15minActions: createAdaptiveModulation15minActions(dispatcher.dispatch), + adaptiveModulation24hoursActions: createAdaptiveModulation24hoursActions(dispatcher.dispatch), +}); + +type AdaptiveModulationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +}; + +const AdaptiveModulationTable = MaterialTable as MaterialTableCtorType<AdaptiveModulationDataType>; + +/** + * The Component which gets the adaptiveModulation data from the database based on the selected time period. + */ +class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <AdaptiveModulationTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "time2-states-s", title: "QAM2S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2-states", title: "QAM2", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2-states-l", title: "QAM2L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4-states-s", title: "QAM4S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4-states", title: "QAM4", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4-states-l", title: "QAM4L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time16-states-s", title: "QAM16S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time16-states", title: "QAM16", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time16-states-l", title: "QAM16L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time32-states-s", title: "QAM32S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time32-states", title: "QAM32", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time32-states-l", title: "QAM32L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time64-states-s", title: "QAM64S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time64-states", title: "QAM64", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time64-states-l", title: "QAM64L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time128-states-s", title: "QAM128S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time128-states", title: "QAM128", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time128-states-l", title: "QAM128L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time256-states-s", title: "QAM256S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time256-states", title: "QAM256", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time256-states-l", title: "QAM256L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time512-states-s", title: "QAM512S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time512-states", title: "QAM512", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time512-states-l", title: "QAM512L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time1024-states-s", title: "QAM1024S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time1024-states", title: "QAM1024", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time1024-states-l", title: "QAM1024L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2048-states-s", title: "QAM2048S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2048-states", title: "QAM2048", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2048-states-l", title: "QAM2048L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4096-states-s", title: "QAM4096S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4096-states", title: "QAM4096", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4096-states-l", title: "QAM4096L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time8192-states-s", title: "QAM8192S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time8192-states", title: "QAM8192", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time8192-states-l", title: "QAM8192L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.adaptiveModulation15minProperties} {...this.props.adaptiveModulation15minActions} /> + ); + } else { + return ( + <AdaptiveModulationTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "time2-states-s", title: "QAM2S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2-states", title: "QAM2", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2-states-l", title: "QAM2L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4-states-s", title: "QAM4S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4-states", title: "QAM4", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4-states-l", title: "QAM4L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time16-states-s", title: "QAM16S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time16-states", title: "QAM16", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time16-states-l", title: "QAM16L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time32-states-s", title: "QAM32S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time32-states", title: "QAM32", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time32-states-l", title: "QAM32L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time64-states-s", title: "QAM64S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time64-states", title: "QAM64", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time64-states-l", title: "QAM64L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time128-states-s", title: "QAM128S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time128-states", title: "QAM128", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time128-states-l", title: "QAM128L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time256-states-s", title: "QAM256S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time256-states", title: "QAM256", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time256-states-l", title: "QAM256L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time512-states-s", title: "QAM512S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time512-states", title: "QAM512", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time512-states-l", title: "QAM512L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time1024-states-s", title: "QAM1024S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time1024-states", title: "QAM1024", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time1024-states-l", title: "QAM1024L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2048-states-s", title: "QAM2048S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2048-states", title: "QAM2048", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time2048-states-l", title: "QAM2048L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4096-states-s", title: "QAM4096S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4096-states", title: "QAM4096", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time4096-states-l", title: "QAM4096L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time8192-states-s", title: "QAM8192S", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time8192-states", title: "QAM8192", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "time8192-states-l", title: "QAM8192L", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.adaptiveModulation24hoursProperties} {...this.props.adaptiveModulation24hoursActions} /> + ); + } + }; +} + +export const AdaptiveModulation = withRouter(connect(mapProps, mapDisp)(AdaptiveModulationComponent)); +export default AdaptiveModulation; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx new file mode 100644 index 000000000..bbed8abfe --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx @@ -0,0 +1,74 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { CrossPolarDiscriminationDataType } from '../models/crossPolarDiscriminationDataType'; +import { createCrossPolarDiscrimination15minProperties, createCrossPolarDiscrimination15minActions, crossPolarDiscrimination15minReloadAction } from '../handlers/crossPolarDiscrimination15minHandler'; +import { createCrossPolarDiscrimination24hoursProperties, createCrossPolarDiscrimination24hoursActions, crossPolarDiscrimination24hoursReloadAction } from '../handlers/crossPolarDiscrimination24hoursHandler'; + + +const mapProps = (state: IApplicationStoreState) => ({ + crossPolarDiscrimination15minProperties: createCrossPolarDiscrimination15minProperties(state), + crossPolarDiscrimination24hoursProperties: createCrossPolarDiscrimination24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + crossPolarDiscrimination15minActions: createCrossPolarDiscrimination15minActions(dispatcher.dispatch), + crossPolarDiscrimination24hoursActions: createCrossPolarDiscrimination24hoursActions(dispatcher.dispatch), +}); + +type CrossPolarDiscriminationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +}; + +const CrossPolarDiscriminationTable = MaterialTable as MaterialTableCtorType<CrossPolarDiscriminationDataType>; + +/** + * The Component which gets the crossPolarDiscrimination data from the database based on the selected time period. + */ +class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscriminationComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <CrossPolarDiscriminationTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "xpd-min", title: "CPD (min)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "xpd-avg", title: "CPD (avg)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "xpd-max", title: "CPD (max)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.crossPolarDiscrimination15minProperties} {...this.props.crossPolarDiscrimination15minActions} /> + ); + } else { + return ( + <CrossPolarDiscriminationTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "xpd-min", title: "CPD (min)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "xpd-avg", title: "CPD (avg)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "xpd-max", title: "CPD (max)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.crossPolarDiscrimination24hoursProperties} {...this.props.crossPolarDiscrimination24hoursActions} /> + ); + } + }; +} + +export const CrossPolarDiscrimination = withRouter(connect(mapProps, mapDisp)(CrossPolarDiscriminationComponent)); +export default CrossPolarDiscrimination; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx new file mode 100644 index 000000000..e9a373b11 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx @@ -0,0 +1,75 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { PerformanceDataType } from '../models/performanceDataType'; +import { createPerformanceData15minProperties, createPerformanceData15minActions } from '../handlers/performanceData15minHandler'; +import { createPerformanceData24hoursProperties, createPerformanceData24hoursActions } from '../handlers/performanceData24hoursHandler'; + +const mapProps = (state: IApplicationStoreState) => ({ + performanceData15minProperties: createPerformanceData15minProperties(state), + performanceData24hoursProperties: createPerformanceData24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + performanceData15minActions: createPerformanceData15minActions(dispatcher.dispatch), + performanceData24hoursActions: createPerformanceData24hoursActions(dispatcher.dispatch), +}); + +type PerformanceDataComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +}; + +const PerformanceDataTable = MaterialTable as MaterialTableCtorType<PerformanceDataType>; + +/** + * The Component which gets the performance data from the database based on the selected time period. + */ +class PerformanceDataComponent extends React.Component<PerformanceDataComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <PerformanceDataTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "es", title: "ES", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "ses", title: "SES", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "unavailability", title: "UAS", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.performanceData15minProperties} {...this.props.performanceData15minActions} + /> + ); + } else { + return ( + <PerformanceDataTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "es", title: "ES", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "ses", title: "SES", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "unavailability", title: "UAS", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.performanceData24hoursProperties} {...this.props.performanceData24hoursActions} + /> + ); + } + }; +} + +export const PerformanceData = withRouter(connect(mapProps, mapDisp)(PerformanceDataComponent)); +export default PerformanceData; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx new file mode 100644 index 000000000..5f62e585a --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx @@ -0,0 +1,74 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { ReceiveLevelDataType } from '../models/receiveLevelDataType'; +import { createReceiveLevel15minProperties, createReceiveLevel15minActions, receiveLevel15minReloadAction } from '../handlers/receiveLevel15minHandler'; +import { createReceiveLevel24hoursProperties, createReceiveLevel24hoursActions, receiveLevel24hoursReloadAction } from '../handlers/receiveLevel24hoursHandler'; + + +const mapProps = (state: IApplicationStoreState) => ({ + receiveLevel15minProperties: createReceiveLevel15minProperties(state), + receiveLevel24hoursProperties: createReceiveLevel24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + receiveLevel15minActions: createReceiveLevel15minActions(dispatcher.dispatch), + receiveLevel24hoursActions: createReceiveLevel24hoursActions(dispatcher.dispatch), +}); + +type ReceiveLevelComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +}; + +const ReceiveLevelTable = MaterialTable as MaterialTableCtorType<ReceiveLevelDataType>; + +/** + * The Component which gets the receiveLevel data from the database based on the selected time period. + */ +class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <ReceiveLevelTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "rx-level-min", title: "Rx min", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rx-level-avg", title: "Rx avg", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rx-level-max", title: "Rx max", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.receiveLevel15minProperties} {...this.props.receiveLevel15minActions} /> + ); + } else { + return ( + <ReceiveLevelTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "rx-level-min", title: "Rx min", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rx-level-avg", title: "Rx avg", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rx-level-max", title: "Rx max", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.receiveLevel24hoursProperties} {...this.props.receiveLevel24hoursActions} /> + ); + } + }; +} + +export const ReceiveLevel = withRouter(connect(mapProps, mapDisp)(ReceiveLevelComponent)); +export default ReceiveLevel; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx new file mode 100644 index 000000000..bd612822e --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx @@ -0,0 +1,75 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { SignalToInterferenceDataType } from '../models/signalToInteferenceDataType'; +import { createSignalToInterference15minProperties, createSignalToInterference15minActions } from '../handlers/signalToInterference15minHandler'; +import { createSignalToInterference24hoursProperties, createSignalToInterference24hoursActions } from '../handlers/signalToInterference24hoursHandler'; + +const mapProps = (state: IApplicationStoreState) => ({ + signalToInterference15minProperties: createSignalToInterference15minProperties(state), + signalToInterference24hoursProperties: createSignalToInterference24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + signalToInterference15minActions: createSignalToInterference15minActions(dispatcher.dispatch), + signalToInterference24hoursActions: createSignalToInterference24hoursActions(dispatcher.dispatch), +}); + +type SignalToInterferenceComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +}; + +const SignalToInterferenceTable = MaterialTable as MaterialTableCtorType<SignalToInterferenceDataType>; + +/** + * The Component which gets the signal to interference data from the database based on the selected time period. + */ +class SignalToInterferenceComponent extends React.Component<SignalToInterferenceComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <SignalToInterferenceTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "snir-min", title: "SINR (min)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "snir-avg", title: "SINR (avg)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "snir-max", title: "SINR (max)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.signalToInterference15minProperties} {...this.props.signalToInterference15minActions} + /> + ); + } else { + return ( + <SignalToInterferenceTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "snir-min", title: "SINR (min)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "snir-avg", title: "SINR (avg)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "snir-max", title: "SINR (max)[db]", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.signalToInterference24hoursProperties} {...this.props.signalToInterference24hoursActions} + /> + ); + } + }; +} + +export const SignalToInterference = withRouter(connect(mapProps, mapDisp)(SignalToInterferenceComponent)); +export default SignalToInterference; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx new file mode 100644 index 000000000..1496396aa --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx @@ -0,0 +1,74 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { TemperatureDataType } from '../models/temperatureDataType'; +import { createTemperature15minProperties, createTemperature15minActions, temperature15minReloadAction } from '../handlers/temperature15minHandler'; +import { createTemperature24hoursProperties, createTemperature24hoursActions, temperature24hoursReloadAction } from '../handlers/temperature24hoursHandler'; + + +const mapProps = (state: IApplicationStoreState) => ({ + temperature15minProperties: createTemperature15minProperties(state), + temperature24hoursProperties: createTemperature24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + temperature15minActions: createTemperature15minActions(dispatcher.dispatch), + temperature24hoursActions: createTemperature24hoursActions(dispatcher.dispatch), +}); + +type TemperatureComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +}; + +const TemperatureTable = MaterialTable as MaterialTableCtorType<TemperatureDataType>; + +/** + * The Component which gets the temperature data from the database based on the selected time period. + */ +class TemperatureComponent extends React.Component<TemperatureComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <TemperatureTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "rf-temp-min", title: "Rx min", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rf-temp-avg", title: "Rx avg", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rf-temp-max", title: "Rx max", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.temperature15minProperties} {...this.props.temperature15minActions} /> + ); + } else { + return ( + <TemperatureTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "rf-temp-min", title: "Rx min", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rf-temp-avg", title: "Rx avg", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "rf-temp-max", title: "Rx max", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.temperature24hoursProperties} {...this.props.temperature24hoursActions} /> + ); + } + }; +} + +export const Temperature = withRouter(connect(mapProps, mapDisp)(TemperatureComponent)); +export default Temperature; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx new file mode 100644 index 000000000..10c25874a --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx @@ -0,0 +1,74 @@ +import * as React from 'react'; + +import { withRouter, RouteComponentProps } from 'react-router-dom'; + +import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; + +import { TransmissionPowerDataType } from '../models/transmissionPowerDataType'; +import { createTransmissionPower15minProperties, createTransmissionPower15minActions } from '../handlers/transmissionPower15minHandler'; +import { createTransmissionPower24hoursProperties, createTransmissionPower24hoursActions } from '../handlers/transmissionPower24hoursHandler'; + + +const mapProps = (state: IApplicationStoreState) => ({ + transmissionPower15minProperties: createTransmissionPower15minProperties(state), + transmissionPower24hoursProperties: createTransmissionPower24hoursProperties(state), +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + transmissionPower15minActions: createTransmissionPower15minActions(dispatcher.dispatch), + transmissionPower24hoursActions: createTransmissionPower24hoursActions(dispatcher.dispatch), +}); + +type TransmissionPowerComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { + selectedTimePeriod: string +} + +const TransmissionPowerTable = MaterialTable as MaterialTableCtorType<TransmissionPowerDataType>; + +/** + * The Component which gets the transmission power data from the database based on the selected time period. + */ +class TransmissionPowerComponent extends React.Component<TransmissionPowerComponentProps>{ + render(): JSX.Element { + if (this.props.selectedTimePeriod == "15min") { + return ( + <TransmissionPowerTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "tx-level-min", title: "Tx min", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "tx-level-avg", title: "Tx avg", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "tx-level-max", title: "Tx max", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.transmissionPower15minProperties} {...this.props.transmissionPower15minActions} /> + ); + } else { + return ( + <TransmissionPowerTable idProperty={"_id"} columns={[ + { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, + { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, + { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { + property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + return <div >{suspectIntervalFlag} </div> + } + }, + { property: "tx-level-min", title: "Tx min", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "tx-level-avg", title: "Tx avg", type: ColumnType.text, disableFilter: true, disableSorting: true }, + { property: "tx-level-max", title: "Tx max", type: ColumnType.text, disableFilter: true, disableSorting: true }, + ]} {...this.props.transmissionPower24hoursProperties} {...this.props.transmissionPower24hoursActions} /> + ); + } + }; +} + +export const TransmissionPower = withRouter(connect(mapProps, mapDisp)(TransmissionPowerComponent)); +export default TransmissionPower; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation15minHandler.ts new file mode 100644 index 000000000..6072cf0fb --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation15minHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { AdaptiveModulationDataType, AdaptiveModulation, AdaptiveModulationResult } from '../models/adaptiveModulationDataType'; + +export interface IAdaptiveModulation15minState extends IExternalTableState<AdaptiveModulationDataType> { } + +/** + * Creates elastic search material data fetch handler for Adaptive modulation from historicalperformance15min database. + */ +const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationResult, AdaptiveModulation>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: adaptiveModulation15minActionHandler, + createActions: createAdaptiveModulation15minActions, + createProperties: createAdaptiveModulation15minProperties, + createPreActions: createAdaptiveModulation15minPreActions, + reloadAction: adaptiveModulation15minReloadAction, +} = createExternal<AdaptiveModulationDataType>(adaptiveModulationSearchHandler, appState => appState.performanceHistory.adaptiveModulation15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation24hoursHandler.ts new file mode 100644 index 000000000..466b22966 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation24hoursHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { AdaptiveModulationDataType, AdaptiveModulation, AdaptiveModulationResult } from '../models/adaptiveModulationDataType'; + +export interface IAdaptiveModulation24hoursState extends IExternalTableState<AdaptiveModulationDataType> { } + +/** + * Creates elastic search material data fetch handler for Adaptive modulation from historicalperformance24h database. + */ +const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationResult, AdaptiveModulation>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: adaptiveModulation24hoursActionHandler, + createActions: createAdaptiveModulation24hoursActions, + createProperties: createAdaptiveModulation24hoursProperties, + createPreActions: createAdaptiveModulation24hoursPreActions, + reloadAction: adaptiveModulation24hoursReloadAction, +} = createExternal<AdaptiveModulationDataType>(adaptiveModulationSearchHandler, appState => appState.performanceHistory.adaptiveModulation24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts new file mode 100644 index 000000000..2fd0ac8f1 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts @@ -0,0 +1,43 @@ +import { IActionHandler } from '../../../../framework/src/flux/action'; + +import { + AllAvailableLtpsLoadedAction, + LoadAllAvailableLtpsAction, +} from '../actions/ltpAction'; + +import { Ltp } from '../models/availableLtps'; + +export interface IAvailableLtpsState { + distinctLtps: Ltp[]; + busy: boolean; +} + +const connectedNetworkElementsStateInit: IAvailableLtpsState = { + distinctLtps: [], + busy: false +}; + +export const availableLtpsActionHandler: IActionHandler<IAvailableLtpsState> = (state = connectedNetworkElementsStateInit, action) => { + if (action instanceof LoadAllAvailableLtpsAction) { + + state = { + ...state, + busy: true + }; + + } else if (action instanceof AllAvailableLtpsLoadedAction) { + if (!action.error && action.availableLtps) { + state = { + ...state, + distinctLtps: action.availableLtps, + busy: false + }; + } else { + state = { + ...state, + busy: false + }; + } + } + return state; +};
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts new file mode 100644 index 000000000..039ae5357 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts @@ -0,0 +1,43 @@ +import { IActionHandler } from '../../../../framework/src/flux/action'; + +import { + AllConnectedNetworkElementsLoadedAction, + LoadAllConnectedNetworkElementsAction, +} from '../actions/connectedNetworkElementsActions'; + +import { ConnectedNetworkElements } from '../models/connectedNetworkElements'; + +export interface IConnectedNetworkElementsState { + connectedNetworkElements: ConnectedNetworkElements[]; + busy: boolean; +} + +const connectedNetworkElementsStateInit: IConnectedNetworkElementsState = { + connectedNetworkElements: [], + busy: false +}; + +export const connectedNetworkElementsActionHandler: IActionHandler<IConnectedNetworkElementsState> = (state = connectedNetworkElementsStateInit, action) => { + if (action instanceof LoadAllConnectedNetworkElementsAction) { + + state = { + ...state, + busy: true + }; + + } else if (action instanceof AllConnectedNetworkElementsLoadedAction) { + if (!action.error && action.connectedNetworkElements) { + state = { + ...state, + connectedNetworkElements: action.connectedNetworkElements, + busy: false + }; + } else { + state = { + ...state, + busy: false + }; + } + } + return state; +};
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination15minHandler.ts new file mode 100644 index 000000000..81418db94 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination15minHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { CrossPolarDiscriminationDataType, CrossPolarDiscrimination, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType'; + +export interface ICrossPolarDiscrimination15minState extends IExternalTableState<CrossPolarDiscriminationDataType> { } + +/** + * Creates elastic search material data fetch handler for CPD from historicalperformance15min database. + */ +const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationResult, CrossPolarDiscrimination>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: crossPolarDiscrimination15minActionHandler, + createActions: createCrossPolarDiscrimination15minActions, + createProperties: createCrossPolarDiscrimination15minProperties, + createPreActions: createCrossPolarDiscrimination15minPreActions, + reloadAction: crossPolarDiscrimination15minReloadAction, +} = createExternal<CrossPolarDiscriminationDataType>(crossPolarDiscriminationSearchHandler, appState => appState.performanceHistory.crossPolarDiscrimination15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination24hoursHandler.ts new file mode 100644 index 000000000..b4d9da393 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination24hoursHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { CrossPolarDiscriminationDataType, CrossPolarDiscrimination, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType'; + +export interface ICrossPolarDiscrimination24hoursState extends IExternalTableState<CrossPolarDiscriminationDataType> { } + +/** + * Creates elastic search material data fetch handler for CPD from historicalperformance24h database. + */ +const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationResult, CrossPolarDiscrimination>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: crossPolarDiscrimination24hoursActionHandler, + createActions: createCrossPolarDiscrimination24hoursActions, + createProperties: createCrossPolarDiscrimination24hoursProperties, + createPreActions: createCrossPolarDiscrimination24hoursPreActions, + reloadAction: crossPolarDiscrimination24hoursReloadAction, +} = createExternal<CrossPolarDiscriminationDataType>(crossPolarDiscriminationSearchHandler, appState => appState.performanceHistory.crossPolarDiscrimination24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData15minHandler.ts new file mode 100644 index 000000000..4f284a27e --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData15minHandler.ts @@ -0,0 +1,28 @@ +import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { PerformanceDataType, Performance,PerformanceResult } from '../models/performanceDataType'; + +export interface IPerformanceData15minState extends IExternalTableState<PerformanceDataType> {} + +/** + * Creates elastic search material data fetch handler for performance data from historicalperformance15min database. + */ + const performanceDataSearchHandler = createSearchDataHandler<PerformanceResult, Performance>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}` ); + +export const { + actionHandler: performanceData15minActionHandler, + createActions: createPerformanceData15minActions, + createProperties: createPerformanceData15minProperties, + createPreActions: createPerformanceData15minPreActions, + reloadAction: performanceData15minReloadAction +} = createExternal<PerformanceDataType>(performanceDataSearchHandler, appState => appState.performanceHistory.performanceData15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData24hoursHandler.ts new file mode 100644 index 000000000..4136ce482 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData24hoursHandler.ts @@ -0,0 +1,28 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { PerformanceDataType, Performance, PerformanceResult } from '../models/performanceDataType'; + +export interface IPerformanceData24hoursState extends IExternalTableState<PerformanceDataType> { } + +/** + * Creates elastic search material data fetch handler for performance data from historicalperformance24h database. + */ +const performanceDataSearchHandler = createSearchDataHandler<PerformanceResult, Performance>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: performanceData24hoursActionHandler, + createActions: createPerformanceData24hoursActions, + createProperties: createPerformanceData24hoursProperties, + createPreActions: createPerformanceData24hoursPreActions, + reloadAction: performanceData24hoursReloadAction +} = createExternal<PerformanceDataType>(performanceDataSearchHandler, appState => appState.performanceHistory.performanceData24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts new file mode 100644 index 000000000..1cf814b5a --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts @@ -0,0 +1,83 @@ +// main state handler + +import { combineActionHandler } from '../../../../framework/src/flux/middleware'; + +// ** do not remove ** +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { IActionHandler } from '../../../../framework/src/flux/action'; + +import { IPerformanceData15minState, performanceData15minActionHandler } from './performanceData15minHandler'; +import { IReceiveLevel15minState, receiveLevel15minActionHandler } from './receiveLevel15minHandler'; +import { ITransmissionPower15minState, transmissionPower15minActionHandler } from './transmissionPower15minHandler'; +import { IAdaptiveModulation15minState, adaptiveModulation15minActionHandler } from './adaptiveModulation15minHandler'; +import { ITemperature15minState, temperature15minActionHandler } from './temperature15minHandler'; +import { ISignalToInterference15minState, signalToInterference15minActionHandler } from './signalToInterference15minHandler'; +import { ICrossPolarDiscrimination15minState, crossPolarDiscrimination15minActionHandler } from './crossPolarDiscrimination15minHandler'; +import { IPerformanceData24hoursState, performanceData24hoursActionHandler } from './performanceData24hoursHandler'; +import { IReceiveLevel24hoursState, receiveLevel24hoursActionHandler } from './receiveLevel24hoursHandler'; +import { ITransmissionPower24hoursState, transmissionPower24hoursActionHandler } from './transmissionPower24hoursHandler'; +import { IAdaptiveModulation24hoursState, adaptiveModulation24hoursActionHandler } from './adaptiveModulation24hoursHandler'; +import { ITemperature24hoursState, temperature24hoursActionHandler } from './temperature24hoursHandler'; +import { ISignalToInterference24hoursState, signalToInterference24hoursActionHandler } from './signalToInterference24hoursHandler'; +import { ICrossPolarDiscrimination24hoursState, crossPolarDiscrimination24hoursActionHandler } from './crossPolarDiscrimination24hoursHandler'; +import { SetPanelAction } from '../actions/panelChangeActions'; +import { IConnectedNetworkElementsState, connectedNetworkElementsActionHandler } from './connectedNetworkElementsActionHandler'; +import { IAvailableLtpsState, availableLtpsActionHandler } from './availableLtpsActionHandler'; + +export interface IPerformanceHistoryStoreState { + networkElements: IConnectedNetworkElementsState; + ltps: IAvailableLtpsState; + performanceData15min: IPerformanceData15minState; + performanceData24hours: IPerformanceData24hoursState; + receiveLevel15min: IReceiveLevel15minState; + receiveLevel24hours: IReceiveLevel24hoursState; + transmissionPower15min: ITransmissionPower15minState; + transmissionPower24hours: ITransmissionPower24hoursState; + adaptiveModulation15min: IAdaptiveModulation15minState; + adaptiveModulation24hours: IAdaptiveModulation24hoursState; + temperature15min: ITemperature15minState; + temperature24hours: ITemperature24hoursState; + signalToInterference15min:ISignalToInterference15minState; + signalToInterference24hours:ISignalToInterference24hoursState; + crossPolarDiscrimination15min: ICrossPolarDiscrimination15minState; + crossPolarDiscrimination24hours: ICrossPolarDiscrimination24hoursState; + currentOpenPanel: string | null; + +} + +const currentOpenPanelHandler: IActionHandler<string | null> = (state = null, action) => { + if (action instanceof SetPanelAction) { + state = action.panelId; + } + return state; +} + +declare module '../../../../framework/src/store/applicationStore' { + interface IApplicationStoreState { + performanceHistory: IPerformanceHistoryStoreState; + } +} + +const actionHandlers = { + networkElements: connectedNetworkElementsActionHandler, + ltps: availableLtpsActionHandler, + performanceData15min: performanceData15minActionHandler, + performanceData24hours: performanceData24hoursActionHandler, + receiveLevel15min: receiveLevel15minActionHandler, + receiveLevel24hours: receiveLevel24hoursActionHandler, + transmissionPower15min: transmissionPower15minActionHandler, + transmissionPower24hours: transmissionPower24hoursActionHandler, + adaptiveModulation15min: adaptiveModulation15minActionHandler, + adaptiveModulation24hours: adaptiveModulation24hoursActionHandler, + temperature15min: temperature15minActionHandler, + temperature24hours: temperature24hoursActionHandler, + signalToInterference15min: signalToInterference15minActionHandler, + signalToInterference24hours: signalToInterference24hoursActionHandler, + crossPolarDiscrimination15min: crossPolarDiscrimination15minActionHandler, + crossPolarDiscrimination24hours: crossPolarDiscrimination24hoursActionHandler, + currentOpenPanel: currentOpenPanelHandler, +}; + +export const performanceHistoryRootHandler = combineActionHandler<IPerformanceHistoryStoreState>(actionHandlers); +export default performanceHistoryRootHandler; + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel15minHandler.ts new file mode 100644 index 000000000..c7c5e177f --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel15minHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { ReceiveLevelDataType, ReceiveLevel, ReceiveLevelResult } from '../models/receiveLevelDataType'; + +export interface IReceiveLevel15minState extends IExternalTableState<ReceiveLevelDataType> { } + +/** + * Creates elastic search material data fetch handler for receiveLevel from historicalperformance15min database. + */ +const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelResult, ReceiveLevel>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: receiveLevel15minActionHandler, + createActions: createReceiveLevel15minActions, + createProperties: createReceiveLevel15minProperties, + createPreActions: createReceiveLevel15minPreActions, + reloadAction: receiveLevel15minReloadAction, +} = createExternal<ReceiveLevelDataType>(receiveLevelSearchHandler, appState => appState.performanceHistory.receiveLevel15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel24hoursHandler.ts new file mode 100644 index 000000000..f665dfdc6 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel24hoursHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { ReceiveLevelDataType, ReceiveLevel, ReceiveLevelResult } from '../models/receiveLevelDataType'; + +export interface IReceiveLevel24hoursState extends IExternalTableState<ReceiveLevelDataType> { } + +/** + * Creates elastic search material data fetch handler for receiveLevel from historicalperformance24h database. + */ +const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelResult, ReceiveLevel>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: receiveLevel24hoursActionHandler, + createActions: createReceiveLevel24hoursActions, + createProperties: createReceiveLevel24hoursProperties, + createPreActions: createReceiveLevel24hoursPreActions, + reloadAction: receiveLevel24hoursReloadAction, +} = createExternal<ReceiveLevelDataType>(receiveLevelSearchHandler, appState => appState.performanceHistory.receiveLevel24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference15minHandler.ts new file mode 100644 index 000000000..536a89ea7 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference15minHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { SignalToInterferenceDataType, SignalToInterference, SignalToInterferenceResult } from '../models/signalToInteferenceDataType'; + +export interface ISignalToInterference15minState extends IExternalTableState<SignalToInterferenceDataType> { } + +/** + * Creates elastic search material data fetch handler for SINR from historicalperformance15min database. + */ +const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceResult, SignalToInterference>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: signalToInterference15minActionHandler, + createActions: createSignalToInterference15minActions, + createProperties: createSignalToInterference15minProperties, + createPreActions: createSignalToInterference15minPreActions, + reloadAction: signalToInterference15minReloadAction, +} = createExternal<SignalToInterferenceDataType>(signalToInterferenceSearchHandler, appState => appState.performanceHistory.signalToInterference15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference24hoursHandler.ts new file mode 100644 index 000000000..a95d0aecf --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference24hoursHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { SignalToInterferenceDataType, SignalToInterference, SignalToInterferenceResult } from '../models/signalToInteferenceDataType'; + +export interface ISignalToInterference24hoursState extends IExternalTableState<SignalToInterferenceDataType> { } + +/** + * Creates elastic search material data fetch handler for SINR from historicalperformance24h database. + */ +const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceResult, SignalToInterference>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: signalToInterference24hoursActionHandler, + createActions: createSignalToInterference24hoursActions, + createProperties: createSignalToInterference24hoursProperties, + createPreActions: createSignalToInterference24hoursPreActions, + reloadAction: signalToInterference24hoursReloadAction, +} = createExternal<SignalToInterferenceDataType>(signalToInterferenceSearchHandler, appState => appState.performanceHistory.signalToInterference24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature15minHandler.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature15minHandler.tsx new file mode 100644 index 000000000..20fb57035 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature15minHandler.tsx @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { TemperatureDataType, Temperature, TemperatureResult } from '../models/temperatureDataType'; + +export interface ITemperature15minState extends IExternalTableState<TemperatureDataType> { } + +/** + * Creates elastic search material data fetch handler for Temperature from historicalperformance15min database. + */ +const temperatureSearchHandler = createSearchDataHandler<TemperatureResult, Temperature>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: temperature15minActionHandler, + createActions: createTemperature15minActions, + createProperties: createTemperature15minProperties, + createPreActions: createTemperature15minPreActions, + reloadAction: temperature15minReloadAction, +} = createExternal<TemperatureDataType>(temperatureSearchHandler, appState => appState.performanceHistory.temperature15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature24hoursHandler.ts new file mode 100644 index 000000000..1c36ef876 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature24hoursHandler.ts @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { TemperatureDataType, Temperature, TemperatureResult } from '../models/temperatureDataType'; + +export interface ITemperature24hoursState extends IExternalTableState<TemperatureDataType> { } + +/** + * Creates elastic search material data fetch handler for temperature from historicalperformance24h database. + */ +const temperatureSearchHandler = createSearchDataHandler<TemperatureResult, Temperature>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: temperature24hoursActionHandler, + createActions: createTemperature24hoursActions, + createProperties: createTemperature24hoursProperties, + createPreActions: createTemperature24hoursPreActions, + reloadAction: temperature24hoursReloadAction, +} = createExternal<TemperatureDataType>(temperatureSearchHandler, appState => appState.performanceHistory.temperature24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower15minHandler.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower15minHandler.tsx new file mode 100644 index 000000000..e6ba90f10 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower15minHandler.tsx @@ -0,0 +1,29 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + + +import { TransmissionPowerDataType, TransmissionPower, TransmissionPowerResult } from '../models/transmissionPowerDataType'; + +export interface ITransmissionPower15minState extends IExternalTableState<TransmissionPowerDataType> { } + +/** + * Creates elastic search material data fetch handler for Transmission power from historicalperformance15min database. + */ +const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerResult, TransmissionPower>( + "sdnperformance/historicalperformance15min", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: transmissionPower15minActionHandler, + createActions: createTransmissionPower15minActions, + createProperties: createTransmissionPower15minProperties, + createPreActions: createTransmissionPower15minPreActions, + reloadAction: transmissionPower15minReloadAction, +} = createExternal<TransmissionPowerDataType>(transmissionPowerSearchHandler, appState => appState.performanceHistory.transmissionPower15min); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower24hoursHandler.ts new file mode 100644 index 000000000..de50629e1 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower24hoursHandler.ts @@ -0,0 +1,28 @@ +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { TransmissionPowerDataType, TransmissionPower, TransmissionPowerResult } from '../models/transmissionPowerDataType'; + +export interface ITransmissionPower24hoursState extends IExternalTableState<TransmissionPowerDataType> { } + +/** + * Creates elastic search material data fetch handler for transmission power from historicalperformance24h database. + */ +const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerResult, TransmissionPower>( + "sdnperformance/historicalperformance24h", + null, + (hit) => ({ + _id: hit._id, + ...hit._source, + ...hit._source["performance-data"] + }), + (name) => `${name}`); + +export const { + actionHandler: transmissionPower24hoursActionHandler, + createActions: createTransmissionPower24hoursActions, + createProperties: createTransmissionPower24hoursProperties, + createPreActions: createTransmissionPower24hoursPreActions, + reloadAction: transmissionPower24hoursReloadAction, +} = createExternal<TransmissionPowerDataType>(transmissionPowerSearchHandler, appState => appState.performanceHistory.transmissionPower24hours); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/index.html b/sdnr/wt/odlux/apps/performanceHistoryApp/src/index.html new file mode 100644 index 000000000..fce395d33 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/index.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta http-equiv="X-UA-Compatible" content="ie=edge"> + <link rel="stylesheet" href="./vendor.css" > + <title>PM History Application</title> +</head> + +<body> + <div id="app"></div> + <script type="text/javascript" src="./require.js"></script> + <script type="text/javascript" src="./config.js"></script> + <script> + // run the application + require(["app","performanceHistoryApp"], function (app, performanceHistoryApp) { + performanceHistoryApp.register(); + app("./app.tsx").runApplication(); + }); + </script> +</body> + +</html>
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts new file mode 100644 index 000000000..686e3bc96 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts @@ -0,0 +1,53 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents Adaptive Modulation data fields of the performance history table. + */ +export type AdaptiveModulationDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "time2-states-s": string; + "time2-states": string; + "time2-states-l": string; + "time4-states-s": string; + "time4-states": string; + "time4-states-l": string; + "time16-states-s": string; + "time16-states": string; + "time16-states-l": string; + "time32-states-s": string; + "time32-states": string; + "time32-states-l": string; + "time64-states-s": string; + "time64-states": string; + "time64-states-l": string; + "time128-states-s": string; + "time128-states": string; + "time128-states-l": string; + "time256-states-s": string; + "time256-states": string; + "time256-states-l": string; + "time512-states-s": string; + "time512-states": string; + "time512-states-l": string; + "time1024-states-s": string; + "time1024-states": string; + "time1024-states-l": string; + "time2048-states-s": string; + "time2048-states": string; + "time2048-states-l": string; + "time4096-states-s": string; + "time4096-states": string; + "time4096-states-l": string; + "time8192-states-s": string; + "time8192-states": string; + "time8192-states-l": string; +}; + + +export type AdaptiveModulationResult = { "performance-data": AdaptiveModulationDataType }; + +export type AdaptiveModulation = AdaptiveModulationDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts new file mode 100644 index 000000000..15a27f147 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts @@ -0,0 +1,14 @@ + export type Ltp = { + key: string + } + + export type Bucket={ + buckets: Ltp[] + } + +/** + * Represents distinct available ltps using elasticsearch aggregations structure. + */ + export type DistinctLtp = { + "uuid-interface": Bucket + } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts new file mode 100644 index 000000000..f4afa645d --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts @@ -0,0 +1,6 @@ +/** + * Represents connected network elements. + */ +export type ConnectedNetworkElements = { + mountId: string, + } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts new file mode 100644 index 000000000..2dc183eda --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts @@ -0,0 +1,20 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents CPD data fields of the performance history table. + */ +export type CrossPolarDiscriminationDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "xpd-min": string; + "xpd-avg": string; + "xpd-max": string; +}; + + +export type CrossPolarDiscriminationResult = { "performance-data": CrossPolarDiscriminationDataType }; + +export type CrossPolarDiscrimination = CrossPolarDiscriminationDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts new file mode 100644 index 000000000..1f05b47cc --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts @@ -0,0 +1,4 @@ +/** + * Represents PanelIds for the available Expansional panels. + */ +export type PanelId = null | "PerformanceData" | "ReceiveLevel" | "TransmissionPower" | "AdaptiveModulation" | "Temperature" | "SINR" | "CPD";
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts new file mode 100644 index 000000000..6972998b6 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts @@ -0,0 +1,20 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents performance data fields of the performance history table. + */ +export type PerformanceDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "es": string; + "ses": string; + "unavailability": string; +}; + + +export type PerformanceResult = { "performance-data": PerformanceDataType }; + +export type Performance = PerformanceDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts new file mode 100644 index 000000000..9f51c8fee --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts @@ -0,0 +1,20 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents Receive level data fields of the performance history table. + */ +export type ReceiveLevelDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "rx-level-min": string; + "rx-level-avg": string; + "rx-level-max": string; +}; + + +export type ReceiveLevelResult = { "performance-data": ReceiveLevelDataType }; + +export type ReceiveLevel = ReceiveLevelDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts new file mode 100644 index 000000000..73934bd85 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts @@ -0,0 +1,20 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents Signal to interference data fields of the performance history table. + */ +export type SignalToInterferenceDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "snir-min": string; + "snir-avg": string; + "snir-max": string; +}; + + +export type SignalToInterferenceResult = { "performance-data": SignalToInterferenceDataType }; + +export type SignalToInterference = SignalToInterferenceDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts new file mode 100644 index 000000000..e5be6e36c --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts @@ -0,0 +1,20 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents Temperature data fields of the performance history table. + */ +export type TemperatureDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "rf-temp-min": string; + "rf-temp-avg": string; + "rf-temp-max": string; +}; + + +export type TemperatureResult = { "performance-data": TemperatureDataType }; + +export type Temperature = TemperatureDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts new file mode 100644 index 000000000..84548ce45 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts @@ -0,0 +1,12 @@ +export interface TopologyNode { + "node-id": string; + "netconf-node-topology:connection-status": string; +} + +/** + * Represents restConf network element topology. + */ +export interface Topology { + "topology-id": string; + "node": TopologyNode[]; +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts new file mode 100644 index 000000000..948baff12 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts @@ -0,0 +1,20 @@ +export { HitEntry, Result } from '../../../../framework/src/models'; + +/** + * Represents the TransmissionPower data fields of the performance history table. + */ +export type TransmissionPowerDataType = { + "_id": string; + "radio-signal-id": string; + "scanner-id": string; + "time-stamp": string; + "suspect-interval-flag": boolean; + "tx-level-min": string; + "tx-level-avg": string; + "tx-level-max": string; +}; + + +export type TransmissionPowerResult = { "performance-data": TransmissionPowerDataType }; + +export type TransmissionPower = TransmissionPowerDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx new file mode 100644 index 000000000..3e1263e34 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx @@ -0,0 +1,17 @@ + +import { faBook } from '@fortawesome/free-solid-svg-icons'; + +import applicationManager from '../../../framework/src/services/applicationManager'; + +import performanceHistoryRootHandler from './handlers/performanceHistoryRootHandler'; +import PerformanceHistoryApplication from './views/performanceHistoryApplication'; + +export function register() { + applicationManager.registerApplication({ + name: "performanceHistory", + icon: faBook, + rootComponent: PerformanceHistoryApplication, + rootActionHandler: performanceHistoryRootHandler, + menuEntry: "Performance" + }); +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.tsx new file mode 100644 index 000000000..a1cdcffcc --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.tsx @@ -0,0 +1,93 @@ +import { requestRest } from '../../../../framework/src/services/restService'; +import { Result } from '../../../../framework/src/models/elasticSearch'; + +import { ConnectedNetworkElements } from '../models/connectedNetworkElements'; +import { DistinctLtp, Ltp } from '../models/availableLtps'; +import { Topology, TopologyNode } from '../models/topologyNetConf'; + +/** + * Represents a web api accessor service for Network elements actions. + */ +class PerformanceService { + + private static networkElementTopology = (mountPoint: TopologyNode) => { + const mountId = mountPoint["node-id"]; + return { + mountId: mountId, + } + } + + /** + * Get all connected network elements from restconf. + */ + public async getConnectedNetworkElementsList(): Promise<ConnectedNetworkElements[] | null> { + const path = "restconf/operational/network-topology:network-topology/topology/topology-netconf"; + const topologyRequestPomise = requestRest<{ topology: Topology[] | null }>(path, { method: "GET" }, true); + const [netconfResponse] = await Promise.all([topologyRequestPomise]); + const topologyNetconf = netconfResponse && netconfResponse.topology && netconfResponse.topology.find(topology => topology["topology-id"] === "topology-netconf"); + let mountPoints = topologyNetconf && topologyNetconf.node && topologyNetconf.node.filter( + mountPoint => mountPoint["netconf-node-topology:connection-status"] == "connected").map(mountedElement => { + return PerformanceService.networkElementTopology(mountedElement); + }); + return mountPoints || []; + } + + /** + * Get distinct ltps based on the selected network element and time period from the historicalperformance15min database table. + */ + public async getDistinctLtpsFrom15minDatabase(networkElement: string): Promise<Ltp[] | null> { + const path = 'database/sdnperformance/historicalperformance15min/_search'; + const query = { + "size": 0, + "query": { + "match": { + "node-name": networkElement + } + }, + "aggs": { + "uuid-interface": { + "terms": { + "field": "uuid-interface" + } + } + } + }; + const result = await requestRest<Result<DistinctLtp>>(path, { method: "POST", body: JSON.stringify(query) }); + if(result && result.aggregations) { + } + return result && result.aggregations && result.aggregations["uuid-interface"].buckets.map(ne=>({ + key:ne.key + }))|| null; + } + + /** + * Get distinct ltps based on the selected network element and time period from the historicalperformance24h database table. + */ + public async getDistinctLtpsFrom24hoursDatabase(networkElement: string): Promise<Ltp[] | null> { + const path = 'database/sdnperformance/historicalperformance24h/_search'; + const query = { + "size": 0, + "query": { + "match": { + "node-name": networkElement + } + }, + "aggs": { + "uuid-interface": { + "terms": { + "field": "uuid-interface" + } + } + } + }; + const result = await requestRest<Result<DistinctLtp>>(path, { method: "POST", body: JSON.stringify(query) }); + if(result && result.aggregations) { + } + return result && result.aggregations && result.aggregations["uuid-interface"].buckets.map(ne=>({ + key:ne.key + }))|| null; + } +} + +export const PerformanceHistoryService = new PerformanceService(); +export default PerformanceHistoryService; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx new file mode 100644 index 000000000..12027e499 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx @@ -0,0 +1,363 @@ +import * as React from 'react'; + +import { createStyles, Theme, withStyles, WithStyles } from '@material-ui/core/styles'; +import FormControl from '@material-ui/core/FormControl'; +import MenuItem from '@material-ui/core/MenuItem'; +import Select from '@material-ui/core/Select'; + +import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; +import { Panel } from '../../../../framework/src/components/material-ui'; + +import { PanelId } from '../models/panelId'; +import { PerformanceData } from '../components/performanceData'; +import { ReceiveLevel } from '../components/receiveLevel'; +import { TransmissionPower } from '../components/transmissionPower'; +import { AdaptiveModulation } from '../components/adaptiveModulation'; +import { Temperature } from '../components/temperature'; +import { SignalToInterference } from '../components/signalToInterference'; +import { CrossPolarDiscrimination } from '../components/crossPolarDiscrimination'; +import { loadAllConnectedNetworkElementsAsync } from '../actions/connectedNetworkElementsActions'; +import { loadDistinctLtpsbyNetworkElementAsync } from '../actions/ltpAction'; +import { SetPanelAction } from '../actions/panelChangeActions'; +import { createPerformanceData15minPreActions, performanceData15minReloadAction } from '../handlers/performanceData15minHandler'; +import { createPerformanceData24hoursPreActions, performanceData24hoursReloadAction } from '../handlers/performanceData24hoursHandler'; +import { createReceiveLevel15minPreActions, receiveLevel15minReloadAction } from '../handlers/receiveLevel15minHandler'; +import { createReceiveLevel24hoursPreActions, receiveLevel24hoursReloadAction } from '../handlers/receiveLevel24hoursHandler'; +import { createTransmissionPower15minPreActions, transmissionPower15minReloadAction } from '../handlers/transmissionPower15minHandler'; +import { createTransmissionPower24hoursPreActions, transmissionPower24hoursReloadAction } from '../handlers/transmissionPower24hoursHandler'; +import { createAdaptiveModulation15minPreActions, adaptiveModulation15minReloadAction } from '../handlers/adaptiveModulation15minHandler'; +import { createAdaptiveModulation24hoursPreActions, adaptiveModulation24hoursReloadAction } from '../handlers/adaptiveModulation24hoursHandler'; +import { createTemperature15minPreActions, temperature15minReloadAction } from '../handlers/temperature15minHandler'; +import { createTemperature24hoursPreActions, temperature24hoursReloadAction } from '../handlers/temperature24hoursHandler'; +import { createSignalToInterference15minPreActions, signalToInterference15minReloadAction } from '../handlers/signalToInterference15minHandler'; +import { createSignalToInterference24hoursPreActions, signalToInterference24hoursReloadAction } from '../handlers/signalToInterference24hoursHandler'; +import { createCrossPolarDiscrimination15minPreActions, crossPolarDiscrimination15minReloadAction } from '../handlers/crossPolarDiscrimination15minHandler'; +import { createCrossPolarDiscrimination24hoursPreActions, crossPolarDiscrimination24hoursReloadAction } from '../handlers/crossPolarDiscrimination24hoursHandler'; + +const PerformanceHistoryComponentStyles = (theme: Theme) => createStyles({ + root: { + display: "flex", + flexWrap: "wrap", + }, + margin: { + margin: theme.spacing.unit, + }, + display: { + display: "inline-block" + }, + selectDropdown: { + borderRadius: 1, + position: "relative", + backgroundColor: theme.palette.background.paper, + border: "1px solid #ced4da", + fontSize: 16, + width: "auto", + padding: "5px 26px 5px 12px", + transition: theme.transitions.create(["border-color", "box-shadow"]), + } +}); + +const mapProps = (state: IApplicationStoreState) => ({ + activePanel: state.performanceHistory.currentOpenPanel, + availableLtps: state.performanceHistory.ltps.distinctLtps, + networkElements: state.performanceHistory.networkElements.connectedNetworkElements +}); + +const mapDispatcher = (dispatcher: IDispatcher) => ({ + reloadPerformanceData15min: () => dispatcher.dispatch(performanceData15minReloadAction), + reloadPerformanceData24hours: () => dispatcher.dispatch(performanceData24hoursReloadAction), + reloadReceiveLevel15min: () => dispatcher.dispatch(receiveLevel15minReloadAction), + reloadReceiveLevel24hours: () => dispatcher.dispatch(receiveLevel24hoursReloadAction), + reloadTransmissionPower15min: () => dispatcher.dispatch(transmissionPower15minReloadAction), + reloadTransmissionPower24hours: () => dispatcher.dispatch(transmissionPower24hoursReloadAction), + reloadAdaptiveModulation15min: () => dispatcher.dispatch(adaptiveModulation15minReloadAction), + reloadAdaptiveModulation24hours: () => dispatcher.dispatch(adaptiveModulation24hoursReloadAction), + reloadTemperature15min: () => dispatcher.dispatch(temperature15minReloadAction), + reloadTemperature24hours: () => dispatcher.dispatch(temperature24hoursReloadAction), + reloadSignalToInterference15min: () => dispatcher.dispatch(signalToInterference15minReloadAction), + reloadSignalToInterference24hours: () => dispatcher.dispatch(signalToInterference24hoursReloadAction), + reloadCrossPolarDiscrimination15min: () => dispatcher.dispatch(crossPolarDiscrimination15minReloadAction), + reloadCrossPolarDiscrimination24hours: () => dispatcher.dispatch(crossPolarDiscrimination24hoursReloadAction), + performanceData15minPreActions: createPerformanceData15minPreActions(dispatcher.dispatch), + performanceData24hoursPreActions: createPerformanceData24hoursPreActions(dispatcher.dispatch), + receiveLevel15minPreActions: createReceiveLevel15minPreActions(dispatcher.dispatch), + receiveLevel24hoursPreActions: createReceiveLevel24hoursPreActions(dispatcher.dispatch), + transmissionPower15minPreActions: createTransmissionPower15minPreActions(dispatcher.dispatch), + transmissionPower24hoursPreActions: createTransmissionPower24hoursPreActions(dispatcher.dispatch), + adaptiveModulation15minPreActions: createAdaptiveModulation15minPreActions(dispatcher.dispatch), + adaptiveModulation24hoursPreActions: createAdaptiveModulation24hoursPreActions(dispatcher.dispatch), + temperature15minPreActions: createTemperature15minPreActions(dispatcher.dispatch), + temperature24hoursPreActions: createTemperature24hoursPreActions(dispatcher.dispatch), + signalToInterference15minPreActions: createSignalToInterference15minPreActions(dispatcher.dispatch), + signalToInterference24hoursPreActions: createSignalToInterference24hoursPreActions(dispatcher.dispatch), + crossPolarDiscrimination15minPreActions: createCrossPolarDiscrimination15minPreActions(dispatcher.dispatch), + crossPolarDiscrimination24hoursPreActions: createCrossPolarDiscrimination24hoursPreActions(dispatcher.dispatch), + getConnectedNetworkElements: () => dispatcher.dispatch(loadAllConnectedNetworkElementsAsync), + getDistinctLtps: (selectedNetworkElement: string, selectedTimePeriod: string, selectedLtp: string, selectFirstLtp?: Function, resetLTP?: Function) => dispatcher.dispatch(loadDistinctLtpsbyNetworkElementAsync(selectedNetworkElement, selectedTimePeriod, selectedLtp, selectFirstLtp, resetLTP)), + setCurrentPanel: (panelId: PanelId) => dispatcher.dispatch(new SetPanelAction(panelId)) +}); + +type PerformanceHistoryComponentProps = Connect<typeof mapProps, typeof mapDispatcher> & WithStyles<typeof PerformanceHistoryComponentStyles>; + +type PerformanceHistoryComponentState = { + selectedNetworkElement: string, + selectedTimePeriod: string, + selectedLtp: string, + showLtps: boolean, + showPanels: boolean +}; + +/** + * Represents the component for Performance history application. + */ +class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComponentProps, PerformanceHistoryComponentState>{ + /** + * Initialises this instance + */ + constructor(props: PerformanceHistoryComponentProps) { + super(props); + this.state = { + selectedNetworkElement: "-1", + selectedTimePeriod: "15min", + selectedLtp: "-1", + showLtps: false, + showPanels: false + }; + } + + render(): JSX.Element { + const { classes } = this.props; + const { activePanel } = this.props; + + const onTogglePanel = (panelId: PanelId) => { + const nextActivePanel = panelId === this.props.activePanel ? null : panelId; + this.props.setCurrentPanel(nextActivePanel); + switch (nextActivePanel) { + case "PerformanceData": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadPerformanceData15min(); + } else { + + this.props.reloadPerformanceData24hours(); + } + break; + case "ReceiveLevel": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadReceiveLevel15min(); + } else { + this.props.reloadReceiveLevel24hours(); + } + break; + case "TransmissionPower": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadTransmissionPower15min(); + } else { + this.props.reloadTransmissionPower24hours(); + } + break; + case "AdaptiveModulation": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadAdaptiveModulation15min(); + } else { + this.props.reloadAdaptiveModulation24hours(); + } + break; + case "Temperature": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadTemperature15min(); + } else { + this.props.reloadTemperature24hours(); + } + break; + case "SINR": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadSignalToInterference15min(); + } else { + this.props.reloadSignalToInterference24hours(); + } + break; + case "CPD": + if (this.state.selectedTimePeriod == "15min") { + this.props.reloadCrossPolarDiscrimination15min(); + } else { + this.props.reloadCrossPolarDiscrimination24hours(); + } + break; + case null: + break; + default: + break; + } + } + + return ( + <> + <div> + <form className={ classes.root } autoComplete="off"> + <FormControl className={ classes.margin }> + <span> Select Network element </span> + <Select className={ classes.selectDropdown } value={ this.state.selectedNetworkElement } onChange={ this.handleNetworkElementChange } + > + <MenuItem value={ "-1" }><em>--Select--</em></MenuItem> + { this.props.networkElements.map(ne => + (<MenuItem value={ ne.mountId } key={ ne.mountId }>{ ne.mountId }</MenuItem>))} + </Select> + </FormControl> + </form> + </div> + { this.state.showLtps && ( + <div> + <FormControl className={ classes.display }> + <span> + Select LTP + </span> + <Select className={ classes.selectDropdown } value={ this.state.selectedLtp } onChange={ this.handleLtpChange } > + <MenuItem value={ "-1" }><em>--Select--</em></MenuItem> + { this.props.availableLtps.map(ltp => + (<MenuItem value={ltp.key} key={ltp.key}>{ltp.key}</MenuItem>)) } + </Select> + <span> Time-Period </span> + <Select className={ classes.selectDropdown } value={ this.state.selectedTimePeriod } onChange={ this.handleTimePeriodChange } > + <MenuItem value={ "15min" }>15min</MenuItem> + <MenuItem value={ "24hours" }>24hours</MenuItem> + </Select> + </FormControl> + { this.state.showPanels && ( + <div> + <Panel activePanel={ activePanel } panelId={ "PerformanceData" } onToggle={ onTogglePanel } title={ "Performance Data" }> + <PerformanceData selectedTimePeriod={ this.state.selectedTimePeriod} /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "ReceiveLevel" } onToggle={ onTogglePanel } title={ "Receive Level" }> + <ReceiveLevel selectedTimePeriod={ this.state.selectedTimePeriod} /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "TransmissionPower" } onToggle={ onTogglePanel } title={ "Transmission Power" }> + <TransmissionPower selectedTimePeriod={ this.state.selectedTimePeriod} /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "AdaptiveModulation" } onToggle={ onTogglePanel } title={ "Adaptive Modulation" }> + <AdaptiveModulation selectedTimePeriod={ this.state.selectedTimePeriod} /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "Temperature" } onToggle={ onTogglePanel } title={ "Temperature" }> + <Temperature selectedTimePeriod={ this.state.selectedTimePeriod} /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "SINR" } onToggle={ onTogglePanel } title={ "Signal-to-interference-plus-noise ratio (SINR)" }> + <SignalToInterference selectedTimePeriod={ this.state.selectedTimePeriod} /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "CPD" } onToggle={ onTogglePanel } title={ "Cross Polar Discrimination" }> + <CrossPolarDiscrimination selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + </div> + )} + </div> + )} + </> + ); + }; + + public componentDidMount() { + this.props.getConnectedNetworkElements(); + } + + /** + * Function which selects the first ltp returned from the database on selection of network element. + */ + private selectFirstLtp = (firstLtp: string) => { + this.setState({ + showPanels: true, + selectedLtp: firstLtp + }); + this.preFilterChangeAndReload(this.state.selectedNetworkElement, this.state.selectedTimePeriod, firstLtp); + } + + /** + * A function which loads the tables based on prefilters defined by network element and ltp on selected time period. + */ + private preFilterChangeAndReload = (networkElement: string, timePeriod: string, ltp: string) => { + const preFilter = { + "node-name": networkElement, + "uuid-interface": ltp + }; + if (timePeriod == "15min") { + this.props.performanceData15minPreActions.onPreFilterChanged(preFilter); + this.props.receiveLevel15minPreActions.onPreFilterChanged(preFilter); + this.props.transmissionPower15minPreActions.onPreFilterChanged(preFilter); + this.props.adaptiveModulation15minPreActions.onPreFilterChanged(preFilter); + this.props.temperature15minPreActions.onPreFilterChanged(preFilter); + this.props.signalToInterference15minPreActions.onPreFilterChanged(preFilter); + this.props.crossPolarDiscrimination15minPreActions.onPreFilterChanged(preFilter); + } else if (timePeriod == "24hours") { + this.props.performanceData24hoursPreActions.onPreFilterChanged(preFilter); + this.props.receiveLevel24hoursPreActions.onPreFilterChanged(preFilter); + this.props.transmissionPower24hoursPreActions.onPreFilterChanged(preFilter); + this.props.adaptiveModulation24hoursPreActions.onPreFilterChanged(preFilter); + this.props.temperature24hoursPreActions.onPreFilterChanged(preFilter); + this.props.signalToInterference24hoursPreActions.onPreFilterChanged(preFilter); + this.props.crossPolarDiscrimination24hoursPreActions.onPreFilterChanged(preFilter); + } + } + + /** + * Function which handles network element changes. + */ + private handleNetworkElementChange = (event: React.ChangeEvent<HTMLSelectElement>) => { + var showLtps: boolean = true; + if (event.target.value === "-1") { + showLtps = false; + } else if (event.target.value !== this.state.selectedNetworkElement) { + this.setState({ + showPanels: false + }); + } + this.setState({ + showLtps: showLtps, + selectedNetworkElement: event.target.value, + selectedLtp: "-1" + }); + this.props.getDistinctLtps(event.target.value, this.state.selectedTimePeriod, "-1", this.selectFirstLtp); + } + + /** + * Function which resets the ltps to "--select--" in the state if the passed parameter @ltpNotSelected is true. + * @param ltpNotSelected: true, if existing selected is not available in the given time period, else false + */ + private resetLtpDropdown = (ltpNotSelected: boolean) => { + if (ltpNotSelected) { + this.setState({ + selectedLtp: "-1", + }); + } + } + + /** + * Function which handles the time period changes. + */ + private handleTimePeriodChange = (event: React.ChangeEvent<HTMLSelectElement>) => { + this.setState({ + selectedTimePeriod: event.target.value, + }); + if (event.target.value == "15min") { + this.props.getDistinctLtps(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp, undefined, this.resetLtpDropdown); + } else if (event.target.value == "24hours") { + this.props.getDistinctLtps(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp, undefined, this.resetLtpDropdown); + } + this.preFilterChangeAndReload(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp); + } + + /** + * Function which handles the ltp changes. + */ + private handleLtpChange = (event: React.ChangeEvent<HTMLSelectElement>) => { + var showPanels: boolean = true; + if (event.target.value === "-1") { + showPanels = false; + } + this.setState({ + showPanels: showPanels, + selectedLtp: event.target.value + }); + this.preFilterChangeAndReload(this.state.selectedNetworkElement, this.state.selectedTimePeriod, event.target.value); + } +} + +export const PerformanceHistoryApplication = withStyles(PerformanceHistoryComponentStyles)(connect(mapProps, mapDispatcher)(PerformanceHistoryComponent)); +export default PerformanceHistoryApplication; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java new file mode 100644 index 000000000..1e882fc69 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java @@ -0,0 +1,68 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.odlux.bundles; + +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle; +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader; + +public class MyOdluxBundle extends OdluxBundle { + + @Override + public void initialize() { + super.initialize(); + } + + @Override + public void clean() { + super.clean(); + } + + @Override + public String getResourceFileContent(String filename) { + return super.getResourceFileContent(filename); + } + + @Override + public boolean hasResource(String filename) { + return super.hasResource(filename); + } + + @Override + public void setBundleName(String bundleName) { + super.setBundleName(bundleName); + } + + @Override + public void setLoader(OdluxBundleLoader loader) { + super.setLoader(loader); + } + + @Override + public String getBundleName() { + return super.getBundleName(); + } + + @Override + public OdluxBundleLoader getLoader() { + return super.getLoader(); + } + + public MyOdluxBundle() { + super(); + } +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml new file mode 100644 index 000000000..1bcbf0127 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -0,0 +1,9 @@ +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> + <reference id="loadersvc" availability="mandatory" activation="eager" interface="org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader"/> + + <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.onap.ccsdk.features.sdnr.wt.odlux.bundles.MyOdluxBundle"> + <property name="loader" ref="loadersvc"/> + <property name="bundleName" value="performanceHistoryApp"/> + <property name="index" value="55"/> + </bean> +</blueprint> diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java new file mode 100644 index 000000000..edf68e096 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.odlux.bundles.test; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.odlux.OdluxBundleLoaderImpl; +import org.onap.ccsdk.features.sdnr.wt.odlux.bundles.MyOdluxBundle; + +public class TestBundleRes { + + @Test + public void test() { + OdluxBundleLoaderImpl loader = OdluxBundleLoaderImpl.getInstance(); + MyOdluxBundle b = new MyOdluxBundle(); + b.setLoader(loader); + b.setIndex(0); + b.setBundleName("abc"); + b.initialize(); + assertTrue(loader.getNumberOfBundles()==1); + assertNotNull(b.getLoader()); + assertEquals("abc",b.getBundleName()); + assertTrue(b.hasResource("test.js")); + assertNotNull(b.getResourceFileContent("test.js")); + b.clean(); + assertTrue(loader.getNumberOfBundles()==0); + } + +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src2/test/resources/test.js b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/test/resources/test.js new file mode 100644 index 000000000..b47fdc39f --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src2/test/resources/test.js @@ -0,0 +1,5 @@ +asdac sad +as +d +sad + sadfa
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/tsconfig.json b/sdnr/wt/odlux/apps/performanceHistoryApp/tsconfig.json new file mode 100644 index 000000000..a66b5d828 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/tsconfig.json @@ -0,0 +1,37 @@ +{ + "compilerOptions": { + "baseUrl": "./src", + "outDir": "./dist", + "sourceMap": true, + "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports": false, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "strictNullChecks": true, + "pretty": true, + "newLine": "LF", + "module": "es2015", + "target": "es2016", + "moduleResolution": "node", + "experimentalDecorators": true, + "jsx": "preserve", + "lib": [ + "dom", + "es2015", + "es2016" + ], + "types": [ + "prop-types", + "react", + "react-dom" + ] + }, + "exclude": [ + "dist", + "node_modules" + ] +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js new file mode 100644 index 000000000..27a5949ac --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js @@ -0,0 +1,139 @@ +/** + * Webpack 4 configuration file + * see https://webpack.js.org/configuration/ + * see https://webpack.js.org/configuration/dev-server/ + */ + +"use strict"; + +const path = require("path"); +const webpack = require("webpack"); +const CopyWebpackPlugin = require("copy-webpack-plugin"); +const TerserPlugin = require('terser-webpack-plugin'); + +// const __dirname = (path => path.replace(/^([a-z]\:)/, c => c.toUpperCase()))(process.__dirname()); + +module.exports = (env) => { + const distPath = path.resolve(__dirname, env === "release" ? "." : "../..", "dist"); + const frameworkPath = path.resolve(__dirname, env === "release" ? "../../framework" : "../..", "dist"); + return [{ + name: "App", + + mode: "none", //disable default behavior + + target: "web", + + context: path.resolve(__dirname, "src"), + + entry: { + performanceHistoryApp: ["./plugin.tsx"] + }, + + devtool: env === "release" ? false : "source-map", + + resolve: { + extensions: [".ts", ".tsx", ".js", ".jsx"] + }, + + output: { + path: distPath, + filename: "[name].js", + library: "[name]", + libraryTarget: "umd2", + chunkFilename: "[name].js" + }, + module: { + rules: [{ + test: /\.tsx?$/, + exclude: /node_modules/, + use: [{ + loader: "babel-loader" + }, { + loader: "ts-loader" + }] + }, { + test: /\.jsx?$/, + exclude: /node_modules/, + use: [{ + loader: "babel-loader" + }] + }] + }, + + optimization: { + noEmitOnErrors: true, + namedModules: env !== "release", + minimize: env === "release", + minimizer: env !== "release" ? [] : [new TerserPlugin({ + terserOptions: { + warnings: false, // false, true, "verbose" + compress: { + drop_console: true, + drop_debugger: true, + } + } + })], + }, + plugins: [ + new webpack.DllReferencePlugin({ + context: path.resolve(__dirname, "../../framework/src"), + manifest: require(path.resolve(frameworkPath, "vendor-manifest.json")), + sourceType: "umd2" + }), + new webpack.DllReferencePlugin({ + context: path.resolve(__dirname, "../../framework/src"), + manifest: require(path.resolve(frameworkPath, "app-manifest.json")), + sourceType: "umd2" + }), + ...(env === "release") ? [ + new webpack.DefinePlugin({ + "process.env": { + NODE_ENV: "'production'", + VERSION: JSON.stringify(require("./package.json").version) + } + }), + ] : [ + new webpack.DefinePlugin({ + "process.env": { + NODE_ENV: "'development'", + VERSION: JSON.stringify(require("./package.json").version) + } + }), + new CopyWebpackPlugin([{ + from: 'index.html', + to: distPath + }]), + ] + ], + + devServer: { + public: "http://localhost:3100", + contentBase: frameworkPath, + + compress: true, + headers: { + "Access-Control-Allow-Origin": "*" + }, + host: "0.0.0.0", + port: 3100, + disableHostCheck: true, + historyApiFallback: true, + inline: true, + hot: false, + quiet: false, + stats: { + colors: true + }, + proxy: { + "/restconf": { + target: "http://localhost:8181", + secure: false + }, + "/database": { + target: "http://localhost:8181", + secure: false + } + } + } + }]; +} diff --git a/sdnr/wt/odlux/core/features/pom.xml b/sdnr/wt/odlux/core/features/pom.xml index 667f3b49c..945e5777c 100644 --- a/sdnr/wt/odlux/core/features/pom.xml +++ b/sdnr/wt/odlux/core/features/pom.xml @@ -11,7 +11,10 @@ OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -24,7 +27,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>single-feature-parent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <licenses> <license> diff --git a/sdnr/wt/odlux/core/installer/pom.xml b/sdnr/wt/odlux/core/installer/pom.xml index f093de04e..13eb78d22 100755 --- a/sdnr/wt/odlux/core/installer/pom.xml +++ b/sdnr/wt/odlux/core/installer/pom.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -12,7 +14,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent-lite</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <properties> diff --git a/sdnr/wt/odlux/core/model/pom.xml b/sdnr/wt/odlux/core/model/pom.xml index 200e9225a..931d12fb8 100644 --- a/sdnr/wt/odlux/core/model/pom.xml +++ b/sdnr/wt/odlux/core/model/pom.xml @@ -1,5 +1,6 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -12,7 +13,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>binding-parent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <licenses> <license> diff --git a/sdnr/wt/odlux/core/pom.xml b/sdnr/wt/odlux/core/pom.xml index 3bd327864..f41a5484d 100644 --- a/sdnr/wt/odlux/core/pom.xml +++ b/sdnr/wt/odlux/core/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent-lite</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> diff --git a/sdnr/wt/odlux/core/provider/pom.xml b/sdnr/wt/odlux/core/provider/pom.xml index 0df54aa21..0ae59e5c5 100644 --- a/sdnr/wt/odlux/core/provider/pom.xml +++ b/sdnr/wt/odlux/core/provider/pom.xml @@ -1,5 +1,6 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -12,7 +13,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>binding-parent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <licenses> <license> @@ -105,4 +106,4 @@ </plugin> </plugins> </build> -</project> +</project>
\ No newline at end of file diff --git a/sdnr/wt/odlux/framework/pom.xml b/sdnr/wt/odlux/framework/pom.xml index 5d4eb3e6a..b8f6795a2 100644 --- a/sdnr/wt/odlux/framework/pom.xml +++ b/sdnr/wt/odlux/framework/pom.xml @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -13,6 +15,12 @@ <version>0.4.2-SNAPSHOT</version> <packaging>jar</packaging> <name>sdnr-wt-odlux-framework</name> + <properties> + <buildtime>${maven.build.timestamp}</buildtime> + <distversion>ONAP Dublin (Flourine-SR2)</distversion> + <buildno>8.c7848df(19/04/03)</buildno> + <odlux.version>ONAP SDN-R | ONF Wireless for ${distversion} - Build: ${buildtime} ${buildno} ${project.version}</odlux.version> + </properties> <licenses> <license> <name>Apache License, Version 2.0</name> @@ -74,7 +82,7 @@ </goals> <phase>initialize</phase> <configuration> - <arguments>-W add lerna</arguments> + <arguments>add lerna@3.13.1 -W --exact</arguments> <installDirectory>${project.basedir}</installDirectory> <workingDirectory>${project.basedir}/../</workingDirectory> </configuration> @@ -106,6 +114,32 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> </plugin> + <plugin> + <groupId>com.google.code.maven-replacer-plugin</groupId> + <artifactId>replacer</artifactId> + <version>1.5.2</version> + <executions> + <execution> + <id>replace version</id> + <phase>prepare-package</phase> + <goals> + <goal>replace</goal> + </goals> + </execution> + </executions> + <configuration> + <basedir>${project.build.directory}/classes/odlux</basedir> + <includes> + <include>app.js</include> + </includes> + <replacements> + <replacement> + <token>##odlux.version##</token> + <value>${odlux.version}</value> + </replacement> + </replacements> + </configuration> + </plugin> </plugins> <resources> <resource> diff --git a/sdnr/wt/odlux/framework/src/components/material-table/index.tsx b/sdnr/wt/odlux/framework/src/components/material-table/index.tsx index 61a990d81..a95282d70 100644 --- a/sdnr/wt/odlux/framework/src/components/material-table/index.tsx +++ b/sdnr/wt/odlux/framework/src/components/material-table/index.tsx @@ -1,425 +1,464 @@ -import * as React from 'react';
-import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles';
-
-import Table from '@material-ui/core/Table';
-import TableBody from '@material-ui/core/TableBody';
-import TableCell from '@material-ui/core/TableCell';
-import TablePagination from '@material-ui/core/TablePagination';
-import TableRow from '@material-ui/core/TableRow';
-import Paper from '@material-ui/core/Paper';
-import Checkbox from '@material-ui/core/Checkbox';
-
-import { TableToolbar } from './tableToolbar';
-import { EnhancedTableHead } from './tableHead';
-import { EnhancedTableFilter } from './tableFilter';
-
-import { ColumnModel, ColumnType } from './columnModel';
-import { Omit } from '@material-ui/core';
-import { SvgIconProps } from '@material-ui/core/SvgIcon/SvgIcon';
-export { ColumnModel, ColumnType } from './columnModel';
-
-type propType = string | number | null | undefined | (string|number)[];
-type dataType = { [prop: string]: propType };
-type resultType<TData = dataType> = { page: number, rowCount: number, rows: TData[] };
-
-export type DataCallback<TData = dataType> = (page?: number, rowsPerPage?: number, orderBy?: string | null, order?: 'asc' | 'desc' | null, filter?: { [property: string]: string }) =>resultType<TData> | Promise<resultType<TData>>;
-
-function desc(a: dataType, b: dataType, orderBy: string) {
- if ((b[orderBy] || "") < (a[orderBy] || "") ) {
- return -1;
- }
- if ((b[orderBy] || "") > (a[orderBy] || "") ) {
- return 1;
- }
- return 0;
-}
-
-function stableSort(array: dataType[], cmp: (a: dataType, b: dataType) => number) {
- const stabilizedThis = array.map((el, index) => [el, index]) as [dataType, number][];
- stabilizedThis.sort((a, b) => {
- const order = cmp(a[0], b[0]);
- if (order !== 0) return order;
- return a[1] - b[1];
- });
- return stabilizedThis.map(el => el[0]);
-}
-
-function getSorting(order: 'asc' | 'desc' | null, orderBy: string) {
- return order === 'desc' ? (a: dataType, b: dataType) => desc(a, b, orderBy) : (a: dataType, b: dataType) => -desc(a, b, orderBy);
-}
-
-const styles = (theme: Theme) => createStyles({
- root: {
- width: '100%',
- marginTop: theme.spacing.unit * 3,
- },
- table: {
- minWidth: 1020,
- },
- tableWrapper: {
- overflowX: 'auto',
- },
-});
-
-export type MaterialTableComponentState<TData = {}> = {
- order: 'asc' | 'desc';
- orderBy: string | null;
- selected: any[] | null;
- rows: TData[];
- rowCount: number;
- page: number;
- rowsPerPage: number;
- loading: boolean;
- showFilter: boolean;
- filter: { [property: string]: string };
-};
-
-export type TableApi = { forceRefresh?: () => Promise<void> };
-
-type MaterialTableComponentBaseProps<TData> = WithStyles<typeof styles> & {
- columns: ColumnModel<TData>[];
- idProperty: keyof TData | ((data: TData) => React.Key );
- title?: string;
- enableSelection?: boolean;
- disableSorting?: boolean;
- disableFilter?: boolean;
- customActionButtons?: { icon: React.ComponentType<SvgIconProps>, tooltip?: string, onClick: () => void }[];
- onHandleClick?(event: React.MouseEvent<HTMLTableRowElement>, rowData: TData): void;
-};
-
-type MaterialTableComponentPropsWithRows<TData={}> = MaterialTableComponentBaseProps<TData> & { rows: TData[]; asynchronus?: boolean; };
-type MaterialTableComponentPropsWithRequestData<TData={}> = MaterialTableComponentBaseProps<TData> & { onRequestData: DataCallback; tableApi?: TableApi; };
-type MaterialTableComponentPropsWithExternalState<TData={}> = MaterialTableComponentBaseProps<TData> & MaterialTableComponentState & {
- onToggleFilter: () => void;
- onFilterChanged: (property: string, filterTerm: string) => void;
- onHandleChangePage: (page: number) => void;
- onHandleChangeRowsPerPage: (rowsPerPage: number | null) => void;
- onHandleRequestSort: (property: string) => void;
-};
-
-type MaterialTableComponentProps<TData = {}> =
- MaterialTableComponentPropsWithRows<TData> |
- MaterialTableComponentPropsWithRequestData<TData> |
- MaterialTableComponentPropsWithExternalState<TData>;
-
-function isMaterialTableComponentPropsWithRows(props: MaterialTableComponentProps): props is MaterialTableComponentPropsWithRows {
- return (props as MaterialTableComponentPropsWithRows).rows !== undefined && (props as MaterialTableComponentPropsWithRows).rows instanceof Array;
-}
-
-function isMaterialTableComponentPropsWithRequestData(props: MaterialTableComponentProps): props is MaterialTableComponentPropsWithRequestData {
- return (props as MaterialTableComponentPropsWithRequestData).onRequestData !== undefined && (props as MaterialTableComponentPropsWithRequestData).onRequestData instanceof Function;
-}
-
-function isMaterialTableComponentPropsWithRowsAndRequestData(props: MaterialTableComponentProps): props is MaterialTableComponentPropsWithExternalState {
- const propsWithExternalState = (props as MaterialTableComponentPropsWithExternalState)
- return propsWithExternalState.onFilterChanged instanceof Function ||
- propsWithExternalState.onHandleChangePage instanceof Function ||
- propsWithExternalState.onHandleChangeRowsPerPage instanceof Function ||
- propsWithExternalState.onToggleFilter instanceof Function ||
- propsWithExternalState.onHandleRequestSort instanceof Function
-}
-
-class MaterialTableComponent<TData extends {} = {}> extends React.Component<MaterialTableComponentProps, MaterialTableComponentState> {
-
- constructor(props: MaterialTableComponentProps) {
- super(props);
-
- const page = isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.page : 0;
- const rowsPerPage = isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.rowsPerPage || 10 : 10;
-
- this.state = {
- filter: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.filter || {} : {},
- showFilter: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.showFilter : false,
- loading: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.loading : false,
- order: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.order : 'asc',
- orderBy: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.orderBy : null,
- selected: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.selected : null,
- rows: isMaterialTableComponentPropsWithRows(this.props) && this.props.rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) || [],
- rowCount: isMaterialTableComponentPropsWithRows(this.props) && this.props.rows.length || 0,
- page,
- rowsPerPage,
- };
-
- if (isMaterialTableComponentPropsWithRequestData(this.props)) {
- this.update();
-
- if (this.props.tableApi) {
- this.props.tableApi.forceRefresh = () => this.update();
- }
- }
- }
- render(): JSX.Element {
- const { classes, columns } = this.props;
- const { rows, rowCount, order, orderBy, selected, rowsPerPage, page, showFilter, filter } = this.state;
- const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowCount - page * rowsPerPage);
- const getId = typeof this.props.idProperty !== "function" ? (data: TData) => ((data as {[key:string]: any })[this.props.idProperty as any as string] as string | number) : this.props.idProperty;
- const toggleFilter = isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.onToggleFilter : () => { !this.props.disableFilter && this.setState({ showFilter: !showFilter }, this.update) }
- return (
- <Paper className={ classes.root }>
- <TableToolbar numSelected={ selected && selected.length } title={ this.props.title } customActionButtons={ this.props.customActionButtons } onExportToCsv={ this.exportToCsv }
- onToggleFilter={ toggleFilter } />
- <div className={ classes.tableWrapper }>
- <Table className={ classes.table } aria-labelledby="tableTitle">
- <EnhancedTableHead
- columns={ columns }
- numSelected={ selected && selected.length }
- order={ order }
- orderBy={ orderBy }
- onSelectAllClick={ this.handleSelectAllClick }
- onRequestSort={ this.onHandleRequestSort }
- rowCount={ rows.length }
- enableSelection={ this.props.enableSelection }
- />
- <TableBody>
- { showFilter && <EnhancedTableFilter columns={ columns } filter={ filter } onFilterChanged={ this.onFilterChanged } enableSelection={this.props.enableSelection} /> || null }
- { rows // may need ordering here
- .map((entry: TData & { [key: string]: any }) => {
- const entryId = getId(entry);
- const isSelected = this.isSelected(entryId);
- return (
- <TableRow
- hover
- onClick={ event => this.handleClick(event, entry, entryId) }
- role="checkbox"
- aria-checked={ isSelected }
- tabIndex={ -1 }
- key={ entryId }
- selected={ isSelected }
- >
- { this.props.enableSelection
- ? <TableCell padding="checkbox" style={ { width: "50px" } }>
- <Checkbox checked={ isSelected } />
- </TableCell>
- : null
- }
- {
- this.props.columns.map(
- col => {
- const style = col.width ? { width: col.width } : { };
- return (
- <TableCell key={ col.property } align={ col.type === ColumnType.numeric && !col.align ? "right": col.align } style={ style }>
- { col.type === ColumnType.custom && col.customControl
- ? <col.customControl className={col.className} style={col.style} rowData={ entry } />
- : col.type === ColumnType.boolean
- ? <span className={col.className} style={col.style}>{col.labels ? col.labels[entry[col.property] ? "true": "false"] : String(entry[col.property]) }</span>
- : <span className={col.className} style={col.style}>{String(entry[col.property])}</span>
- }
- </TableCell>
- );
- }
- )
- }
- </TableRow>
- );
- }) }
- { emptyRows > 0 && (
- <TableRow style={ { height: 49 * emptyRows } }>
- <TableCell colSpan={ this.props.columns.length } />
- </TableRow>
- ) }
- </TableBody>
- </Table>
- </div>
- <TablePagination
- rowsPerPageOptions={ [5, 10, 25] }
- component="div"
- count={ rowCount }
- rowsPerPage={ rowsPerPage }
- page={ page }
- backIconButtonProps={ {
- 'aria-label': 'Previous Page',
- } }
- nextIconButtonProps={ {
- 'aria-label': 'Next Page',
- } }
- onChangePage={ this.onHandleChangePage }
- onChangeRowsPerPage={ this.onHandleChangeRowsPerPage }
- />
- </Paper>
- );
- }
-
- static getDerivedStateFromProps(props: MaterialTableComponentProps, state: MaterialTableComponentState & { _rawRows: {}[] }): MaterialTableComponentState & { _rawRows: {}[] } {
- if (isMaterialTableComponentPropsWithRowsAndRequestData(props)) {
- return {
- ...state,
- rows: props.rows,
- rowCount: props.rowCount,
- orderBy: props.orderBy,
- order: props.order,
- filter: props.filter,
- loading: props.loading,
- showFilter: props.showFilter,
- page: props.page,
- rowsPerPage: props.rowsPerPage
- }
- } else if (isMaterialTableComponentPropsWithRows(props) && props.asynchronus && state._rawRows !== props.rows) {
- const newState = MaterialTableComponent.updateRows(props, state);
- return {
- ...state,
- ...newState,
- _rawRows: props.rows || []
- };
- }
- return state;
- }
-
- private static updateRows(props: MaterialTableComponentPropsWithRows, state: MaterialTableComponentState): { rows: {}[], rowCount: number } {
- try {
- const { page, rowsPerPage, order, orderBy, filter } = state;
- let data: dataType[] = props.rows || [];
- let filtered = false;
- if (state.showFilter) {
- Object.keys(filter).forEach(prop => {
- const exp = filter[prop];
- filtered = filtered || exp !== undefined;
- data = exp !== undefined ? data.filter((val) => {
- const value = val[prop];
- return (value == exp) || (value && value.toString().indexOf(String(exp)) > -1);
- }) : data;
- });
- }
-
- const rowCount = data.length;
-
- data = (orderBy && order
- ? stableSort(data, getSorting(order, orderBy))
- : data).slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);
-
- return {
- rows: data,
- rowCount
- };
- } catch{
- return {
- rows: [],
- rowCount: 0
- }
- }
- }
-
- private async update() {
- if (isMaterialTableComponentPropsWithRequestData(this.props)) {
- const response = await Promise.resolve(
- this.props.onRequestData(
- this.state.page, this.state.rowsPerPage, this.state.orderBy, this.state.order, this.state.showFilter && this.state.filter || {})
- );
- this.setState(response);
- } else {
- this.setState(MaterialTableComponent.updateRows(this.props, this.state));
- }
- }
-
- private onFilterChanged = (property: string, filterTerm: string) => {
- if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) {
- this.props.onFilterChanged(property, filterTerm);
- return;
- }
- if (this.props.disableFilter) return;
- const colDefinition = this.props.columns && this.props.columns.find(col => col.property === property);
- if (colDefinition && colDefinition.disableFilter) return;
-
- const filter = { ...this.state.filter, [property]: filterTerm };
- this.setState({
- filter
- }, this.update);
- };
-
- private onHandleRequestSort = (event: React.SyntheticEvent, property: string) => {
- if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) {
- this.props.onHandleRequestSort(property);
- return;
- }
- if (this.props.disableSorting) return;
- const colDefinition = this.props.columns && this.props.columns.find(col => col.property === property);
- if (colDefinition && colDefinition.disableSorting) return;
-
- const orderBy = this.state.orderBy === property && this.state.order === 'desc' ? null : property;
- const order = this.state.orderBy === property && this.state.order === 'asc' ? 'desc' : 'asc';
- this.setState({
- order,
- orderBy
- }, this.update);
- };
-
- handleSelectAllClick: () => {};
-
- private onHandleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, page: number) => {
- if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) {
- this.props.onHandleChangePage(page);
- return;
- }
- this.setState({
- page
- }, this.update);
- };
-
- private onHandleChangeRowsPerPage = (event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => {
- if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) {
- this.props.onHandleChangeRowsPerPage(+(event && event.target.value));
- return;
- }
- const rowsPerPage = +(event && event.target.value);
- if (rowsPerPage && rowsPerPage > 0) {
- this.setState({
- rowsPerPage
- }, this.update);
- }
- };
-
- private isSelected(id: string | number): boolean {
- let selected = this.state.selected || [];
- const selectedIndex = selected.indexOf(id);
- return (selectedIndex > -1);
- }
-
- private handleClick(event: React.MouseEvent<HTMLTableRowElement>, rowData: TData, id: string | number): void {
- if (this.props.onHandleClick instanceof Function) {
- this.props.onHandleClick(event, rowData);
- return;
- }
- if (!this.props.enableSelection){
- return;
- }
- let selected = this.state.selected || [];
- const selectedIndex = selected.indexOf(id);
- if (selectedIndex > -1) {
- selected = [
- ...selected.slice(0, selectedIndex),
- ...selected.slice(selectedIndex + 1)
- ];
- } else {
- selected = [
- ...selected,
- id
- ];
- }
- this.setState({
- selected
- });
- }
-
- private exportToCsv = () => {
- let file;
- const data: string[] = [];
- data.push(this.props.columns.map(col => col.title || col.property).join(',')+"\r\n");
- this.state.rows && this.state.rows.forEach((row : any)=> {
- data.push(this.props.columns.map(col => row[col.property]).join(',') + "\r\n");
- });
- const properties = { type: 'text/csv' }; // Specify the file's mime-type.
- try {
- // Specify the filename using the File constructor, but ...
- file = new File(data, "export.csv", properties);
- } catch (e) {
- // ... fall back to the Blob constructor if that isn't supported.
- file = new Blob(data, properties);
- }
- const url = URL.createObjectURL(file);
- window.location.replace(url);
- }
-}
-
-export type MaterialTableCtorType<TData extends {} = {}> = new () => React.Component<Omit<MaterialTableComponentProps<TData>, 'classes'>>;
-
-export const MaterialTable = withStyles(styles)(MaterialTableComponent);
+import * as React from 'react'; +import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles'; + +import Table from '@material-ui/core/Table'; +import TableBody from '@material-ui/core/TableBody'; +import TableCell from '@material-ui/core/TableCell'; +import TablePagination from '@material-ui/core/TablePagination'; +import TableRow from '@material-ui/core/TableRow'; +import Paper from '@material-ui/core/Paper'; +import Checkbox from '@material-ui/core/Checkbox'; + +import { TableToolbar } from './tableToolbar'; +import { EnhancedTableHead } from './tableHead'; +import { EnhancedTableFilter } from './tableFilter'; + +import { ColumnModel, ColumnType } from './columnModel'; +import { Omit } from '@material-ui/core'; +import { SvgIconProps } from '@material-ui/core/SvgIcon/SvgIcon'; +export { ColumnModel, ColumnType } from './columnModel'; + +type propType = string | number | null | undefined | (string|number)[]; +type dataType = { [prop: string]: propType }; +type resultType<TData = dataType> = { page: number, rowCount: number, rows: TData[] }; + +export type DataCallback<TData = dataType> = (page?: number, rowsPerPage?: number, orderBy?: string | null, order?: 'asc' | 'desc' | null, filter?: { [property: string]: string }) =>resultType<TData> | Promise<resultType<TData>>; + +function desc(a: dataType, b: dataType, orderBy: string) { + if ((b[orderBy] || "") < (a[orderBy] || "") ) { + return -1; + } + if ((b[orderBy] || "") > (a[orderBy] || "") ) { + return 1; + } + return 0; +} + +function stableSort(array: dataType[], cmp: (a: dataType, b: dataType) => number) { + const stabilizedThis = array.map((el, index) => [el, index]) as [dataType, number][]; + stabilizedThis.sort((a, b) => { + const order = cmp(a[0], b[0]); + if (order !== 0) return order; + return a[1] - b[1]; + }); + return stabilizedThis.map(el => el[0]); +} + +function getSorting(order: 'asc' | 'desc' | null, orderBy: string) { + return order === 'desc' ? (a: dataType, b: dataType) => desc(a, b, orderBy) : (a: dataType, b: dataType) => -desc(a, b, orderBy); +} + +const styles = (theme: Theme) => createStyles({ + root: { + width: '100%', + marginTop: theme.spacing.unit * 3, + }, + table: { + minWidth: 1020, + }, + tableWrapper: { + overflowX: 'auto', + }, +}); + +export type MaterialTableComponentState<TData = {}> = { + order: 'asc' | 'desc'; + orderBy: string | null; + selected: any[] | null; + rows: TData[]; + rowCount: number; + page: number; + rowsPerPage: number; + loading: boolean; + showFilter: boolean; + filter: { [property: string]: string }; +}; + +export type TableApi = { forceRefresh?: () => Promise<void> }; + +type MaterialTableComponentBaseProps<TData> = WithStyles<typeof styles> & { + columns: ColumnModel<TData>[]; + idProperty: keyof TData | ((data: TData) => React.Key ); + title?: string; + enableSelection?: boolean; + disableSorting?: boolean; + disableFilter?: boolean; + customActionButtons?: { icon: React.ComponentType<SvgIconProps>, tooltip?: string, onClick: () => void }[]; + onHandleClick?(event: React.MouseEvent<HTMLTableRowElement>, rowData: TData): void; +}; + +type MaterialTableComponentPropsWithRows<TData={}> = MaterialTableComponentBaseProps<TData> & { rows: TData[]; asynchronus?: boolean; }; +type MaterialTableComponentPropsWithRequestData<TData={}> = MaterialTableComponentBaseProps<TData> & { onRequestData: DataCallback; tableApi?: TableApi; }; +type MaterialTableComponentPropsWithExternalState<TData={}> = MaterialTableComponentBaseProps<TData> & MaterialTableComponentState & { + onToggleFilter: () => void; + onFilterChanged: (property: string, filterTerm: string) => void; + onHandleChangePage: (page: number) => void; + onHandleChangeRowsPerPage: (rowsPerPage: number | null) => void; + onHandleRequestSort: (property: string) => void; +}; + +type MaterialTableComponentProps<TData = {}> = + MaterialTableComponentPropsWithRows<TData> | + MaterialTableComponentPropsWithRequestData<TData> | + MaterialTableComponentPropsWithExternalState<TData>; + +function isMaterialTableComponentPropsWithRows(props: MaterialTableComponentProps): props is MaterialTableComponentPropsWithRows { + return (props as MaterialTableComponentPropsWithRows).rows !== undefined && (props as MaterialTableComponentPropsWithRows).rows instanceof Array; +} + +function isMaterialTableComponentPropsWithRequestData(props: MaterialTableComponentProps): props is MaterialTableComponentPropsWithRequestData { + return (props as MaterialTableComponentPropsWithRequestData).onRequestData !== undefined && (props as MaterialTableComponentPropsWithRequestData).onRequestData instanceof Function; +} + +function isMaterialTableComponentPropsWithRowsAndRequestData(props: MaterialTableComponentProps): props is MaterialTableComponentPropsWithExternalState { + const propsWithExternalState = (props as MaterialTableComponentPropsWithExternalState) + return propsWithExternalState.onFilterChanged instanceof Function || + propsWithExternalState.onHandleChangePage instanceof Function || + propsWithExternalState.onHandleChangeRowsPerPage instanceof Function || + propsWithExternalState.onToggleFilter instanceof Function || + propsWithExternalState.onHandleRequestSort instanceof Function +} + +class MaterialTableComponent<TData extends {} = {}> extends React.Component<MaterialTableComponentProps, MaterialTableComponentState> { + + constructor(props: MaterialTableComponentProps) { + super(props); + + const page = isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.page : 0; + const rowsPerPage = isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.rowsPerPage || 10 : 10; + + this.state = { + filter: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.filter || {} : {}, + showFilter: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.showFilter : false, + loading: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.loading : false, + order: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.order : 'asc', + orderBy: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.orderBy : null, + selected: isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.selected : null, + rows: isMaterialTableComponentPropsWithRows(this.props) && this.props.rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) || [], + rowCount: isMaterialTableComponentPropsWithRows(this.props) && this.props.rows.length || 0, + page, + rowsPerPage, + }; + + if (isMaterialTableComponentPropsWithRequestData(this.props)) { + this.update(); + + if (this.props.tableApi) { + this.props.tableApi.forceRefresh = () => this.update(); + } + } + } + render(): JSX.Element { + const { classes, columns } = this.props; + const { rows, rowCount, order, orderBy, selected, rowsPerPage, page, showFilter, filter } = this.state; + const emptyRows = rowsPerPage - Math.min(rowsPerPage, rowCount - page * rowsPerPage); + const getId = typeof this.props.idProperty !== "function" ? (data: TData) => ((data as {[key:string]: any })[this.props.idProperty as any as string] as string | number) : this.props.idProperty; + const toggleFilter = isMaterialTableComponentPropsWithRowsAndRequestData(this.props) ? this.props.onToggleFilter : () => { !this.props.disableFilter && this.setState({ showFilter: !showFilter }, this.update) } + return ( + <Paper className={ classes.root }> + <TableToolbar numSelected={ selected && selected.length } title={ this.props.title } customActionButtons={ this.props.customActionButtons } onExportToCsv={ this.exportToCsv } + onToggleFilter={ toggleFilter } /> + <div className={ classes.tableWrapper }> + <Table className={ classes.table } aria-labelledby="tableTitle"> + <EnhancedTableHead + columns={ columns } + numSelected={ selected && selected.length } + order={ order } + orderBy={ orderBy } + onSelectAllClick={ this.handleSelectAllClick } + onRequestSort={ this.onHandleRequestSort } + rowCount={ rows.length } + enableSelection={ this.props.enableSelection } + /> + <TableBody> + { showFilter && <EnhancedTableFilter columns={ columns } filter={ filter } onFilterChanged={ this.onFilterChanged } enableSelection={this.props.enableSelection} /> || null } + { rows // may need ordering here + .map((entry: TData & { [key: string]: any }) => { + const entryId = getId(entry); + const isSelected = this.isSelected(entryId); + return ( + <TableRow + hover + onClick={ event => this.handleClick(event, entry, entryId) } + role="checkbox" + aria-checked={ isSelected } + tabIndex={ -1 } + key={ entryId } + selected={ isSelected } + > + { this.props.enableSelection + ? <TableCell padding="checkbox" style={ { width: "50px" } }> + <Checkbox checked={ isSelected } /> + </TableCell> + : null + } + { + this.props.columns.map( + col => { + const style = col.width ? { width: col.width } : { }; + return ( + <TableCell key={ col.property } align={ col.type === ColumnType.numeric && !col.align ? "right": col.align } style={ style }> + { col.type === ColumnType.custom && col.customControl + ? <col.customControl className={col.className} style={col.style} rowData={ entry } /> + : col.type === ColumnType.boolean + ? <span className={col.className} style={col.style}>{col.labels ? col.labels[entry[col.property] ? "true": "false"] : String(entry[col.property]) }</span> + : <span className={col.className} style={col.style}>{String(entry[col.property])}</span> + } + </TableCell> + ); + } + ) + } + </TableRow> + ); + }) } + { emptyRows > 0 && ( + <TableRow style={ { height: 49 * emptyRows } }> + <TableCell colSpan={ this.props.columns.length } /> + </TableRow> + ) } + </TableBody> + </Table> + </div> + <TablePagination + rowsPerPageOptions={[5, 10, 20, 50] } + component="div" + count={ rowCount } + rowsPerPage={ rowsPerPage } + page={ page } + backIconButtonProps={ { + 'aria-label': 'Previous Page', + } } + nextIconButtonProps={ { + 'aria-label': 'Next Page', + } } + onChangePage={ this.onHandleChangePage } + onChangeRowsPerPage={ this.onHandleChangeRowsPerPage } + /> + </Paper> + ); + } + + static getDerivedStateFromProps(props: MaterialTableComponentProps, state: MaterialTableComponentState & { _rawRows: {}[] }): MaterialTableComponentState & { _rawRows: {}[] } { + if (isMaterialTableComponentPropsWithRowsAndRequestData(props)) { + return { + ...state, + rows: props.rows, + rowCount: props.rowCount, + orderBy: props.orderBy, + order: props.order, + filter: props.filter, + loading: props.loading, + showFilter: props.showFilter, + page: props.page, + rowsPerPage: props.rowsPerPage + } + } else if (isMaterialTableComponentPropsWithRows(props) && props.asynchronus && state._rawRows !== props.rows) { + const newState = MaterialTableComponent.updateRows(props, state); + return { + ...state, + ...newState, + _rawRows: props.rows || [] + }; + } + return state; + } + + private static updateRows(props: MaterialTableComponentPropsWithRows, state: MaterialTableComponentState): { rows: {}[], rowCount: number } { + try { + const { page, rowsPerPage, order, orderBy, filter } = state; + let data: dataType[] = props.rows || []; + let filtered = false; + if (state.showFilter) { + Object.keys(filter).forEach(prop => { + const exp = filter[prop]; + filtered = filtered || exp !== undefined; + data = exp !== undefined ? data.filter((val) => { + const value = val[prop]; + return (value == exp) || (value && value.toString().indexOf(String(exp)) > -1); + }) : data; + }); + } + + const rowCount = data.length; + + data = (orderBy && order + ? stableSort(data, getSorting(order, orderBy)) + : data).slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage); + + return { + rows: data, + rowCount + }; + } catch{ + return { + rows: [], + rowCount: 0 + } + } + } + + private async update() { + if (isMaterialTableComponentPropsWithRequestData(this.props)) { + const response = await Promise.resolve( + this.props.onRequestData( + this.state.page, this.state.rowsPerPage, this.state.orderBy, this.state.order, this.state.showFilter && this.state.filter || {}) + ); + this.setState(response); + } else { + this.setState(MaterialTableComponent.updateRows(this.props, this.state)); + } + } + + private onFilterChanged = (property: string, filterTerm: string) => { + if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) { + this.props.onFilterChanged(property, filterTerm); + return; + } + if (this.props.disableFilter) return; + const colDefinition = this.props.columns && this.props.columns.find(col => col.property === property); + if (colDefinition && colDefinition.disableFilter) return; + + const filter = { ...this.state.filter, [property]: filterTerm }; + this.setState({ + filter + }, this.update); + }; + + private onHandleRequestSort = (event: React.SyntheticEvent, property: string) => { + if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) { + this.props.onHandleRequestSort(property); + return; + } + if (this.props.disableSorting) return; + const colDefinition = this.props.columns && this.props.columns.find(col => col.property === property); + if (colDefinition && colDefinition.disableSorting) return; + + const orderBy = this.state.orderBy === property && this.state.order === 'desc' ? null : property; + const order = this.state.orderBy === property && this.state.order === 'asc' ? 'desc' : 'asc'; + this.setState({ + order, + orderBy + }, this.update); + }; + + handleSelectAllClick: () => {}; + + private onHandleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, page: number) => { + if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) { + this.props.onHandleChangePage(page); + return; + } + this.setState({ + page + }, this.update); + }; + + private onHandleChangeRowsPerPage = (event: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => { + if (isMaterialTableComponentPropsWithRowsAndRequestData(this.props)) { + this.props.onHandleChangeRowsPerPage(+(event && event.target.value)); + return; + } + const rowsPerPage = +(event && event.target.value); + if (rowsPerPage && rowsPerPage > 0) { + this.setState({ + rowsPerPage + }, this.update); + } + }; + + private isSelected(id: string | number): boolean { + let selected = this.state.selected || []; + const selectedIndex = selected.indexOf(id); + return (selectedIndex > -1); + } + + private handleClick(event: React.MouseEvent<HTMLTableRowElement>, rowData: TData, id: string | number): void { + if (this.props.onHandleClick instanceof Function) { + this.props.onHandleClick(event, rowData); + return; + } + if (!this.props.enableSelection){ + return; + } + let selected = this.state.selected || []; + const selectedIndex = selected.indexOf(id); + if (selectedIndex > -1) { + selected = [ + ...selected.slice(0, selectedIndex), + ...selected.slice(selectedIndex + 1) + ]; + } else { + selected = [ + ...selected, + id + ]; + } + this.setState({ + selected + }); + } + + private exportToCsv = async () => { + let file; + let data: dataType[] | null = null; + let csv: string[] = []; + + + if (isMaterialTableComponentPropsWithRequestData(this.props)) { + this.setState({ loading: true }); + const result = await Promise.resolve( + this.props.onRequestData( 0, 1000, this.state.orderBy, this.state.order, this.state.showFilter && this.state.filter || {}) + ); + data = result.rows; + this.setState({ loading: true }); + } else { + data = MaterialTableComponent.updateRows(this.props, this.state).rows; + } + + if (data && data.length > 0) { + csv.push(this.props.columns.map(col => col.title || col.property).join(',') + "\r\n"); + this.state.rows && this.state.rows.forEach((row: any) => { + csv.push(this.props.columns.map(col => row[col.property]).join(',') + "\r\n"); + }); + const properties = { type: "text/csv;charset=utf-8" }; // Specify the file's mime-type. + try { + // Specify the filename using the File constructor, but ... + file = new File(csv, "export.csv", properties); + } catch (e) { + // ... fall back to the Blob constructor if that isn't supported. + file = new Blob(csv, properties); + } + } + if (!file) return; + var reader = new FileReader(); + reader.onload = function (e) { + const dataUri = reader.result as any; + const link = document.createElement("a"); + if (typeof link.download === 'string') { + link.href = dataUri; + link.download = "export.csv"; + + //Firefox requires the link to be in the body + document.body.appendChild(link); + + //simulate click + link.click(); + + //remove the link when done + document.body.removeChild(link); + } else { + window.open(dataUri); + } + } + reader.readAsDataURL(file); + + // const url = URL.createObjectURL(file); + // window.location.replace(url); + } +} + +export type MaterialTableCtorType<TData extends {} = {}> = new () => React.Component<Omit<MaterialTableComponentProps<TData>, 'classes'>>; + +export const MaterialTable = withStyles(styles)(MaterialTableComponent); export default MaterialTable;
\ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts b/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts index e52fdb731..3d6326349 100644 --- a/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts +++ b/sdnr/wt/odlux/framework/src/components/material-table/utilities.ts @@ -16,6 +16,7 @@ export interface IExternalTableState<TData> { loading: boolean; showFilter: boolean; filter: { [property: string]: string }; + preFilter: { [property: string]: string }; } /** Create an actionHandler and actions for external table states. */ @@ -24,7 +25,7 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState //#region Actions abstract class TableAction extends Action { } - + class RequestSortAction extends TableAction { constructor(public orderBy: string) { super(); @@ -49,8 +50,14 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState } } + class SetPreFilterChangedAction extends TableAction { + constructor(public preFilter: {[key: string]: string}) { + super(); + } + } + class SetFilterChangedAction extends TableAction { - constructor(public filter: {[key: string]: string}) { + constructor (public filter: { [key: string]: string }) { super(); } } @@ -74,7 +81,7 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState } // #endregion - + //#region Action Handler const externalTableStateInit: IExternalTableState<TData> = { order: 'asc', @@ -86,7 +93,8 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState rowsPerPage: 10, loading: false, showFilter: false, - filter: {} + filter: {}, + preFilter: {} }; const externalTableStateActionHandler: IActionHandler<IExternalTableState<TData>> = (state = externalTableStateInit, action) => { @@ -117,6 +125,12 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState loading: true, showFilter: action.show } + } else if (action instanceof SetPreFilterChangedAction) { + state = { + ...state, + loading: true, + preFilter: action.preFilter + } } else if (action instanceof SetFilterChangedAction) { state = { ...state, @@ -135,7 +149,7 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState loading: true, rowsPerPage: action.rowsPerPage } - } + } return state; } @@ -145,11 +159,21 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState const reloadAction = (dispatch: Dispatch, getAppState: () => IApplicationStoreState) => { dispatch(new RefreshAction()); const ownState = selectState(getAppState()); - Promise.resolve(callback(ownState.page, ownState.rowsPerPage, ownState.orderBy, ownState.order, ownState.showFilter && ownState.filter || {})).then(result => { + const filter = { ...ownState.preFilter, ...(ownState.showFilter && ownState.filter || {})}; + Promise.resolve(callback(ownState.page, ownState.rowsPerPage, ownState.orderBy, ownState.order, filter )).then(result => { dispatch(new SetResultAction(result)); }).catch(error => new AddErrorInfoAction(error)); }; + const createPreActions = (dispatch: Dispatch, skipRefresh: boolean = false) => { + return { + onPreFilterChanged: (preFilter: { [key: string]: string }) => { + dispatch(new SetPreFilterChangedAction(preFilter)); + (!skipRefresh) && dispatch(reloadAction); + } + }; + } + const createActions = (dispatch: Dispatch, skipRefresh: boolean = false) => { return { onRefresh: () => { @@ -176,7 +200,7 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState (!skipRefresh) && dispatch(reloadAction); }); }, - onHandleChangePage: (page: number) => { + onHandleChangePage: (page: number) => { dispatch((dispatch: Dispatch) => { dispatch(new SetPageAction(page)); (!skipRefresh) && dispatch(reloadAction); @@ -195,13 +219,14 @@ export function createExternal<TData>(callback: DataCallback<TData>, selectState const createProperties = (state: IApplicationStoreState) => { return { ...selectState(state) - } + } } - + return { reloadAction: reloadAction, createActions: createActions, createProperties: createProperties, + createPreActions: createPreActions, actionHandler: externalTableStateActionHandler } }
\ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/components/material-ui/index.ts b/sdnr/wt/odlux/framework/src/components/material-ui/index.ts index 890312ce2..287c018b6 100644 --- a/sdnr/wt/odlux/framework/src/components/material-ui/index.ts +++ b/sdnr/wt/odlux/framework/src/components/material-ui/index.ts @@ -1,3 +1,5 @@ export { ListItemLink } from './listItemLink';
export { Panel } from './panel';
export { ToggleButton, ToggleButtonClassKey } from './toggleButton';
+export { TreeView, ITreeItem, TreeViewCtorType} from './treeView';
+
diff --git a/sdnr/wt/odlux/framework/src/components/navigationMenu.tsx b/sdnr/wt/odlux/framework/src/components/navigationMenu.tsx index 3a7725b1b..3da5b2f8a 100644 --- a/sdnr/wt/odlux/framework/src/components/navigationMenu.tsx +++ b/sdnr/wt/odlux/framework/src/components/navigationMenu.tsx @@ -37,8 +37,8 @@ export const NavigationMenu = withStyles(styles)(connect()(({ classes, state }: <div className={classes.toolbar} />
{ /* https://fiffty.github.io/react-treeview-mui/ */}
<List component="nav">
- { process.env.NODE_ENV === "development" ? <ListItemLink exact to="/" primary="Home" icon={<FontAwesomeIcon icon={faHome} />} /> : null }
- <Divider />
+ <ListItemLink exact to="/" primary="Home" icon={<FontAwesomeIcon icon={faHome} />} />
+ <Divider />
{
state.framework.applicationRegistraion && Object.keys(state.framework.applicationRegistraion).map(key => {
const reg = state.framework.applicationRegistraion[key];
@@ -53,7 +53,7 @@ export const NavigationMenu = withStyles(styles)(connect()(({ classes, state }: }) || null
}
<Divider />
- { process.env.NODE_ENV === "development" ? <ListItemLink to="/about" primary="About" icon={<FontAwesomeIcon icon={faAddressBook} />} /> : null }
+ <ListItemLink to="/about" primary="About" icon={<FontAwesomeIcon icon={faAddressBook} />} />
</List>
</> || null
}
diff --git a/sdnr/wt/odlux/framework/src/components/titleBar.tsx b/sdnr/wt/odlux/framework/src/components/titleBar.tsx index 439e9bc12..a3ba571ec 100644 --- a/sdnr/wt/odlux/framework/src/components/titleBar.tsx +++ b/sdnr/wt/odlux/framework/src/components/titleBar.tsx @@ -32,7 +32,8 @@ const styles = (theme: Theme) => createStyles({ marginRight: 20,
},
icon: {
- marginRight: 12
+ marginLeft: 16,
+ marginRight: 8
}
});
diff --git a/sdnr/wt/odlux/framework/src/design/default.ts b/sdnr/wt/odlux/framework/src/design/default.ts index ecc4ebcf2..a57685d9c 100644 --- a/sdnr/wt/odlux/framework/src/design/default.ts +++ b/sdnr/wt/odlux/framework/src/design/default.ts @@ -1,12 +1,12 @@ /****************************************************************************** * Copyright 2018 highstreet technologies GmbH - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,37 +17,28 @@ import { createMuiTheme } from '@material-ui/core/styles'; const theme = createMuiTheme({ - design: { - id: "onap", - name: "Open Networking Automation Plattform (ONAP)", - url: "https://www.onap.org/wp-content/uploads/sites/20/2017/02/logo_onap_2017.png", - height: 49, - width: 229, - logoHeight: 32, + design: { + id: "onap", + name: "Open Networking Automation Plattform (ONAP)", + url: "https://www.onap.org/wp-content/uploads/sites/20/2017/02/logo_onap_2017.png", + height: 49, + width: 229, + logoHeight: 32, + }, + palette: { + primary: { + light: "#eeeeee", + main: "#ffffff", + dark: "#e0e0e0", + contrastText: "#07819B" }, - palette: { - type: "light", - common: { - black: "#000", - white: "#fff" - }, - background: { - paper: "#fff", - default: "#fafafa" - }, - primary: { - light: "#eee", - main: "#fff", - dark: "#e0e0e0", - contrastText: "#07819B" - }, - secondary: { - light: "#07819b5e", - main: "#07819bc9", - dark: "#07819B", - contrastText: "#fff" - }, - } - }); + secondary: { + light: "rgba(7, 129, 155, 94)", + main: "rgba(7, 129, 155, 201)", + dark: "#07819B", + contrastText: "#ffffff" + }, + } +}); - export default theme;
\ No newline at end of file +export default theme;
\ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/index.html b/sdnr/wt/odlux/framework/src/index.html index 36d937775..1a373392d 100644 --- a/sdnr/wt/odlux/framework/src/index.html +++ b/sdnr/wt/odlux/framework/src/index.html @@ -1,24 +1,24 @@ -<!DOCTYPE html>
-<html lang="en">
-
-<head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <!-- <link rel="stylesheet" href="./vendor.css" > -->
- <title>O D L UX</title>
-</head>
-
-<body>
- <div id="app"></div>
- <script type="text/javascript" src="./require.js"></script>
- <script type="text/javascript" src="./config.js"></script>
- <script>
- // run the application
- require(["run"], function (run) {
- run.runApplication();
- });
- </script>
-</body>
-
+<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <meta http-equiv="X-UA-Compatible" content="ie=edge"> + <!-- <link rel="stylesheet" href="./vendor.css" > --> + <title>O D L UX</title> +</head> + +<body> + <div id="app"></div> + <script type="text/javascript" src="./require.js"></script> + <script type="text/javascript" src="./config.js"></script> + <script> + // run the application + require(["run"], function (run) { + run.runApplication(); + }); + </script> +</body> + </html>
\ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/models/elasticSearch.ts b/sdnr/wt/odlux/framework/src/models/elasticSearch.ts index 7c12f97d3..a9936c0ad 100644 --- a/sdnr/wt/odlux/framework/src/models/elasticSearch.ts +++ b/sdnr/wt/odlux/framework/src/models/elasticSearch.ts @@ -1,4 +1,5 @@ export type Result<TSource extends {}> = {
+ aggregations: TSource;
took: number;
timed_out: boolean;
_shards: {
@@ -30,7 +31,7 @@ type ActionResponse ={ successful: number,
failed: number
},
-
+
}
export type PostResponse = ActionResponse & {
diff --git a/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts b/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts index 690324e1c..bbf907c80 100644 --- a/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts +++ b/sdnr/wt/odlux/framework/src/utilities/elasticSearch.ts @@ -1,71 +1,71 @@ -
-import { DataCallback } from '../components/material-table';
-import { Result, HitEntry } from '../models';
-
-import { requestRest } from '../services/restService';
-
-type propType = string | number | null | undefined | (string | number)[];
-type dataType = { [prop: string]: propType };
-type resultType<TData = dataType> = { page: number, rowCount: number, rows: TData[] };
-
-export function createSearchDataHandler<TResult extends {} = dataType>(uri: string, additionalParameters?: {}): DataCallback<(TResult & { _id: string })>;
-export function createSearchDataHandler<TResult extends {} = dataType, TData = dataType>(uri: string, additionalParameters: {} | null | undefined, mapResult: (res: HitEntry<TResult>, index: number, arr: HitEntry<TResult>[]) => (TData & { _id: string }), mapRequest?: (name?: string | null) => string): DataCallback<(TData & { _id: string })>
-export function createSearchDataHandler<TResult, TData>(uri: string, additionalParameters?: {} | null | undefined, mapResult?: (res: HitEntry<TResult>, index: number, arr: HitEntry<TResult>[]) => (TData & { _id: string }), mapRequest?: (name?: string | null) => string): DataCallback<(TData & { _id: string })> {
- const url = `${ window.location.origin }/database/${uri}/_search`;
- const fetchData: DataCallback<(TData & { _id: string }) > = async (page, rowsPerPage, orderBy, order, filter) => {
- const from = rowsPerPage && page != null && !isNaN(+page)
- ? (+page) * rowsPerPage
- : null;
-
- const filterKeys = filter && Object.keys(filter) || [];
-
- const query = {
- ...filterKeys.length > 0 ? {
- query: {
- bool: {
- must: filterKeys.reduce((acc, cur) => {
- if (acc && filter && filter[cur]) {
- acc.push({ [filter[cur].indexOf("*") > -1 || filter[cur].indexOf("?") > -1 ? "wildcard" : "prefix"]: { [mapRequest ? mapRequest(cur) : cur]: filter[cur] } });
- }
- return acc;
- }, [] as any[])
- }
- }
- } : { "query": { "match_all": {} } },
- ...rowsPerPage ? { "size": rowsPerPage } : {},
- ...from ? { "from": from } : {},
- ...orderBy && order ? { "sort": [{ [mapRequest ? mapRequest(orderBy) : orderBy]: order }] } : {},
- ...additionalParameters ? additionalParameters : {}
- };
- const result = await requestRest<Result<TResult & { _id: string }>>(url, {
- method: "POST", // *GET, POST, PUT, DELETE, etc.
- mode: "no-cors", // no-cors, cors, *same-origin
- cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
- headers: {
- "Content-Type": "application/json; charset=utf-8",
- // "Content-Type": "application/x-www-form-urlencoded",
- },
- body: JSON.stringify(query), // body data type must match "Content-Type" header
- });
-
- if (result) {
- let rows: (TData & { _id: string })[] = [];
-
- if (result && result.hits && result.hits.hits) {
- rows = result.hits.hits.map( mapResult ? mapResult : h => (
- { ...(h._source as any as TData), _id: h._id }
- )) || []
- }
-
- const data = {
- page: Math.min(page || 0, result.hits.total || 0 / (rowsPerPage || 1)), rowCount: result.hits.total, rows: rows
- };
- return data;
- }
-
- return { page: 0, rowCount: 0, rows: [] };
- };
-
- return fetchData;
-}
-
+ +import { DataCallback } from '../components/material-table'; +import { Result, HitEntry } from '../models'; + +import { requestRest } from '../services/restService'; + +type propType = string | number | null | undefined | (string | number)[]; +type dataType = { [prop: string]: propType }; +type resultType<TData = dataType> = { page: number, rowCount: number, rows: TData[] }; + +export function createSearchDataHandler<TResult extends {} = dataType>(uri: string, additionalParameters?: {}): DataCallback<(TResult & { _id: string })>; +export function createSearchDataHandler<TResult extends {} = dataType, TData = dataType>(uri: string, additionalParameters: {} | null | undefined, mapResult: (res: HitEntry<TResult>, index: number, arr: HitEntry<TResult>[]) => (TData & { _id: string }), mapRequest?: (name?: string | null) => string): DataCallback<(TData & { _id: string })> +export function createSearchDataHandler<TResult, TData>(uri: string, additionalParameters?: {} | null | undefined, mapResult?: (res: HitEntry<TResult>, index: number, arr: HitEntry<TResult>[]) => (TData & { _id: string }), mapRequest?: (name?: string | null) => string): DataCallback<(TData & { _id: string })> { + const url = `${ window.location.origin }/database/${uri}/_search`; + const fetchData: DataCallback<(TData & { _id: string }) > = async (page, rowsPerPage, orderBy, order, filter) => { + const from = rowsPerPage && page != null && !isNaN(+page) + ? (+page) * rowsPerPage + : null; + + const filterKeys = filter && Object.keys(filter) || []; + + const query = { + ...filterKeys.length > 0 ? { + query: { + bool: { + must: filterKeys.reduce((acc, cur) => { + if (acc && filter && filter[cur]) { + acc.push({ [filter[cur].indexOf("*") > -1 || filter[cur].indexOf("?") > -1 ? "wildcard" : "term"]: { [mapRequest ? mapRequest(cur) : cur]: filter[cur] } }); + } + return acc; + }, [] as any[]) + } + } + } : { "query": { "match_all": {} } }, + ...rowsPerPage ? { "size": rowsPerPage } : {}, + ...from ? { "from": from } : {}, + ...orderBy && order ? { "sort": [{ [mapRequest ? mapRequest(orderBy) : orderBy]: order }] } : {}, + ...additionalParameters ? additionalParameters : {} + }; + const result = await requestRest<Result<TResult & { _id: string }>>(url, { + method: "POST", // *GET, POST, PUT, DELETE, etc. + mode: "no-cors", // no-cors, cors, *same-origin + cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached + headers: { + "Content-Type": "application/json; charset=utf-8", + // "Content-Type": "application/x-www-form-urlencoded", + }, + body: JSON.stringify(query), // body data type must match "Content-Type" header + }); + + if (result) { + let rows: (TData & { _id: string })[] = []; + + if (result && result.hits && result.hits.hits) { + rows = result.hits.hits.map( mapResult ? mapResult : h => ( + { ...(h._source as any as TData), _id: h._id } + )) || [] + } + + const data = { + page: Math.min(page || 0, result.hits.total || 0 / (rowsPerPage || 1)), rowCount: result.hits.total, rows: rows + }; + return data; + } + + return { page: 0, rowCount: 0, rows: [] }; + }; + + return fetchData; +} + diff --git a/sdnr/wt/odlux/framework/src/views/about.tsx b/sdnr/wt/odlux/framework/src/views/about.tsx index f905e0e75..4cd544b5f 100644 --- a/sdnr/wt/odlux/framework/src/views/about.tsx +++ b/sdnr/wt/odlux/framework/src/views/about.tsx @@ -1,859 +1,14 @@ import * as React from 'react';
-import { withComponents, WithComponents } from '../utilities/withComponents';
-import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles';
-
-import ExpansionPanel from '@material-ui/core/ExpansionPanel';
-import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
-import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
-import Typography from '@material-ui/core/Typography';
-import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
-
-import { MaterialTable, MaterialTableCtorType, ColumnType } from '../components/material-table';
-import { TreeView, ITreeItem, TreeViewCtorType } from '../components/material-ui/treeView';
-import { SvgIconProps } from '@material-ui/core/SvgIcon';
-
-const styles = (theme: Theme) => createStyles({
- root: {
- width: '100%',
- },
- heading: {
- fontSize: theme.typography.pxToRem(15),
- fontWeight: theme.typography.fontWeightRegular,
- },
-});
-
-class SampleData {
- _id: string;
- index: number;
- guid: string;
- isActive: boolean;
- balance: string;
- age: number;
- firstName: string;
- lastName: string;
- company: string;
- email: string;
- registered: string;
- latitude: string;
- longitude: string;
-}
-
-// https://next.json-generator.com/NJ5Bv-v1I
-const tableData: SampleData[] = [
- {
- "_id": "5c0e18399919a5c43636fdf2",
- "index": 0,
- "guid": "48728d8e-8300-4d0f-b967-e2166d023066",
- "isActive": false,
- "balance": "$3,480.16",
- "age": 33,
- "firstName": "Brooke",
- "lastName": "Morris",
- "company": "ZORROMOP",
- "email": "brooke.morris@zorromop.de",
- "registered": "Sunday, February 11, 2018 2:55 PM",
- "latitude": "-69.109379",
- "longitude": "113.735639"
- },
- {
- "_id": "5c0e1839b61e3eeaf164259d",
- "index": 1,
- "guid": "28723570-1507-422e-b78c-924402371fb1",
- "isActive": false,
- "balance": "$1,305.01",
- "age": 28,
- "firstName": "Jolene",
- "lastName": "Everett",
- "company": "ZENCO",
- "email": "jolene.everett@zenco.de",
- "registered": "Saturday, December 8, 2018 5:17 PM",
- "latitude": "13.683025",
- "longitude": "85.101421"
- },
- {
- "_id": "5c0e1839e81f57913c5d2147",
- "index": 2,
- "guid": "e914dc5d-91a3-405d-ac48-aee6f0cd391a",
- "isActive": true,
- "balance": "$1,418.37",
- "age": 28,
- "firstName": "Elva",
- "lastName": "Travis",
- "company": "ZYTREK",
- "email": "elva.travis@zytrek.de",
- "registered": "Thursday, March 10, 2016 5:13 PM",
- "latitude": "53.75862",
- "longitude": "-67.784532"
- },
- {
- "_id": "5c0e1839bc9224a2b54c0f69",
- "index": 3,
- "guid": "88cbdce0-0bcc-4d16-83c3-3017690503c4",
- "isActive": true,
- "balance": "$1,709.60",
- "age": 21,
- "firstName": "Ellis",
- "lastName": "Mcpherson",
- "company": "DIGIPRINT",
- "email": "ellis.mcpherson@digiprint.de",
- "registered": "Sunday, December 21, 2014 5:25 AM",
- "latitude": "46.486149",
- "longitude": "-66.657067"
- },
- {
- "_id": "5c0e183951b51475db0f35d1",
- "index": 4,
- "guid": "c887ac86-7ba1-4eb6-9b47-e88a1bcb3713",
- "isActive": true,
- "balance": "$3,578.54",
- "age": 25,
- "firstName": "Marcia",
- "lastName": "Rocha",
- "company": "ZAPPIX",
- "email": "marcia.rocha@zappix.de",
- "registered": "Tuesday, June 16, 2015 11:21 AM",
- "latitude": "-39.905461",
- "longitude": "150.873895"
- },
- {
- "_id": "5c0e18398c5be8d362a578eb",
- "index": 5,
- "guid": "0d160697-9b5b-4941-9b5f-4ba3a7f97b49",
- "isActive": true,
- "balance": "$414.98",
- "age": 32,
- "firstName": "Lavonne",
- "lastName": "Wilkins",
- "company": "FARMAGE",
- "email": "lavonne.wilkins@farmage.de",
- "registered": "Monday, February 1, 2016 5:27 PM",
- "latitude": "-16.839256",
- "longitude": "-105.824746"
- },
- {
- "_id": "5c0e18399804086c836d7d56",
- "index": 6,
- "guid": "715a5f63-35b6-4903-a46e-ba584b005e64",
- "isActive": false,
- "balance": "$1,755.78",
- "age": 32,
- "firstName": "Wise",
- "lastName": "Berg",
- "company": "ZIZZLE",
- "email": "wise.berg@zizzle.de",
- "registered": "Saturday, March 28, 2015 1:40 AM",
- "latitude": "51.15269",
- "longitude": "65.795093"
- },
- {
- "_id": "5c0e18399c4d13538bcaf8c9",
- "index": 7,
- "guid": "7ee50269-23e8-499e-9a16-09f393d7600c",
- "isActive": false,
- "balance": "$342.52",
- "age": 27,
- "firstName": "Isabel",
- "lastName": "Battle",
- "company": "EZENTIA",
- "email": "isabel.battle@ezentia.de",
- "registered": "Thursday, June 7, 2018 12:16 AM",
- "latitude": "-53.318152",
- "longitude": "-153.516824"
- },
- {
- "_id": "5c0e18398d7fb9a4eceeffa2",
- "index": 8,
- "guid": "1e30c9ac-2297-4f16-83e6-9559b1ebe92c",
- "isActive": true,
- "balance": "$3,184.71",
- "age": 36,
- "firstName": "Lenora",
- "lastName": "Crawford",
- "company": "KIDGREASE",
- "email": "lenora.crawford@kidgrease.de",
- "registered": "Saturday, January 7, 2017 6:17 PM",
- "latitude": "-72.431496",
- "longitude": "9.413359"
- },
- {
- "_id": "5c0e18395837069ab6b79d00",
- "index": 9,
- "guid": "d04a02ed-5899-4729-a7e5-2d85b5d03973",
- "isActive": true,
- "balance": "$1,553.28",
- "age": 35,
- "firstName": "Sasha",
- "lastName": "Bridges",
- "company": "IDEALIS",
- "email": "sasha.bridges@idealis.de",
- "registered": "Sunday, February 4, 2018 7:02 PM",
- "latitude": "8.095691",
- "longitude": "-105.758195"
- },
- {
- "_id": "5c0e18390be19bf65acad180",
- "index": 10,
- "guid": "3a1a77e6-ef15-4598-8274-c68ac3bb922a",
- "isActive": false,
- "balance": "$3,587.96",
- "age": 20,
- "firstName": "Wilkins",
- "lastName": "Beasley",
- "company": "DIGIFAD",
- "email": "wilkins.beasley@digifad.de",
- "registered": "Monday, March 5, 2018 1:27 PM",
- "latitude": "-88.062704",
- "longitude": "149.95661"
- },
- {
- "_id": "5c0e1839ffbbad5c9954e49f",
- "index": 11,
- "guid": "97a56950-a08c-4e00-8002-ba2d5de4da5d",
- "isActive": false,
- "balance": "$1,997.80",
- "age": 31,
- "firstName": "Sullivan",
- "lastName": "Mcclain",
- "company": "EARTHMARK",
- "email": "sullivan.mcclain@earthmark.de",
- "registered": "Saturday, October 27, 2018 2:51 PM",
- "latitude": "-81.86349",
- "longitude": "-79.596991"
- },
- {
- "_id": "5c0e183914bd464d55e7325f",
- "index": 12,
- "guid": "294f6485-d0f9-4b25-b998-325ae90fa769",
- "isActive": true,
- "balance": "$1,405.46",
- "age": 24,
- "firstName": "Herminia",
- "lastName": "Fischer",
- "company": "ECOLIGHT",
- "email": "herminia.fischer@ecolight.de",
- "registered": "Thursday, January 16, 2014 4:48 PM",
- "latitude": "48.224363",
- "longitude": "11.08339"
- },
- {
- "_id": "5c0e183968ec2556d8f6566c",
- "index": 13,
- "guid": "16edfea4-7b37-4e54-868c-c369b413dd78",
- "isActive": false,
- "balance": "$3,440.67",
- "age": 39,
- "firstName": "Blanchard",
- "lastName": "Blackwell",
- "company": "GEOFORMA",
- "email": "blanchard.blackwell@geoforma.de",
- "registered": "Wednesday, July 30, 2014 4:07 AM",
- "latitude": "-52.169297",
- "longitude": "10.415879"
- },
- {
- "_id": "5c0e183939a0fc955f2d94da",
- "index": 14,
- "guid": "4ed454e2-dde1-4ab5-a434-4a82205ced2d",
- "isActive": true,
- "balance": "$1,883.27",
- "age": 35,
- "firstName": "Gayle",
- "lastName": "Little",
- "company": "AQUAZURE",
- "email": "gayle.little@aquazure.de",
- "registered": "Tuesday, December 12, 2017 5:08 PM",
- "latitude": "-58.473236",
- "longitude": "38.022269"
- },
- {
- "_id": "5c0e1839099f9221ccd968ac",
- "index": 15,
- "guid": "1d052fd4-7c54-45fb-b0db-7de1acc4262a",
- "isActive": false,
- "balance": "$2,601.94",
- "age": 31,
- "firstName": "Jocelyn",
- "lastName": "Richards",
- "company": "GINK",
- "email": "jocelyn.richards@gink.de",
- "registered": "Sunday, October 30, 2016 9:12 PM",
- "latitude": "-43.489676",
- "longitude": "2.557869"
- },
- {
- "_id": "5c0e183970f320f377321c3f",
- "index": 16,
- "guid": "45bca125-8831-48c3-b22b-29ae318e7096",
- "isActive": false,
- "balance": "$3,441.74",
- "age": 34,
- "firstName": "Berta",
- "lastName": "Valentine",
- "company": "ISOSPHERE",
- "email": "berta.valentine@isosphere.de",
- "registered": "Sunday, March 19, 2017 8:22 PM",
- "latitude": "-40.188039",
- "longitude": "-170.085092"
- },
- {
- "_id": "5c0e1839ab960bb0a9f4f392",
- "index": 17,
- "guid": "d7b5122a-94c9-423c-b799-1a8f8314b152",
- "isActive": false,
- "balance": "$56.39",
- "age": 21,
- "firstName": "Russell",
- "lastName": "Powers",
- "company": "TETAK",
- "email": "russell.powers@tetak.de",
- "registered": "Thursday, November 3, 2016 9:23 PM",
- "latitude": "-51.610519",
- "longitude": "-133.280363"
- },
- {
- "_id": "5c0e183998f0195404b9aaa4",
- "index": 18,
- "guid": "a043ba97-ea7e-48ce-bb15-18ee09fb393d",
- "isActive": true,
- "balance": "$1,503.57",
- "age": 37,
- "firstName": "Rosario",
- "lastName": "Brennan",
- "company": "VIAGRAND",
- "email": "rosario.brennan@viagrand.de",
- "registered": "Saturday, March 17, 2018 10:32 PM",
- "latitude": "-43.773365",
- "longitude": "47.58682"
- },
- {
- "_id": "5c0e1839bcb2a5cc567129ac",
- "index": 19,
- "guid": "de6d5d36-201e-4f87-9976-ed31f3160e42",
- "isActive": false,
- "balance": "$1,160.18",
- "age": 29,
- "firstName": "Anita",
- "lastName": "Hodges",
- "company": "TUBALUM",
- "email": "anita.hodges@tubalum.de",
- "registered": "Sunday, November 26, 2017 11:54 AM",
- "latitude": "7.080244",
- "longitude": "-9.970715"
- },
- {
- "_id": "5c0e18394b37e854a1ef371c",
- "index": 20,
- "guid": "9407113b-896a-4699-ac1b-363bc3c6f8ad",
- "isActive": false,
- "balance": "$34.81",
- "age": 31,
- "firstName": "Barrett",
- "lastName": "Weaver",
- "company": "DUOFLEX",
- "email": "barrett.weaver@duoflex.de",
- "registered": "Tuesday, November 3, 2015 9:31 AM",
- "latitude": "40.30558",
- "longitude": "-69.986664"
- },
- {
- "_id": "5c0e1839b5658f90e16a86e0",
- "index": 21,
- "guid": "81f894c4-c931-422d-a30e-593824d95bf9",
- "isActive": true,
- "balance": "$2,808.63",
- "age": 26,
- "firstName": "Baxter",
- "lastName": "Chase",
- "company": "BUNGA",
- "email": "baxter.chase@bunga.de",
- "registered": "Friday, October 28, 2016 7:10 AM",
- "latitude": "-49.05652",
- "longitude": "63.123535"
- },
- {
- "_id": "5c0e1839cb9462c9ecbb59af",
- "index": 22,
- "guid": "92e67862-4fdf-43af-a3ef-ef3edb8d6706",
- "isActive": true,
- "balance": "$3,552.71",
- "age": 29,
- "firstName": "Olga",
- "lastName": "Kemp",
- "company": "OHMNET",
- "email": "olga.kemp@ohmnet.de",
- "registered": "Saturday, March 26, 2016 11:51 AM",
- "latitude": "-17.450481",
- "longitude": "-13.945794"
- },
- {
- "_id": "5c0e18396f999c2b8ac731a9",
- "index": 23,
- "guid": "a682eaae-34f0-4973-b8a0-30972de0732b",
- "isActive": false,
- "balance": "$1,999.20",
- "age": 21,
- "firstName": "Ebony",
- "lastName": "Le",
- "company": "MULTRON",
- "email": "ebony.le@multron.de",
- "registered": "Friday, March 27, 2015 9:23 AM",
- "latitude": "-70.380014",
- "longitude": "173.20685"
- },
- {
- "_id": "5c0e18391cfb28263eb42db7",
- "index": 24,
- "guid": "f1cddb5f-0b89-453e-b0c9-8193a56cc610",
- "isActive": true,
- "balance": "$2,950.91",
- "age": 30,
- "firstName": "Norman",
- "lastName": "Price",
- "company": "COMVEX",
- "email": "norman.price@comvex.de",
- "registered": "Tuesday, August 21, 2018 11:17 PM",
- "latitude": "86.501469",
- "longitude": "159.545352"
- },
- {
- "_id": "5c0e18394a6be11128c7e5ca",
- "index": 25,
- "guid": "dadb738a-40fd-45b6-abac-023a803d95c2",
- "isActive": true,
- "balance": "$2,767.09",
- "age": 25,
- "firstName": "Sara",
- "lastName": "Ruiz",
- "company": "AUSTECH",
- "email": "sara.ruiz@austech.de",
- "registered": "Wednesday, June 20, 2018 6:34 AM",
- "latitude": "86.784904",
- "longitude": "-120.331325"
- },
- {
- "_id": "5c0e183974631549eda97cea",
- "index": 26,
- "guid": "b5c43ee5-14ed-4ab5-b3db-b31a8bb65ceb",
- "isActive": true,
- "balance": "$3,235.42",
- "age": 32,
- "firstName": "Holly",
- "lastName": "Santos",
- "company": "LOVEPAD",
- "email": "holly.santos@lovepad.de",
- "registered": "Thursday, November 22, 2018 9:26 PM",
- "latitude": "-19.640066",
- "longitude": "50.410992"
- },
- {
- "_id": "5c0e1839ab9b933881429d78",
- "index": 27,
- "guid": "94961092-65ca-41b9-bc69-3e40ce2cafc9",
- "isActive": true,
- "balance": "$2,106.34",
- "age": 39,
- "firstName": "Rachel",
- "lastName": "Douglas",
- "company": "DEMINIMUM",
- "email": "rachel.douglas@deminimum.de",
- "registered": "Sunday, April 9, 2017 3:55 AM",
- "latitude": "31.395281",
- "longitude": "-1.899514"
- },
- {
- "_id": "5c0e183937f743155859c5a9",
- "index": 28,
- "guid": "07d7ef18-bcef-483d-999e-0b3da4a7098b",
- "isActive": true,
- "balance": "$2,260.65",
- "age": 40,
- "firstName": "Reed",
- "lastName": "Workman",
- "company": "BUZZMAKER",
- "email": "reed.workman@buzzmaker.de",
- "registered": "Wednesday, May 28, 2014 3:44 PM",
- "latitude": "23.789646",
- "longitude": "106.938375"
- },
- {
- "_id": "5c0e1839f8f4b60beb28b7ed",
- "index": 29,
- "guid": "9b4952e5-aa0e-4919-9e17-7c357a297394",
- "isActive": false,
- "balance": "$702.99",
- "age": 27,
- "firstName": "Cochran",
- "lastName": "Ware",
- "company": "HIVEDOM",
- "email": "cochran.ware@hivedom.de",
- "registered": "Monday, October 16, 2017 5:51 AM",
- "latitude": "85.953108",
- "longitude": "124.590037"
- },
- {
- "_id": "5c0e1839342fbd54a88269df",
- "index": 30,
- "guid": "30937d5b-9514-4ebd-b628-2cfb5017fe41",
- "isActive": false,
- "balance": "$385.88",
- "age": 35,
- "firstName": "Cote",
- "lastName": "Hess",
- "company": "TERAPRENE",
- "email": "cote.hess@teraprene.de",
- "registered": "Thursday, March 15, 2018 4:42 PM",
- "latitude": "81.38211",
- "longitude": "64.516797"
- },
- {
- "_id": "5c0e18395b6dc85d73ce1fb3",
- "index": 31,
- "guid": "f34847da-7f96-4cd8-8d8a-b06c0eb0a8f2",
- "isActive": true,
- "balance": "$3,494.56",
- "age": 27,
- "firstName": "Daniels",
- "lastName": "Ayala",
- "company": "BESTO",
- "email": "daniels.ayala@besto.de",
- "registered": "Sunday, December 18, 2016 10:52 AM",
- "latitude": "47.704227",
- "longitude": "41.674767"
- },
- {
- "_id": "5c0e183974587cdccf30b13f",
- "index": 32,
- "guid": "fdbb6d83-0e47-4453-b8a7-b47f44e4164b",
- "isActive": false,
- "balance": "$2,087.38",
- "age": 26,
- "firstName": "Powers",
- "lastName": "Drake",
- "company": "GENESYNK",
- "email": "powers.drake@genesynk.de",
- "registered": "Saturday, September 29, 2018 12:24 AM",
- "latitude": "40.580432",
- "longitude": "110.940759"
- },
- {
- "_id": "5c0e18397b51245e971c58b8",
- "index": 33,
- "guid": "6adfe544-238b-4001-b2a6-f50ea3094da3",
- "isActive": true,
- "balance": "$3,566.22",
- "age": 34,
- "firstName": "Pacheco",
- "lastName": "Ramsey",
- "company": "ENVIRE",
- "email": "pacheco.ramsey@envire.de",
- "registered": "Friday, September 11, 2015 12:14 AM",
- "latitude": "-30.691235",
- "longitude": "69.343692"
- },
- {
- "_id": "5c0e18391ede9c0996fd09e7",
- "index": 34,
- "guid": "d190b32f-d33b-4c17-a18a-bb2f57e79ba7",
- "isActive": false,
- "balance": "$1,671.63",
- "age": 32,
- "firstName": "Mcintyre",
- "lastName": "Chan",
- "company": "ORBAXTER",
- "email": "mcintyre.chan@orbaxter.de",
- "registered": "Wednesday, May 7, 2014 7:11 PM",
- "latitude": "7.380435",
- "longitude": "70.955103"
- },
- {
- "_id": "5c0e1839fe48069c9c260fa9",
- "index": 35,
- "guid": "a41c064b-6bf4-4ba5-b229-9b657d286936",
- "isActive": false,
- "balance": "$24.02",
- "age": 27,
- "firstName": "Genevieve",
- "lastName": "Sparks",
- "company": "ZBOO",
- "email": "genevieve.sparks@zboo.de",
- "registered": "Saturday, December 16, 2017 2:51 PM",
- "latitude": "-63.406337",
- "longitude": "118.662621"
- },
- {
- "_id": "5c0e1839a7e8e76accf0803e",
- "index": 36,
- "guid": "3e71864d-4be5-418e-ace8-346c3d7a9c5f",
- "isActive": true,
- "balance": "$3,261.01",
- "age": 30,
- "firstName": "Powell",
- "lastName": "Patterson",
- "company": "GAZAK",
- "email": "powell.patterson@gazak.de",
- "registered": "Thursday, May 18, 2017 10:10 AM",
- "latitude": "-10.428548",
- "longitude": "64.979192"
- },
- {
- "_id": "5c0e183984b0320f1118a8b0",
- "index": 37,
- "guid": "ec5b292c-6efb-471b-9bf5-a47286e03515",
- "isActive": false,
- "balance": "$918.71",
- "age": 37,
- "firstName": "Tara",
- "lastName": "Mcmillan",
- "company": "GRAINSPOT",
- "email": "tara.mcmillan@grainspot.de",
- "registered": "Sunday, May 17, 2015 1:01 PM",
- "latitude": "-13.519031",
- "longitude": "67.931062"
- },
- {
- "_id": "5c0e183965875876835ccd79",
- "index": 38,
- "guid": "b7e97ffb-439a-4454-90af-7f5ebd565ebc",
- "isActive": true,
- "balance": "$574.99",
- "age": 28,
- "firstName": "Pennington",
- "lastName": "Gallegos",
- "company": "CEDWARD",
- "email": "pennington.gallegos@cedward.de",
- "registered": "Wednesday, September 26, 2018 6:01 AM",
- "latitude": "-63.693261",
- "longitude": "-38.352153"
- },
- {
- "_id": "5c0e183922505dd21be49009",
- "index": 39,
- "guid": "5187aa39-4357-462b-9508-3c537d26d70d",
- "isActive": false,
- "balance": "$2,447.08",
- "age": 26,
- "firstName": "Meagan",
- "lastName": "Irwin",
- "company": "SENTIA",
- "email": "meagan.irwin@sentia.de",
- "registered": "Saturday, April 2, 2016 4:39 PM",
- "latitude": "1.051313",
- "longitude": "-86.168315"
- },
- {
- "_id": "5c0e183900a9f7f896e5b3b1",
- "index": 40,
- "guid": "31889843-79e7-4636-9ca1-4eb5cbcb0ae3",
- "isActive": true,
- "balance": "$1,992.25",
- "age": 22,
- "firstName": "Kelly",
- "lastName": "Cobb",
- "company": "BOVIS",
- "email": "kelly.cobb@bovis.de",
- "registered": "Tuesday, August 9, 2016 5:36 PM",
- "latitude": "-85.547579",
- "longitude": "-89.794104"
- },
- {
- "_id": "5c0e18393b25b8552ff950e2",
- "index": 41,
- "guid": "0bf02edc-ca1b-4cfe-8356-b65881bdca11",
- "isActive": true,
- "balance": "$465.96",
- "age": 27,
- "firstName": "Angela",
- "lastName": "Booker",
- "company": "EQUICOM",
- "email": "angela.booker@equicom.de",
- "registered": "Thursday, July 30, 2015 1:39 AM",
- "latitude": "-9.345395",
- "longitude": "107.070665"
- },
- {
- "_id": "5c0e183955d747ebbe25437b",
- "index": 42,
- "guid": "6405e559-5849-4d12-ae4e-520f13b4dffe",
- "isActive": true,
- "balance": "$15.63",
- "age": 28,
- "firstName": "Carrie",
- "lastName": "Mclean",
- "company": "BOINK",
- "email": "carrie.mclean@boink.de",
- "registered": "Wednesday, February 1, 2017 1:50 PM",
- "latitude": "72.287519",
- "longitude": "-135.436286"
- },
- {
- "_id": "5c0e1839e9cfe1b28e31e7e6",
- "index": 43,
- "guid": "e49e7ca7-a6cc-4cdb-bebe-5a3b6ba931eb",
- "isActive": true,
- "balance": "$3,127.94",
- "age": 33,
- "firstName": "Callie",
- "lastName": "Cooley",
- "company": "MUSIX",
- "email": "callie.cooley@musix.de",
- "registered": "Wednesday, August 30, 2017 4:58 PM",
- "latitude": "-38.954739",
- "longitude": "-152.706424"
- },
- {
- "_id": "5c0e18391bafa0750ff4f280",
- "index": 44,
- "guid": "c245ffd3-4924-4dce-ae4a-f4cabf057b54",
- "isActive": false,
- "balance": "$1,320.36",
- "age": 35,
- "firstName": "Terry",
- "lastName": "Bennett",
- "company": "EXOTECHNO",
- "email": "terry.bennett@exotechno.de",
- "registered": "Friday, June 17, 2016 11:54 PM",
- "latitude": "-48.946183",
- "longitude": "32.53167"
- },
- {
- "_id": "5c0e1839e91b27fcce34b70f",
- "index": 45,
- "guid": "0860cb66-de4c-410e-8233-aeef5ee9d64e",
- "isActive": false,
- "balance": "$1,187.75",
- "age": 30,
- "firstName": "Phoebe",
- "lastName": "Bartlett",
- "company": "VORATAK",
- "email": "phoebe.bartlett@voratak.de",
- "registered": "Tuesday, July 25, 2017 2:57 AM",
- "latitude": "-63.208957",
- "longitude": "-91.209743"
- },
- {
- "_id": "5c0e183987e8a4e98415c8dd",
- "index": 46,
- "guid": "49219833-172c-4659-9192-d1116a5ca833",
- "isActive": false,
- "balance": "$3,225.24",
- "age": 38,
- "firstName": "Jordan",
- "lastName": "Evans",
- "company": "PHARMACON",
- "email": "jordan.evans@pharmacon.de",
- "registered": "Sunday, April 23, 2017 6:27 PM",
- "latitude": "-59.454678",
- "longitude": "67.251185"
- },
- {
- "_id": "5c0e183944979692cc1a3e48",
- "index": 47,
- "guid": "680c4d15-d539-4db9-8793-a2f6d3f354aa",
- "isActive": false,
- "balance": "$2,913.14",
- "age": 28,
- "firstName": "Goodman",
- "lastName": "Cain",
- "company": "CAXT",
- "email": "goodman.cain@caxt.de",
- "registered": "Tuesday, November 1, 2016 6:11 PM",
- "latitude": "-30.187547",
- "longitude": "-164.313273"
- },
- {
- "_id": "5c0e1839ef5312ac08e3cbc3",
- "index": 48,
- "guid": "85f5fa5d-b6b3-47c6-ad1b-faee10a4e1bd",
- "isActive": true,
- "balance": "$544.97",
- "age": 27,
- "firstName": "Aisha",
- "lastName": "Oliver",
- "company": "MINGA",
- "email": "aisha.oliver@minga.de",
- "registered": "Sunday, July 3, 2016 8:18 AM",
- "latitude": "-21.527536",
- "longitude": "141.029691"
- },
- {
- "_id": "5c0e1839c2e58f5da04f29fd",
- "index": 49,
- "guid": "e2ee9b25-5887-49a9-a1c6-17432154d266",
- "isActive": true,
- "balance": "$3,621.65",
- "age": 31,
- "firstName": "Erin",
- "lastName": "Lester",
- "company": "SLOFAST",
- "email": "erin.lester@slofast.de",
- "registered": "Saturday, February 20, 2016 5:13 AM",
- "latitude": "-30.080798",
- "longitude": "-1.291093"
- }
-];
-
-const components = {
- 'counter': 'demoApp.counter'
-};
-
-class TreeDemoItem implements ITreeItem {
- title: string;
- children?: TreeDemoItem[];
- disabled?: boolean;
- icon?: React.ComponentType<SvgIconProps>;
-}
-
-const treeData: TreeDemoItem[] = [
- { title: "Erste Ebene", children: [
- { title: "Zweite Ebene", children: [
- { title: "Dritte Ebene" },
- ]
- },
- { title: "Zweite Ebene 2" },
- ]
- },
- { title: "Erste Ebene 3" },
-];
-
-const SampleDataMaterialTable = MaterialTable as MaterialTableCtorType<SampleData>;
-
-const SampleTree = TreeView as any as TreeViewCtorType<TreeDemoItem>;
-
-const AboutComponent = (props: WithComponents<typeof components> & WithStyles<typeof styles>) => {
+const AboutComponent = () => {
return (
<div>
<h2>About</h2>
- <ExpansionPanel>
- <ExpansionPanelSummary expandIcon={ <ExpandMoreIcon /> }>
- <Typography className={ props.classes.heading }>Client Side Table Demo</Typography>
- </ExpansionPanelSummary>
- <ExpansionPanelDetails>
- <SampleDataMaterialTable rows={ tableData } columns={
- [
- { property: "index", type: ColumnType.text, title: "Index", width: "80px", disableFilter:true, disableSorting:true, disablePadding:true },
- { property: "firstName", type: ColumnType.text, title: "First Name" },
- { property: "lastName", type: ColumnType.text, title: "Last Name" },
- { property: "age", type: ColumnType.numeric, title: "Age", width: "60px" },
- { property: "email", type: ColumnType.text, title: "eMail" },
- { property: "actions", type: ColumnType.custom, title: "Actions", customControl: ({ rowData }) => (<div>Button</div>) },
- ]
- } idProperty={ "_id" } title={ "Customers 2018" } >
- </SampleDataMaterialTable>
- </ExpansionPanelDetails>
- </ExpansionPanel>
- <ExpansionPanel>
- <ExpansionPanelSummary expandIcon={ <ExpandMoreIcon /> }>
- <Typography className={ props.classes.heading }>Tree Demo</Typography>
- </ExpansionPanelSummary>
- <ExpansionPanelDetails>
- <SampleTree items={ treeData } contentProperty={"title"} childrenProperty={"children"} useFolderIcons enableSearchBar />
- </ExpansionPanelDetails>
- </ExpansionPanel>
+ <div style={{ margin: "0 auto" }}>##odlux.version##</div>
</div>
- )
+ );
};
-export const About = withComponents(components)(withStyles(styles)(AboutComponent));
+export const About = AboutComponent;
export default About;
\ No newline at end of file diff --git a/sdnr/wt/odlux/framework/src/views/frame.tsx b/sdnr/wt/odlux/framework/src/views/frame.tsx index fd943319d..69b981bb3 100644 --- a/sdnr/wt/odlux/framework/src/views/frame.tsx +++ b/sdnr/wt/odlux/framework/src/views/frame.tsx @@ -13,6 +13,7 @@ import SnackDisplay from '../components/material-ui/snackDisplay'; import Home from '../views/home';
import Login from '../views/login';
import About from '../views/about';
+import Test from '../views/test';
import applicationService from '../services/applicationManager';
import { SnackbarProvider } from 'notistack';
@@ -28,7 +29,7 @@ const styles = (theme: Theme) => createStyles({ },
content: {
flexGrow: 1,
- display: "flex",
+ display: "flex",
flexDirection: "column",
backgroundColor: theme.palette.background.default,
padding: theme.spacing.unit * 3,
@@ -59,7 +60,12 @@ export const Frame = withStyles(styles)(({ classes }: WithStyles<typeof styles>) <AppFrame title={ "About" } icon={ faAddressBook } >
<About />
</AppFrame>
- ) } />
+ )} />
+ { process.env.NODE_ENV === "development" ? <Route path="/test" component={() => (
+ <AppFrame title={"Test"} icon={faAddressBook} >
+ <Test />
+ </AppFrame>
+ )} /> : null}
<Route path="/login" component={ () => (
<AppFrame title={ "Login" } icon={ faSignInAlt } >
<Login />
@@ -82,4 +88,4 @@ export const Frame = withStyles(styles)(({ classes }: WithStyles<typeof styles>) );
});
-export default Frame;
+export default Frame;
diff --git a/sdnr/wt/odlux/framework/src/views/home.tsx b/sdnr/wt/odlux/framework/src/views/home.tsx index 3d7497401..18f94f70b 100644 --- a/sdnr/wt/odlux/framework/src/views/home.tsx +++ b/sdnr/wt/odlux/framework/src/views/home.tsx @@ -1,36 +1,9 @@ import * as React from 'react';
-import Button from '@material-ui/core/Button';
-
-class BuggyCounter extends React.Component<{}, {counter:number}> {
- constructor(props: {}) {
- super(props);
- this.state = { counter: 0 };
- this.handleClick = this.handleClick.bind(this);
- }
-
- handleClick() {
- this.setState(({ counter }) => ({
- counter: counter + 1
- }));
- }
-
- render() {
- if (this.state.counter === 5) {
- // Simulate a JS error
- throw new Error('I crashed!');
- }
- return <h1 onClick={ this.handleClick }>{ this.state.counter }</h1>;
- }
-}
export const Home = (props: React.Props<any>) => {
return (
<div>
<h1>Welcome to ODLUX.</h1>
- <Button variant="contained" color="secondary" onClick={ () => { throw new Error("This is an error") } }>
- Throw an Error1
- </Button>
- <BuggyCounter />
</div>
)
}
diff --git a/sdnr/wt/odlux/framework/src/views/login.tsx b/sdnr/wt/odlux/framework/src/views/login.tsx index 513e24712..054ae4f2e 100644 --- a/sdnr/wt/odlux/framework/src/views/login.tsx +++ b/sdnr/wt/odlux/framework/src/views/login.tsx @@ -41,7 +41,7 @@ const styles = (theme: Theme) => createStyles({ display: 'flex', flexDirection: 'column', alignItems: 'center', - padding: `${ theme.spacing.unit * 2 }px ${ theme.spacing.unit * 3 }px ${ theme.spacing.unit * 3 }px`, + padding: `${theme.spacing.unit * 2}px ${theme.spacing.unit * 3}px ${theme.spacing.unit * 3}px`, }, avatar: { margin: theme.spacing.unit, @@ -56,11 +56,11 @@ const styles = (theme: Theme) => createStyles({ }, }); -type LoginProps = RouteComponentProps<{}> & WithStyles<typeof styles> & Connect ; +type LoginProps = RouteComponentProps<{}> & WithStyles<typeof styles> & Connect; interface ILoginState { busy: boolean; - email: string; + username: string; password: string; scope: string; message: string; @@ -70,12 +70,12 @@ interface ILoginState { // todo: ggf. redirect to einbauen class LoginComponent extends React.Component<LoginProps, ILoginState> { - constructor(props: LoginProps) { + constructor (props: LoginProps) { super(props); this.state = { busy: false, - email: '', + username: '', password: '', scope: 'sdn', message: '' @@ -87,19 +87,19 @@ class LoginComponent extends React.Component<LoginProps, ILoginState> { return ( <React.Fragment> <CssBaseline /> - <main className={ classes.layout }> - <Paper className={ classes.paper }> - <Avatar className={ classes.avatar }> + <main className={classes.layout}> + <Paper className={classes.paper}> + <Avatar className={classes.avatar}> <LockIcon /> </Avatar> <Typography variant="caption">Sign in</Typography> - <form className={ classes.form }> + <form className={classes.form}> <FormControl margin="normal" required fullWidth> - <InputLabel htmlFor="email">Email Address</InputLabel> - <Input id="email" name="email" autoComplete="email" autoFocus - disabled={ this.state.busy } - value = {this.state.email } - onChange={ event => { this.setState({ email: event.target.value }) } }/> + <InputLabel htmlFor="username">Username</InputLabel> + <Input id="username" name="username" autoComplete="username" autoFocus + disabled={this.state.busy} + value={this.state.username} + onChange={event => { this.setState({ username: event.target.value }) }} /> </FormControl> <FormControl margin="normal" required fullWidth> <InputLabel htmlFor="password">Password</InputLabel> @@ -108,13 +108,13 @@ class LoginComponent extends React.Component<LoginProps, ILoginState> { type="password" id="password" autoComplete="current-password" - disabled={ this.state.busy } - value={ this.state.password } - onChange={ event => { this.setState({ password: event.target.value }) } } + disabled={this.state.busy} + value={this.state.password} + onChange={event => { this.setState({ password: event.target.value }) }} /> </FormControl> <FormControl margin="normal" required fullWidth> - <InputLabel htmlFor="password">Scope</InputLabel> + <InputLabel htmlFor="password">Domain</InputLabel> <Input name="scope" type="scope" @@ -125,7 +125,7 @@ class LoginComponent extends React.Component<LoginProps, ILoginState> { /> </FormControl> <FormControlLabel - control={ <Checkbox value="remember" color="primary" /> } + control={<Checkbox value="remember" color="primary" />} label="Remember me" /> <Button @@ -133,9 +133,9 @@ class LoginComponent extends React.Component<LoginProps, ILoginState> { fullWidth variant="raised" color="primary" - disabled = { this.state.busy } - className={ classes.submit } - onClick = { this.onSignIn } + disabled={this.state.busy} + className={classes.submit} + onClick={this.onSignIn} > Sign in </Button> @@ -144,14 +144,14 @@ class LoginComponent extends React.Component<LoginProps, ILoginState> { </main> <Dialog open={!!this.state.message} - onClose={() => { this.setState({message: ''})}} + onClose={() => { this.setState({ message: '' }) }} aria-labelledby="alert-dialog-title" aria-describedby="alert-dialog-description" > <DialogTitle id="alert-dialog-title">{"Error"}</DialogTitle> <DialogContent> <DialogContentText id="alert-dialog-description"> - { this.state.message } + {this.state.message} </DialogContentText> </DialogContent> <DialogActions> @@ -168,7 +168,7 @@ class LoginComponent extends React.Component<LoginProps, ILoginState> { event.preventDefault(); this.setState({ busy: true }); - const token = await authenticationService.authenticateUser(this.state.email, this.state.password, this.state.scope); + const token = await authenticationService.authenticateUser(this.state.username, this.state.password, this.state.scope); this.props.dispatch(new UpdateAuthentication(token)); this.setState({ busy: false }); diff --git a/sdnr/wt/odlux/framework/src/views/test.tsx b/sdnr/wt/odlux/framework/src/views/test.tsx new file mode 100644 index 000000000..8efe357d1 --- /dev/null +++ b/sdnr/wt/odlux/framework/src/views/test.tsx @@ -0,0 +1,861 @@ +import * as React from 'react'; + +import { withComponents, WithComponents } from '../utilities/withComponents'; +import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles'; + +import ExpansionPanel from '@material-ui/core/ExpansionPanel'; +import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary'; +import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails'; +import Typography from '@material-ui/core/Typography'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; + +import { MaterialTable, MaterialTableCtorType, ColumnType } from '../components/material-table'; +import { TreeView, ITreeItem, TreeViewCtorType } from '../components/material-ui/treeView'; +import { SvgIconProps } from '@material-ui/core/SvgIcon'; + +const styles = (theme: Theme) => createStyles({ + root: { + width: '100%', + }, + heading: { + fontSize: theme.typography.pxToRem(15), + fontWeight: theme.typography.fontWeightRegular, + }, +}); + +class SampleData { + _id: string; + index: number; + guid: string; + isActive: boolean; + balance: string; + age: number; + firstName: string; + lastName: string; + company: string; + email: string; + registered: string; + latitude: string; + longitude: string; +} + +// https://next.json-generator.com/NJ5Bv-v1I +const tableData: SampleData[] = [ + { + "_id": "5c0e18399919a5c43636fdf2", + "index": 0, + "guid": "48728d8e-8300-4d0f-b967-e2166d023066", + "isActive": false, + "balance": "$3,480.16", + "age": 33, + "firstName": "Brooke", + "lastName": "Morris", + "company": "ZORROMOP", + "email": "brooke.morris@zorromop.de", + "registered": "Sunday, February 11, 2018 2:55 PM", + "latitude": "-69.109379", + "longitude": "113.735639" + }, + { + "_id": "5c0e1839b61e3eeaf164259d", + "index": 1, + "guid": "28723570-1507-422e-b78c-924402371fb1", + "isActive": false, + "balance": "$1,305.01", + "age": 28, + "firstName": "Jolene", + "lastName": "Everett", + "company": "ZENCO", + "email": "jolene.everett@zenco.de", + "registered": "Saturday, December 8, 2018 5:17 PM", + "latitude": "13.683025", + "longitude": "85.101421" + }, + { + "_id": "5c0e1839e81f57913c5d2147", + "index": 2, + "guid": "e914dc5d-91a3-405d-ac48-aee6f0cd391a", + "isActive": true, + "balance": "$1,418.37", + "age": 28, + "firstName": "Elva", + "lastName": "Travis", + "company": "ZYTREK", + "email": "elva.travis@zytrek.de", + "registered": "Thursday, March 10, 2016 5:13 PM", + "latitude": "53.75862", + "longitude": "-67.784532" + }, + { + "_id": "5c0e1839bc9224a2b54c0f69", + "index": 3, + "guid": "88cbdce0-0bcc-4d16-83c3-3017690503c4", + "isActive": true, + "balance": "$1,709.60", + "age": 21, + "firstName": "Ellis", + "lastName": "Mcpherson", + "company": "DIGIPRINT", + "email": "ellis.mcpherson@digiprint.de", + "registered": "Sunday, December 21, 2014 5:25 AM", + "latitude": "46.486149", + "longitude": "-66.657067" + }, + { + "_id": "5c0e183951b51475db0f35d1", + "index": 4, + "guid": "c887ac86-7ba1-4eb6-9b47-e88a1bcb3713", + "isActive": true, + "balance": "$3,578.54", + "age": 25, + "firstName": "Marcia", + "lastName": "Rocha", + "company": "ZAPPIX", + "email": "marcia.rocha@zappix.de", + "registered": "Tuesday, June 16, 2015 11:21 AM", + "latitude": "-39.905461", + "longitude": "150.873895" + }, + { + "_id": "5c0e18398c5be8d362a578eb", + "index": 5, + "guid": "0d160697-9b5b-4941-9b5f-4ba3a7f97b49", + "isActive": true, + "balance": "$414.98", + "age": 32, + "firstName": "Lavonne", + "lastName": "Wilkins", + "company": "FARMAGE", + "email": "lavonne.wilkins@farmage.de", + "registered": "Monday, February 1, 2016 5:27 PM", + "latitude": "-16.839256", + "longitude": "-105.824746" + }, + { + "_id": "5c0e18399804086c836d7d56", + "index": 6, + "guid": "715a5f63-35b6-4903-a46e-ba584b005e64", + "isActive": false, + "balance": "$1,755.78", + "age": 32, + "firstName": "Wise", + "lastName": "Berg", + "company": "ZIZZLE", + "email": "wise.berg@zizzle.de", + "registered": "Saturday, March 28, 2015 1:40 AM", + "latitude": "51.15269", + "longitude": "65.795093" + }, + { + "_id": "5c0e18399c4d13538bcaf8c9", + "index": 7, + "guid": "7ee50269-23e8-499e-9a16-09f393d7600c", + "isActive": false, + "balance": "$342.52", + "age": 27, + "firstName": "Isabel", + "lastName": "Battle", + "company": "EZENTIA", + "email": "isabel.battle@ezentia.de", + "registered": "Thursday, June 7, 2018 12:16 AM", + "latitude": "-53.318152", + "longitude": "-153.516824" + }, + { + "_id": "5c0e18398d7fb9a4eceeffa2", + "index": 8, + "guid": "1e30c9ac-2297-4f16-83e6-9559b1ebe92c", + "isActive": true, + "balance": "$3,184.71", + "age": 36, + "firstName": "Lenora", + "lastName": "Crawford", + "company": "KIDGREASE", + "email": "lenora.crawford@kidgrease.de", + "registered": "Saturday, January 7, 2017 6:17 PM", + "latitude": "-72.431496", + "longitude": "9.413359" + }, + { + "_id": "5c0e18395837069ab6b79d00", + "index": 9, + "guid": "d04a02ed-5899-4729-a7e5-2d85b5d03973", + "isActive": true, + "balance": "$1,553.28", + "age": 35, + "firstName": "Sasha", + "lastName": "Bridges", + "company": "IDEALIS", + "email": "sasha.bridges@idealis.de", + "registered": "Sunday, February 4, 2018 7:02 PM", + "latitude": "8.095691", + "longitude": "-105.758195" + }, + { + "_id": "5c0e18390be19bf65acad180", + "index": 10, + "guid": "3a1a77e6-ef15-4598-8274-c68ac3bb922a", + "isActive": false, + "balance": "$3,587.96", + "age": 20, + "firstName": "Wilkins", + "lastName": "Beasley", + "company": "DIGIFAD", + "email": "wilkins.beasley@digifad.de", + "registered": "Monday, March 5, 2018 1:27 PM", + "latitude": "-88.062704", + "longitude": "149.95661" + }, + { + "_id": "5c0e1839ffbbad5c9954e49f", + "index": 11, + "guid": "97a56950-a08c-4e00-8002-ba2d5de4da5d", + "isActive": false, + "balance": "$1,997.80", + "age": 31, + "firstName": "Sullivan", + "lastName": "Mcclain", + "company": "EARTHMARK", + "email": "sullivan.mcclain@earthmark.de", + "registered": "Saturday, October 27, 2018 2:51 PM", + "latitude": "-81.86349", + "longitude": "-79.596991" + }, + { + "_id": "5c0e183914bd464d55e7325f", + "index": 12, + "guid": "294f6485-d0f9-4b25-b998-325ae90fa769", + "isActive": true, + "balance": "$1,405.46", + "age": 24, + "firstName": "Herminia", + "lastName": "Fischer", + "company": "ECOLIGHT", + "email": "herminia.fischer@ecolight.de", + "registered": "Thursday, January 16, 2014 4:48 PM", + "latitude": "48.224363", + "longitude": "11.08339" + }, + { + "_id": "5c0e183968ec2556d8f6566c", + "index": 13, + "guid": "16edfea4-7b37-4e54-868c-c369b413dd78", + "isActive": false, + "balance": "$3,440.67", + "age": 39, + "firstName": "Blanchard", + "lastName": "Blackwell", + "company": "GEOFORMA", + "email": "blanchard.blackwell@geoforma.de", + "registered": "Wednesday, July 30, 2014 4:07 AM", + "latitude": "-52.169297", + "longitude": "10.415879" + }, + { + "_id": "5c0e183939a0fc955f2d94da", + "index": 14, + "guid": "4ed454e2-dde1-4ab5-a434-4a82205ced2d", + "isActive": true, + "balance": "$1,883.27", + "age": 35, + "firstName": "Gayle", + "lastName": "Little", + "company": "AQUAZURE", + "email": "gayle.little@aquazure.de", + "registered": "Tuesday, December 12, 2017 5:08 PM", + "latitude": "-58.473236", + "longitude": "38.022269" + }, + { + "_id": "5c0e1839099f9221ccd968ac", + "index": 15, + "guid": "1d052fd4-7c54-45fb-b0db-7de1acc4262a", + "isActive": false, + "balance": "$2,601.94", + "age": 31, + "firstName": "Jocelyn", + "lastName": "Richards", + "company": "GINK", + "email": "jocelyn.richards@gink.de", + "registered": "Sunday, October 30, 2016 9:12 PM", + "latitude": "-43.489676", + "longitude": "2.557869" + }, + { + "_id": "5c0e183970f320f377321c3f", + "index": 16, + "guid": "45bca125-8831-48c3-b22b-29ae318e7096", + "isActive": false, + "balance": "$3,441.74", + "age": 34, + "firstName": "Berta", + "lastName": "Valentine", + "company": "ISOSPHERE", + "email": "berta.valentine@isosphere.de", + "registered": "Sunday, March 19, 2017 8:22 PM", + "latitude": "-40.188039", + "longitude": "-170.085092" + }, + { + "_id": "5c0e1839ab960bb0a9f4f392", + "index": 17, + "guid": "d7b5122a-94c9-423c-b799-1a8f8314b152", + "isActive": false, + "balance": "$56.39", + "age": 21, + "firstName": "Russell", + "lastName": "Powers", + "company": "TETAK", + "email": "russell.powers@tetak.de", + "registered": "Thursday, November 3, 2016 9:23 PM", + "latitude": "-51.610519", + "longitude": "-133.280363" + }, + { + "_id": "5c0e183998f0195404b9aaa4", + "index": 18, + "guid": "a043ba97-ea7e-48ce-bb15-18ee09fb393d", + "isActive": true, + "balance": "$1,503.57", + "age": 37, + "firstName": "Rosario", + "lastName": "Brennan", + "company": "VIAGRAND", + "email": "rosario.brennan@viagrand.de", + "registered": "Saturday, March 17, 2018 10:32 PM", + "latitude": "-43.773365", + "longitude": "47.58682" + }, + { + "_id": "5c0e1839bcb2a5cc567129ac", + "index": 19, + "guid": "de6d5d36-201e-4f87-9976-ed31f3160e42", + "isActive": false, + "balance": "$1,160.18", + "age": 29, + "firstName": "Anita", + "lastName": "Hodges", + "company": "TUBALUM", + "email": "anita.hodges@tubalum.de", + "registered": "Sunday, November 26, 2017 11:54 AM", + "latitude": "7.080244", + "longitude": "-9.970715" + }, + { + "_id": "5c0e18394b37e854a1ef371c", + "index": 20, + "guid": "9407113b-896a-4699-ac1b-363bc3c6f8ad", + "isActive": false, + "balance": "$34.81", + "age": 31, + "firstName": "Barrett", + "lastName": "Weaver", + "company": "DUOFLEX", + "email": "barrett.weaver@duoflex.de", + "registered": "Tuesday, November 3, 2015 9:31 AM", + "latitude": "40.30558", + "longitude": "-69.986664" + }, + { + "_id": "5c0e1839b5658f90e16a86e0", + "index": 21, + "guid": "81f894c4-c931-422d-a30e-593824d95bf9", + "isActive": true, + "balance": "$2,808.63", + "age": 26, + "firstName": "Baxter", + "lastName": "Chase", + "company": "BUNGA", + "email": "baxter.chase@bunga.de", + "registered": "Friday, October 28, 2016 7:10 AM", + "latitude": "-49.05652", + "longitude": "63.123535" + }, + { + "_id": "5c0e1839cb9462c9ecbb59af", + "index": 22, + "guid": "92e67862-4fdf-43af-a3ef-ef3edb8d6706", + "isActive": true, + "balance": "$3,552.71", + "age": 29, + "firstName": "Olga", + "lastName": "Kemp", + "company": "OHMNET", + "email": "olga.kemp@ohmnet.de", + "registered": "Saturday, March 26, 2016 11:51 AM", + "latitude": "-17.450481", + "longitude": "-13.945794" + }, + { + "_id": "5c0e18396f999c2b8ac731a9", + "index": 23, + "guid": "a682eaae-34f0-4973-b8a0-30972de0732b", + "isActive": false, + "balance": "$1,999.20", + "age": 21, + "firstName": "Ebony", + "lastName": "Le", + "company": "MULTRON", + "email": "ebony.le@multron.de", + "registered": "Friday, March 27, 2015 9:23 AM", + "latitude": "-70.380014", + "longitude": "173.20685" + }, + { + "_id": "5c0e18391cfb28263eb42db7", + "index": 24, + "guid": "f1cddb5f-0b89-453e-b0c9-8193a56cc610", + "isActive": true, + "balance": "$2,950.91", + "age": 30, + "firstName": "Norman", + "lastName": "Price", + "company": "COMVEX", + "email": "norman.price@comvex.de", + "registered": "Tuesday, August 21, 2018 11:17 PM", + "latitude": "86.501469", + "longitude": "159.545352" + }, + { + "_id": "5c0e18394a6be11128c7e5ca", + "index": 25, + "guid": "dadb738a-40fd-45b6-abac-023a803d95c2", + "isActive": true, + "balance": "$2,767.09", + "age": 25, + "firstName": "Sara", + "lastName": "Ruiz", + "company": "AUSTECH", + "email": "sara.ruiz@austech.de", + "registered": "Wednesday, June 20, 2018 6:34 AM", + "latitude": "86.784904", + "longitude": "-120.331325" + }, + { + "_id": "5c0e183974631549eda97cea", + "index": 26, + "guid": "b5c43ee5-14ed-4ab5-b3db-b31a8bb65ceb", + "isActive": true, + "balance": "$3,235.42", + "age": 32, + "firstName": "Holly", + "lastName": "Santos", + "company": "LOVEPAD", + "email": "holly.santos@lovepad.de", + "registered": "Thursday, November 22, 2018 9:26 PM", + "latitude": "-19.640066", + "longitude": "50.410992" + }, + { + "_id": "5c0e1839ab9b933881429d78", + "index": 27, + "guid": "94961092-65ca-41b9-bc69-3e40ce2cafc9", + "isActive": true, + "balance": "$2,106.34", + "age": 39, + "firstName": "Rachel", + "lastName": "Douglas", + "company": "DEMINIMUM", + "email": "rachel.douglas@deminimum.de", + "registered": "Sunday, April 9, 2017 3:55 AM", + "latitude": "31.395281", + "longitude": "-1.899514" + }, + { + "_id": "5c0e183937f743155859c5a9", + "index": 28, + "guid": "07d7ef18-bcef-483d-999e-0b3da4a7098b", + "isActive": true, + "balance": "$2,260.65", + "age": 40, + "firstName": "Reed", + "lastName": "Workman", + "company": "BUZZMAKER", + "email": "reed.workman@buzzmaker.de", + "registered": "Wednesday, May 28, 2014 3:44 PM", + "latitude": "23.789646", + "longitude": "106.938375" + }, + { + "_id": "5c0e1839f8f4b60beb28b7ed", + "index": 29, + "guid": "9b4952e5-aa0e-4919-9e17-7c357a297394", + "isActive": false, + "balance": "$702.99", + "age": 27, + "firstName": "Cochran", + "lastName": "Ware", + "company": "HIVEDOM", + "email": "cochran.ware@hivedom.de", + "registered": "Monday, October 16, 2017 5:51 AM", + "latitude": "85.953108", + "longitude": "124.590037" + }, + { + "_id": "5c0e1839342fbd54a88269df", + "index": 30, + "guid": "30937d5b-9514-4ebd-b628-2cfb5017fe41", + "isActive": false, + "balance": "$385.88", + "age": 35, + "firstName": "Cote", + "lastName": "Hess", + "company": "TERAPRENE", + "email": "cote.hess@teraprene.de", + "registered": "Thursday, March 15, 2018 4:42 PM", + "latitude": "81.38211", + "longitude": "64.516797" + }, + { + "_id": "5c0e18395b6dc85d73ce1fb3", + "index": 31, + "guid": "f34847da-7f96-4cd8-8d8a-b06c0eb0a8f2", + "isActive": true, + "balance": "$3,494.56", + "age": 27, + "firstName": "Daniels", + "lastName": "Ayala", + "company": "BESTO", + "email": "daniels.ayala@besto.de", + "registered": "Sunday, December 18, 2016 10:52 AM", + "latitude": "47.704227", + "longitude": "41.674767" + }, + { + "_id": "5c0e183974587cdccf30b13f", + "index": 32, + "guid": "fdbb6d83-0e47-4453-b8a7-b47f44e4164b", + "isActive": false, + "balance": "$2,087.38", + "age": 26, + "firstName": "Powers", + "lastName": "Drake", + "company": "GENESYNK", + "email": "powers.drake@genesynk.de", + "registered": "Saturday, September 29, 2018 12:24 AM", + "latitude": "40.580432", + "longitude": "110.940759" + }, + { + "_id": "5c0e18397b51245e971c58b8", + "index": 33, + "guid": "6adfe544-238b-4001-b2a6-f50ea3094da3", + "isActive": true, + "balance": "$3,566.22", + "age": 34, + "firstName": "Pacheco", + "lastName": "Ramsey", + "company": "ENVIRE", + "email": "pacheco.ramsey@envire.de", + "registered": "Friday, September 11, 2015 12:14 AM", + "latitude": "-30.691235", + "longitude": "69.343692" + }, + { + "_id": "5c0e18391ede9c0996fd09e7", + "index": 34, + "guid": "d190b32f-d33b-4c17-a18a-bb2f57e79ba7", + "isActive": false, + "balance": "$1,671.63", + "age": 32, + "firstName": "Mcintyre", + "lastName": "Chan", + "company": "ORBAXTER", + "email": "mcintyre.chan@orbaxter.de", + "registered": "Wednesday, May 7, 2014 7:11 PM", + "latitude": "7.380435", + "longitude": "70.955103" + }, + { + "_id": "5c0e1839fe48069c9c260fa9", + "index": 35, + "guid": "a41c064b-6bf4-4ba5-b229-9b657d286936", + "isActive": false, + "balance": "$24.02", + "age": 27, + "firstName": "Genevieve", + "lastName": "Sparks", + "company": "ZBOO", + "email": "genevieve.sparks@zboo.de", + "registered": "Saturday, December 16, 2017 2:51 PM", + "latitude": "-63.406337", + "longitude": "118.662621" + }, + { + "_id": "5c0e1839a7e8e76accf0803e", + "index": 36, + "guid": "3e71864d-4be5-418e-ace8-346c3d7a9c5f", + "isActive": true, + "balance": "$3,261.01", + "age": 30, + "firstName": "Powell", + "lastName": "Patterson", + "company": "GAZAK", + "email": "powell.patterson@gazak.de", + "registered": "Thursday, May 18, 2017 10:10 AM", + "latitude": "-10.428548", + "longitude": "64.979192" + }, + { + "_id": "5c0e183984b0320f1118a8b0", + "index": 37, + "guid": "ec5b292c-6efb-471b-9bf5-a47286e03515", + "isActive": false, + "balance": "$918.71", + "age": 37, + "firstName": "Tara", + "lastName": "Mcmillan", + "company": "GRAINSPOT", + "email": "tara.mcmillan@grainspot.de", + "registered": "Sunday, May 17, 2015 1:01 PM", + "latitude": "-13.519031", + "longitude": "67.931062" + }, + { + "_id": "5c0e183965875876835ccd79", + "index": 38, + "guid": "b7e97ffb-439a-4454-90af-7f5ebd565ebc", + "isActive": true, + "balance": "$574.99", + "age": 28, + "firstName": "Pennington", + "lastName": "Gallegos", + "company": "CEDWARD", + "email": "pennington.gallegos@cedward.de", + "registered": "Wednesday, September 26, 2018 6:01 AM", + "latitude": "-63.693261", + "longitude": "-38.352153" + }, + { + "_id": "5c0e183922505dd21be49009", + "index": 39, + "guid": "5187aa39-4357-462b-9508-3c537d26d70d", + "isActive": false, + "balance": "$2,447.08", + "age": 26, + "firstName": "Meagan", + "lastName": "Irwin", + "company": "SENTIA", + "email": "meagan.irwin@sentia.de", + "registered": "Saturday, April 2, 2016 4:39 PM", + "latitude": "1.051313", + "longitude": "-86.168315" + }, + { + "_id": "5c0e183900a9f7f896e5b3b1", + "index": 40, + "guid": "31889843-79e7-4636-9ca1-4eb5cbcb0ae3", + "isActive": true, + "balance": "$1,992.25", + "age": 22, + "firstName": "Kelly", + "lastName": "Cobb", + "company": "BOVIS", + "email": "kelly.cobb@bovis.de", + "registered": "Tuesday, August 9, 2016 5:36 PM", + "latitude": "-85.547579", + "longitude": "-89.794104" + }, + { + "_id": "5c0e18393b25b8552ff950e2", + "index": 41, + "guid": "0bf02edc-ca1b-4cfe-8356-b65881bdca11", + "isActive": true, + "balance": "$465.96", + "age": 27, + "firstName": "Angela", + "lastName": "Booker", + "company": "EQUICOM", + "email": "angela.booker@equicom.de", + "registered": "Thursday, July 30, 2015 1:39 AM", + "latitude": "-9.345395", + "longitude": "107.070665" + }, + { + "_id": "5c0e183955d747ebbe25437b", + "index": 42, + "guid": "6405e559-5849-4d12-ae4e-520f13b4dffe", + "isActive": true, + "balance": "$15.63", + "age": 28, + "firstName": "Carrie", + "lastName": "Mclean", + "company": "BOINK", + "email": "carrie.mclean@boink.de", + "registered": "Wednesday, February 1, 2017 1:50 PM", + "latitude": "72.287519", + "longitude": "-135.436286" + }, + { + "_id": "5c0e1839e9cfe1b28e31e7e6", + "index": 43, + "guid": "e49e7ca7-a6cc-4cdb-bebe-5a3b6ba931eb", + "isActive": true, + "balance": "$3,127.94", + "age": 33, + "firstName": "Callie", + "lastName": "Cooley", + "company": "MUSIX", + "email": "callie.cooley@musix.de", + "registered": "Wednesday, August 30, 2017 4:58 PM", + "latitude": "-38.954739", + "longitude": "-152.706424" + }, + { + "_id": "5c0e18391bafa0750ff4f280", + "index": 44, + "guid": "c245ffd3-4924-4dce-ae4a-f4cabf057b54", + "isActive": false, + "balance": "$1,320.36", + "age": 35, + "firstName": "Terry", + "lastName": "Bennett", + "company": "EXOTECHNO", + "email": "terry.bennett@exotechno.de", + "registered": "Friday, June 17, 2016 11:54 PM", + "latitude": "-48.946183", + "longitude": "32.53167" + }, + { + "_id": "5c0e1839e91b27fcce34b70f", + "index": 45, + "guid": "0860cb66-de4c-410e-8233-aeef5ee9d64e", + "isActive": false, + "balance": "$1,187.75", + "age": 30, + "firstName": "Phoebe", + "lastName": "Bartlett", + "company": "VORATAK", + "email": "phoebe.bartlett@voratak.de", + "registered": "Tuesday, July 25, 2017 2:57 AM", + "latitude": "-63.208957", + "longitude": "-91.209743" + }, + { + "_id": "5c0e183987e8a4e98415c8dd", + "index": 46, + "guid": "49219833-172c-4659-9192-d1116a5ca833", + "isActive": false, + "balance": "$3,225.24", + "age": 38, + "firstName": "Jordan", + "lastName": "Evans", + "company": "PHARMACON", + "email": "jordan.evans@pharmacon.de", + "registered": "Sunday, April 23, 2017 6:27 PM", + "latitude": "-59.454678", + "longitude": "67.251185" + }, + { + "_id": "5c0e183944979692cc1a3e48", + "index": 47, + "guid": "680c4d15-d539-4db9-8793-a2f6d3f354aa", + "isActive": false, + "balance": "$2,913.14", + "age": 28, + "firstName": "Goodman", + "lastName": "Cain", + "company": "CAXT", + "email": "goodman.cain@caxt.de", + "registered": "Tuesday, November 1, 2016 6:11 PM", + "latitude": "-30.187547", + "longitude": "-164.313273" + }, + { + "_id": "5c0e1839ef5312ac08e3cbc3", + "index": 48, + "guid": "85f5fa5d-b6b3-47c6-ad1b-faee10a4e1bd", + "isActive": true, + "balance": "$544.97", + "age": 27, + "firstName": "Aisha", + "lastName": "Oliver", + "company": "MINGA", + "email": "aisha.oliver@minga.de", + "registered": "Sunday, July 3, 2016 8:18 AM", + "latitude": "-21.527536", + "longitude": "141.029691" + }, + { + "_id": "5c0e1839c2e58f5da04f29fd", + "index": 49, + "guid": "e2ee9b25-5887-49a9-a1c6-17432154d266", + "isActive": true, + "balance": "$3,621.65", + "age": 31, + "firstName": "Erin", + "lastName": "Lester", + "company": "SLOFAST", + "email": "erin.lester@slofast.de", + "registered": "Saturday, February 20, 2016 5:13 AM", + "latitude": "-30.080798", + "longitude": "-1.291093" + } +]; + +const components = { + 'counter': 'demoApp.counter' +}; + +class TreeDemoItem implements ITreeItem { + title: string; + children?: TreeDemoItem[]; + disabled?: boolean; + icon?: React.ComponentType<SvgIconProps>; +} + +const treeData: TreeDemoItem[] = [ + { + title: "Erste Ebene", children: [ + { + title: "Zweite Ebene", children: [ + { title: "Dritte Ebene" }, + ] + }, + { title: "Zweite Ebene 2" }, + ] + }, + { title: "Erste Ebene 3" }, +]; + +const SampleDataMaterialTable = MaterialTable as MaterialTableCtorType<SampleData>; + +const SampleTree = TreeView as any as TreeViewCtorType<TreeDemoItem>; + +const TestComponent = (props: WithComponents<typeof components> & WithStyles<typeof styles>) => { + + return ( + <div> + <h2>About</h2> + <ExpansionPanel> + <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}> + <Typography className={props.classes.heading}>Client Side Table Demo</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <SampleDataMaterialTable rows={tableData} columns={ + [ + { property: "index", type: ColumnType.text, title: "Index", width: "80px", disableFilter: true, disableSorting: true }, + { property: "firstName", type: ColumnType.text, title: "First Name" }, + { property: "lastName", type: ColumnType.text, title: "Last Name" }, + { property: "age", type: ColumnType.numeric, title: "Age", width: "60px" }, + { property: "email", type: ColumnType.text, title: "eMail" }, + { property: "actions", type: ColumnType.custom, title: "Actions", customControl: ({ rowData }) => (<div>Button</div>) }, + ] + } idProperty={"_id"} title={"Customers 2018"} > + </SampleDataMaterialTable> + </ExpansionPanelDetails> + </ExpansionPanel> + <ExpansionPanel> + <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}> + <Typography className={props.classes.heading}>Tree Demo</Typography> + </ExpansionPanelSummary> + <ExpansionPanelDetails> + <SampleTree items={treeData} contentProperty={"title"} childrenProperty={"children"} useFolderIcons enableSearchBar /> + </ExpansionPanelDetails> + </ExpansionPanel> + </div> + ) +}; + +export const Test = withComponents(components)(withStyles(styles)(TestComponent)); +export default Test; diff --git a/sdnr/wt/odlux/package.json b/sdnr/wt/odlux/package.json index f24b48489..609dc5ce2 100644 --- a/sdnr/wt/odlux/package.json +++ b/sdnr/wt/odlux/package.json @@ -20,7 +20,7 @@ "@types/flux": "3.1.8", "@types/jquery": "3.3.10", "@types/jsonwebtoken": "7.2.8", - "@types/node": "11.9.5", + "@types/node": "11.11.6", "@types/react": "16.4.14", "@types/react-dom": "16.0.8", "@types/react-router-dom": "4.3.1", @@ -29,7 +29,7 @@ "classnames": "2.2.6", "jquery": "3.3.1", "jsonwebtoken": "8.3.0", - "lerna": "^3.13.1", + "lerna": "3.13.1", "notistack": "0.4.1", "prop-types": "15.6.2", "react": "16.5.2", diff --git a/sdnr/wt/odlux/pom.xml b/sdnr/wt/odlux/pom.xml index 121340f3e..18cd9f165 100644 --- a/sdnr/wt/odlux/pom.xml +++ b/sdnr/wt/odlux/pom.xml @@ -1,35 +1,39 @@ <?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <parent> - <groupId>org.onap.ccsdk.parent</groupId> - <artifactId>odlparent-lite</artifactId> - <version>1.2.2-SNAPSHOT</version> - <relativePath/> - </parent> + <parent> + <groupId>org.onap.ccsdk.parent</groupId> + <artifactId>odlparent-lite</artifactId> + <version>1.2.2-SNAPSHOT</version> + <relativePath /> + </parent> - <modelVersion>4.0.0</modelVersion> - <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> - <artifactId>odlux-top</artifactId> - <version>0.4.2-SNAPSHOT</version> - <packaging>pom</packaging> - <name>odlux</name> + <modelVersion>4.0.0</modelVersion> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> + <artifactId>odlux-top</artifactId> + <version>0.4.2-SNAPSHOT</version> + <packaging>pom</packaging> + <name>odlux</name> + + <modules> + <module>framework</module> + <module>core</module> + <module>apps/apiDemo</module> + <module>apps/connectApp</module> + <module>apps/demoApp</module> + <module>apps/faultApp</module> + <module>apps/helpApp</module> + <module>apps/inventoryApp</module> + <module>apps/mediatorApp</module> + <module>apps/maintenanceApp</module> + <module>apps/minimumApp</module> + <module>apps/performanceHistoryApp</module> + <module>apps/configurationApp</module> + <module>apps/app-feature</module> + <module>apps/app-installer</module> + </modules> - <modules> - <module>framework</module> - <module>core</module> - <module>apps/apiDemo</module> - <module>apps/connectApp</module> - <module>apps/demoApp</module> - <module>apps/faultApp</module> - <module>apps/helpApp</module> - <module>apps/inventoryApp</module> - <module>apps/mediatorApp</module> - <module>apps/maintenanceApp</module> - <module>apps/minimumApp</module> - <module>apps/app-feature</module> - <module>apps/app-installer</module> - </modules> - </project> diff --git a/sdnr/wt/odlux/yarn.lock b/sdnr/wt/odlux/yarn.lock index 247a0f2f8..37b39a126 100644 --- a/sdnr/wt/odlux/yarn.lock +++ b/sdnr/wt/odlux/yarn.lock @@ -1335,10 +1335,10 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@octokit/endpoint@^3.1.1": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-3.1.3.tgz#f6e9c2521b83b74367600e474b24efec2b0471c4" - integrity sha512-vAWzeoj9Lzpl3V3YkWKhGzmDUoMfKpyxJhpq74/ohMvmLXDoEuAGnApy/7TRi3OmnjyX2Lr+e9UGGAD0919ohA== +"@octokit/endpoint@^3.2.0": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-3.2.3.tgz#bd9aea60cd94ce336656b57a5c9cb7f10be8f4f3" + integrity sha512-yUPCt4vMIOclox13CUxzuKiPJIFo46b/6GhUnUTw5QySczN1L0DtSxgmIZrZV4SAb9EyAqrceoyrWoYVnfF2AA== dependencies: deepmerge "3.2.0" is-plain-object "^2.0.4" @@ -1346,32 +1346,37 @@ url-template "^2.0.8" "@octokit/plugin-enterprise-rest@^2.1.1": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-2.1.2.tgz#259bd5ac00825a8a482ff6584ae9aed60acd0b41" - integrity sha512-EWKrEqhSgzqWXI9DuEsEI691PNJppm/a4zW62//te27I8pYI5zSNVR3wtNUk0NWPlvs7054YzGZochwbUbhI8A== + version "2.2.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-2.2.2.tgz#c0e22067a043e19f96ff9c7832e2a3019f9be75c" + integrity sha512-CTZr64jZYhGWNTDGlSJ2mvIlFsm9OEO3LqWn9I/gmoHI4jRBp4kpHoFYNemG4oA75zUAcmbuWblb7jjP877YZw== -"@octokit/request@2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-2.4.0.tgz#729fc5ea7654ab7cb74e0ae1935f69462a33b5e6" - integrity sha512-Bm2P0duVRUeKhyepNyFg5GX+yhCK71fqdtpsw5Rz+PQPjSha8HYwPMF5QfpzpD8b6/Xl3xhTgu3V90W362gZ1A== +"@octokit/request@2.4.2": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-2.4.2.tgz#87c36e820dd1e43b1629f4f35c95b00cd456320b" + integrity sha512-lxVlYYvwGbKSHXfbPk5vxEA8w4zHOH1wobado4a9EfsyD3Cbhuhus1w0Ye9Ro0eMubGO8kNy5d+xNFisM3Tvaw== dependencies: - "@octokit/endpoint" "^3.1.1" + "@octokit/endpoint" "^3.2.0" + deprecation "^1.0.1" is-plain-object "^2.0.4" node-fetch "^2.3.0" + once "^1.4.0" universal-user-agent "^2.0.1" "@octokit/rest@^16.16.0": - version "16.16.3" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.16.3.tgz#89b64b1f5ed1f85cfd1925f0c4b968c403b895db" - integrity sha512-8v5xyqXZwQbQ1WsTLU3G25nAlcKYEgIXzDeqLgTFpbzzJXcey0C8Mcs/LZiAgU8dDINZtO2dAPgd1cVKgK9DQw== + version "16.23.2" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.23.2.tgz#975e84610427c4ab6c41bec77c24aed9b7563db4" + integrity sha512-ZxiZMaCuqBG/IsbgNRVfGwYsvBb5DjHuMGjJgOrinT+/b+1j1U7PiGyRkHDJdjTGA6N/PsMC2lP2ZybX9579iA== dependencies: - "@octokit/request" "2.4.0" - before-after-hook "^1.2.0" + "@octokit/request" "2.4.2" + atob-lite "^2.0.0" + before-after-hook "^1.4.0" btoa-lite "^1.0.0" + deprecation "^1.0.1" lodash.get "^4.4.2" lodash.set "^4.3.2" lodash.uniq "^4.5.0" octokit-pagination-methods "^1.1.0" + once "^1.4.0" universal-user-agent "^2.0.0" url-template "^2.0.8" @@ -1431,10 +1436,10 @@ version "10.11.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.11.1.tgz#adc48781dd50b2635a8a7854d99c759a26ede840" -"@types/node@11.9.5": - version "11.9.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.5.tgz#011eece9d3f839a806b63973e228f85967b79ed3" - integrity sha512-vVjM0SVzgaOUpflq4GYBvCpozes8OgIIS5gVXVka+OfK3hvnkC1i93U8WiY2OtNE4XUWyyy/86Kf6e0IHTQw1Q== +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== "@types/prop-types@*": version "15.5.6" @@ -1691,7 +1696,7 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== -agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: +agent-base@4, agent-base@^4.1.0, agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== @@ -1761,10 +1766,10 @@ ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" -ansi-regex@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" - integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-styles@^2.2.1: version "2.2.1" @@ -1945,6 +1950,11 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob-lite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= + atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -2167,10 +2177,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.3.2.tgz#7bfbf844ad670aa7a96b5a4e4e15bd74b08ed66b" - integrity sha512-zyPgY5dgbf99c0uGUjhY4w+mxqEGxPKg9RQDl34VvrVh2bM31lFN+mwR1ZHepq/KA3VCPk1gwJZL6IIJqjLy2w== +before-after-hook@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" + integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== big.js@^3.1.3: version "3.2.0" @@ -2993,14 +3003,13 @@ cosmiconfig@^4.0.0: require-from-string "^2.0.1" cosmiconfig@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf" - integrity sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q== + version "5.2.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8" + integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g== dependencies: import-fresh "^2.0.0" is-directory "^0.3.1" - js-yaml "^3.9.0" - lodash.get "^4.4.2" + js-yaml "^3.13.0" parse-json "^4.0.0" create-ecdh@^4.0.0: @@ -3346,6 +3355,11 @@ depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" +deprecation@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-1.0.1.tgz#2df79b79005752180816b7b6e079cbd80490d711" + integrity sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg== + des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -4492,11 +4506,11 @@ handlebars@^4.0.3: uglify-js "^3.1.4" handlebars@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" - integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== + version "4.1.1" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.1.tgz#6e4e41c18ebe7719ae4d38e5aca3d32fa3dd23d3" + integrity sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA== dependencies: - async "^2.5.0" + neo-async "^2.6.0" optimist "^0.6.1" source-map "^0.6.1" optionalDependencies: @@ -5737,6 +5751,14 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-yaml@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e" + integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@^3.7.0: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" @@ -5975,7 +5997,7 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -lerna@^3.13.1: +lerna@3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.1.tgz#feaff562176f304bd82329ca29ce46ab6c033463" integrity sha512-7kSz8LLozVsoUNTJzJzy+b8TnV9YdviR2Ee2PwGZSlVw3T1Rn7kOAPZjEi+3IWnOPC96zMPHVmjCmzQ4uubalw== @@ -6268,9 +6290,9 @@ lru-cache@^5.1.1: yallist "^3.0.2" macos-release@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.0.0.tgz#7dddf4caf79001a851eb4fba7fb6034f251276ab" - integrity sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8" + integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA== make-dir@^1.0.0: version "1.3.0" @@ -6709,6 +6731,11 @@ neo-async@^2.5.0: version "2.5.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.2.tgz#489105ce7bc54e709d736b195f82135048c50fcc" +neo-async@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -8451,7 +8478,12 @@ selfsigned@^1.9.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" -"semver@2.x || 3.x || 4 || 5", semver@^5.5, semver@^5.5.1, semver@^5.6.0: +"semver@2.x || 3.x || 4 || 5", semver@^5.5.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^5.5, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== @@ -8641,17 +8673,17 @@ sockjs@0.3.19: uuid "^3.0.1" socks-proxy-agent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" - integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" + integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== dependencies: - agent-base "~4.2.0" - socks "~2.2.0" + agent-base "~4.2.1" + socks "~2.3.2" -socks@~2.2.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.3.tgz#7399ce11e19b2a997153c983a9ccb6306721f2dc" - integrity sha512-+2r83WaRT3PXYoO/1z+RDEBE7Z2f9YcdQnJ0K/ncXXbV5gJ6wYfNAebYFYiiUjM6E4JyXnPY8cimwyvFYHVUUA== +socks@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" + integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== dependencies: ip "^1.1.5" smart-buffer "4.0.2" @@ -8918,11 +8950,11 @@ strip-ansi@^4.0.0: ansi-regex "^3.0.0" strip-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" - integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - ansi-regex "^4.0.0" + ansi-regex "^4.1.0" strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" diff --git a/sdnr/wt/websocketmanager2/feature/pom.xml b/sdnr/wt/websocketmanager2/feature/pom.xml index 5b0e85336..8f420e8b2 100644 --- a/sdnr/wt/websocketmanager2/feature/pom.xml +++ b/sdnr/wt/websocketmanager2/feature/pom.xml @@ -21,7 +21,8 @@ * ============LICENSE_END========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -34,7 +35,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>single-feature-parent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <dependencyManagement> diff --git a/sdnr/wt/websocketmanager2/installer/pom.xml b/sdnr/wt/websocketmanager2/installer/pom.xml index 454d48464..8aae38348 100755 --- a/sdnr/wt/websocketmanager2/installer/pom.xml +++ b/sdnr/wt/websocketmanager2/installer/pom.xml @@ -21,7 +21,8 @@ * ============LICENSE_END========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> @@ -34,7 +35,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>odlparent-lite</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> <properties> diff --git a/sdnr/wt/websocketmanager2/model/pom.xml b/sdnr/wt/websocketmanager2/model/pom.xml index fa9c3dd33..9e7ae62f6 100644 --- a/sdnr/wt/websocketmanager2/model/pom.xml +++ b/sdnr/wt/websocketmanager2/model/pom.xml @@ -21,7 +21,8 @@ * ============LICENSE_END========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> <artifactId>sdnr-wt-websocketmanager2-model</artifactId> @@ -32,6 +33,6 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>binding-parent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath /> </parent> </project> diff --git a/sdnr/wt/websocketmanager2/provider/pom.xml b/sdnr/wt/websocketmanager2/provider/pom.xml index b07c4ccdd..bf6e4164a 100644 --- a/sdnr/wt/websocketmanager2/provider/pom.xml +++ b/sdnr/wt/websocketmanager2/provider/pom.xml @@ -10,7 +10,9 @@ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ============LICENSE_END========================================================= --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> <artifactId>sdnr-wt-websocketmanager2-provider</artifactId> @@ -21,7 +23,7 @@ <groupId>org.onap.ccsdk.parent</groupId> <artifactId>binding-parent</artifactId> <version>1.2.2-SNAPSHOT</version> - <relativePath/> + <relativePath></relativePath> </parent> <properties> <maven.javadoc.skip>true</maven.javadoc.skip> diff --git a/sdnr/wt/websocketmanager2/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/WebSocketManager.java b/sdnr/wt/websocketmanager2/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/WebSocketManager.java index 51554e3a6..ea06ffcd3 100644 --- a/sdnr/wt/websocketmanager2/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/WebSocketManager.java +++ b/sdnr/wt/websocketmanager2/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/WebSocketManager.java @@ -55,7 +55,8 @@ public class WebSocketManager extends WebSocketServlet implements Websocketmanag /** * timeout for websocket with no messages in ms */ - private static final long IDLE_TIMEOUT = 5 * 60 * 1000L; + //private static final long IDLE_TIMEOUT = 5 * 60 * 1000L; + private static final long IDLE_TIMEOUT =0L; private final ArrayList<URI> clusterNodeClients = new ArrayList<>(); |