aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/apps
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/apps')
-rw-r--r--sdnr/wt/odlux/apps/apiDemo/package.json18
-rw-r--r--sdnr/wt/odlux/apps/apiDemo/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/app-feature/pom.xml18
-rwxr-xr-xsdnr/wt/odlux/apps/app-installer/pom.xml27
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/package.json18
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/actions/configurationActions.ts154
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts380
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json6678
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json.old19680
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/handlers/configurationAppRootHandler.ts98
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/handlers/connectedNetworkElementsHandler.ts19
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/handlers/deviceDescriptionHandler.ts30
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/handlers/valueSelectorHandler.ts58
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/handlers/viewDescriptionHandler.ts42
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts73
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/models/networkElementConnection.ts19
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts160
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/models/yang.ts44
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx107
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/pluginConfiguration.tsx77
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/services/configurationService.ts53
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts38
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/services/yangService.ts25
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx626
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/views/networkElementSelector.tsx47
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/src/yang/yangParser.ts1099
-rw-r--r--sdnr/wt/odlux/apps/configurationApp/webpack.config.js24
-rw-r--r--sdnr/wt/odlux/apps/connectApp/package.json26
-rw-r--r--sdnr/wt/odlux/apps/connectApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/actions/commonNetworkElementsActions.ts113
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/actions/infoNetworkElementActions.ts57
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/actions/mountedNetworkElementsActions.ts106
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/actions/networkElementsActions.ts61
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/actions/requiredNetworkElementsActions.ts55
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/components/connectionStatusLog.tsx19
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/components/editNetworkElementDialog.tsx184
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/components/infoNetworkElementDialog.tsx154
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/components/networkElements.tsx259
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx210
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx211
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.ts83
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx42
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.ts (renamed from sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx)16
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx51
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/infoNetworkElementHandler.ts60
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx111
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/handlers/networkElementsHandler.ts58
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/index.html5
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/models/guiCutTrough.ts1
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnection.ts36
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnectionLog.ts (renamed from sdnr/wt/odlux/apps/connectApp/src/models/mountedNetworkElements.ts)15
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/models/panelId.ts1
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/models/topologyNetconf.ts17
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/models/yangCapabilitiesType.ts22
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/pluginConnect.tsx (renamed from sdnr/wt/odlux/apps/connectApp/src/plugin.tsx)19
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts246
-rw-r--r--sdnr/wt/odlux/apps/connectApp/src/views/connectView.tsx113
-rw-r--r--sdnr/wt/odlux/apps/connectApp/webpack.config.js24
-rw-r--r--sdnr/wt/odlux/apps/demoApp/package.json18
-rw-r--r--sdnr/wt/odlux/apps/demoApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/demoApp/src/models/author.ts18
-rw-r--r--sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx14
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/.babelrc17
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/package.json40
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/pom.xml150
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogAppRootHandler.ts45
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogHandler.tsx36
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src/index.html26
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src/models/eventLogType.ts27
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src/pluginEventLog.tsx40
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src/views/eventLog.tsx59
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java68
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml9
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java46
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/src2/test/resources/test.js5
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/tsconfig.json37
-rw-r--r--sdnr/wt/odlux/apps/eventLogApp/webpack.config.js155
-rw-r--r--sdnr/wt/odlux/apps/faultApp/package.json18
-rw-r--r--sdnr/wt/odlux/apps/faultApp/pom.xml55
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts36
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/actions/notificationActions.ts4
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx136
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/components/faultStatus.tsx2
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts11
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/handlers/clearStuckAlarmsHandler.ts (renamed from sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx)28
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts11
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts6
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/handlers/notificationsHandler.ts4
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/index.html6
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/models/fault.ts48
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/pluginFault.tsx (renamed from sdnr/wt/odlux/apps/faultApp/src/plugin.tsx)8
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts48
-rw-r--r--sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx89
-rw-r--r--sdnr/wt/odlux/apps/faultApp/webpack.config.js12
-rw-r--r--sdnr/wt/odlux/apps/helpApp/package.json28
-rw-r--r--sdnr/wt/odlux/apps/helpApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx4
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx54
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/components/tocEntry.tsx82
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts4
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/index.html18
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/plugin.tsx11
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts8
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx2
-rw-r--r--sdnr/wt/odlux/apps/helpApp/src/views/helpTocApp.tsx55
-rw-r--r--sdnr/wt/odlux/apps/helpApp/webpack.config.js10
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/package.json18
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts37
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx2
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/src/models/inventory.ts2
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/src/pluginInventory.tsx75
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx4
-rw-r--r--sdnr/wt/odlux/apps/inventoryApp/webpack.config.js12
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/package.json22
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts49
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/components/editMaintenenceEntryDialog.tsx10
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts11
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts48
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/models/maintenenceEntryType.ts30
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/pluginMaintenance.tsx (renamed from sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx)0
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts75
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/utils/timeUtils.ts6
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx80
-rw-r--r--sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js24
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/package.json18
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/pom.xml55
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts27
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx109
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx63
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/components/showMeditaorInfoDialog.tsx107
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorServerHandler.ts8
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/models/mediatorServer.ts2
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts74
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx78
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx26
-rw-r--r--sdnr/wt/odlux/apps/mediatorApp/webpack.config.js18
-rw-r--r--sdnr/wt/odlux/apps/minimumApp/.fbExcludeFilterFile25
-rw-r--r--sdnr/wt/odlux/apps/minimumApp/package.json18
-rw-r--r--sdnr/wt/odlux/apps/minimumApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/package.json30
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml56
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/deviceListActions.ts (renamed from sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts)49
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx46
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx13
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx14
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx13
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx13
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx13
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx13
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts63
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts4
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts29
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/deviceListActionHandler.ts (renamed from sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts)22
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts29
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts12
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts29
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts29
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts29
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts29
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts163
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts12
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts2
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts7
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts21
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/deviceListType.ts (renamed from sdnr/wt/odlux/apps/connectApp/src/models/requiredNetworkElements.ts)12
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts18
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts23
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts21
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts22
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts21
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetconf.ts (renamed from sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts)7
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts21
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/pluginPerformance.tsx (renamed from sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx)2
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts83
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx2
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts6
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx124
-rw-r--r--sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js10
181 files changed, 6425 insertions, 29863 deletions
diff --git a/sdnr/wt/odlux/apps/apiDemo/package.json b/sdnr/wt/odlux/apps/apiDemo/package.json
index 730412e05..d6f74278b 100644
--- a/sdnr/wt/odlux/apps/apiDemo/package.json
+++ b/sdnr/wt/odlux/apps/apiDemo/package.json
@@ -20,21 +20,21 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/apiDemo/pom.xml b/sdnr/wt/odlux/apps/apiDemo/pom.xml
index 012e279db..960fb745b 100644
--- a/sdnr/wt/odlux/apps/apiDemo/pom.xml
+++ b/sdnr/wt/odlux/apps/apiDemo/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-apiDemo</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-apiDemo</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -45,8 +48,21 @@
<artifactId>org.osgi.compendium</artifactId>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -69,10 +85,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -95,7 +111,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -107,8 +123,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -138,27 +154,5 @@
</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/app-feature/pom.xml b/sdnr/wt/odlux/apps/app-feature/pom.xml
index 84b2611a7..9b4a9f565 100644
--- a/sdnr/wt/odlux/apps/app-feature/pom.xml
+++ b/sdnr/wt/odlux/apps/app-feature/pom.xml
@@ -14,18 +14,19 @@
<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-feature</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>feature</packaging>
- <name>ccsdk-features-sdnr-wt :: ${project.artifactId} :: feature</name>
-
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
<artifactId>single-feature-parent</artifactId>
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
+
+ <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+ <artifactId>sdnr-wt-odlux-apps-feature</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
+
+ <name>ccsdk-features :: ${project.artifactId}</name>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
@@ -71,6 +72,11 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>sdnr-wt-odlux-app-eventLogApp</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>sdnr-wt-odlux-app-configurationApp</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/sdnr/wt/odlux/apps/app-installer/pom.xml b/sdnr/wt/odlux/apps/app-installer/pom.xml
index 7437f7630..60ef31348 100755
--- a/sdnr/wt/odlux/apps/app-installer/pom.xml
+++ b/sdnr/wt/odlux/apps/app-installer/pom.xml
@@ -2,12 +2,6 @@
<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.7.0-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
-
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
<artifactId>odlparent-lite</artifactId>
@@ -15,10 +9,12 @@
<relativePath/>
</parent>
- <properties>
- <application.name>sdnr-wt-odlux-apps</application.name>
- <include.transitive.dependencies>false</include.transitive.dependencies>
- </properties>
+ <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+ <artifactId>sdnr-wt-odlux-apps-installer</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+
+ <name>ccsdk-features :: ${project.artifactId}</name>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
@@ -26,6 +22,11 @@
</license>
</licenses>
+ <properties>
+ <application.name>sdnr-wt-odlux-apps</application.name>
+ <include.transitive.dependencies>false</include.transitive.dependencies>
+ </properties>
+
<dependencies>
<dependency>
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
@@ -92,9 +93,15 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>sdnr-wt-odlux-app-eventLogApp</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>
diff --git a/sdnr/wt/odlux/apps/configurationApp/package.json b/sdnr/wt/odlux/apps/configurationApp/package.json
index a0df50579..2985ba4fb 100644
--- a/sdnr/wt/odlux/apps/configurationApp/package.json
+++ b/sdnr/wt/odlux/apps/configurationApp/package.json
@@ -20,21 +20,21 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"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
index 62742c05e..6abe1f07b 100644
--- a/sdnr/wt/odlux/apps/configurationApp/pom.xml
+++ b/sdnr/wt/odlux/apps/configurationApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-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.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-configurationApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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
deleted file mode 100644
index 9a4c92bc6..000000000
--- a/sdnr/wt/odlux/apps/configurationApp/src/actions/configurationActions.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-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({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 != null ?
- 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/actions/deviceActions.ts b/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts
new file mode 100644
index 000000000..fc0665325
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts
@@ -0,0 +1,380 @@
+import { Action } from '../../../../framework/src/flux/action';
+import { Dispatch } from '../../../../framework/src/flux/store';
+import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore";
+import { PushAction, ReplaceAction } from "../../../../framework/src/actions/navigationActions";
+
+import { restService } from "../services/restServices";
+import { YangParser } from "../yang/yangParser";
+import { Module } from "../models/yang";
+import { ViewSpecification, ViewElement, isViewElementReference, isViewElementList, isViewElementObjectOrList } from "../models/uiModels";
+import { AddErrorInfoAction } from "../../../../framework/src/actions/errorActions";
+
+export class EnableValueSelector extends Action {
+ constructor(public listSpecification: ViewSpecification, public listData: any[], public keyProperty: string, public onValueSelected : (value: any) => void ) {
+ super();
+ }
+}
+
+export class SetCollectingSelectionData extends Action {
+ constructor(public busy: boolean) {
+ super();
+ }
+}
+
+export class SetSelectedValue extends Action {
+ constructor(public value: any) {
+ super();
+ }
+}
+
+export class UpdateDeviceDescription extends Action {
+ constructor( public nodeId: string, public modules: { [name:string]: Module}, public views: ViewSpecification[]) {
+ super();
+ }
+}
+
+export class UpdatViewDescription extends Action {
+ constructor(public vPath: string, public view: ViewSpecification, public viewData: any, public displayAsList: boolean = false, public key?: string ) {
+ super();
+ }
+}
+
+export const updateNodeIdAsyncActionCreator = (nodeId: string) => async (dispatch: Dispatch, getState: () => IApplicationStoreState ) => {
+ const { configuration: { connectedNetworkElements : { rows }} } = getState();
+ dispatch(new SetCollectingSelectionData(true));
+ const networkElement = rows.find(r => r.nodeId === nodeId) || await restService.getMountedNetworkElementByMountId(nodeId);
+ if (!networkElement) {
+ console.error(new Error(`NetworkElement : [${nodeId}] does not exist.`));
+ return dispatch(new UpdateDeviceDescription("", { }, [ ]));
+ }
+
+ if (!networkElement.nodeDetails || !networkElement.nodeDetails.availableCapabilities) {
+ throw new Error(`NetworkElement : [${nodeId}] has no capabilities.`);
+ }
+ const parser = new YangParser();
+
+ const capParser = /^\(.*\?revision=(\d{4}-\d{2}-\d{2})\)(\S+)$/i;
+ for (let i = 0; i < networkElement.nodeDetails.availableCapabilities.length; ++i){
+ const capRaw = networkElement.nodeDetails.availableCapabilities[i];
+ const capMatch = capRaw && capParser.exec(capRaw);
+ try {
+ capMatch && await parser.addCapability(capMatch[2], capMatch[1]);
+ } catch (err) {
+ console.error(err);
+ }
+ }
+
+ parser.postProcess();
+
+ console.log(parser.modules, parser.views)
+
+ return dispatch(new UpdateDeviceDescription(nodeId, parser.modules, parser.views));
+}
+
+export const splitVPath = (vPath: string, vPathParser : RegExp): [string, string?][] => {
+ const pathParts: [string, string?][] = [];
+ let partMatch: RegExpExecArray | null;
+ if (vPath) do {
+ partMatch = vPathParser.exec(vPath);
+ if (partMatch) {
+ pathParts.push([partMatch[1], partMatch[2] || undefined]);
+ }
+ } while (partMatch)
+ return pathParts;
+}
+
+const getReferencedDataList = async (refPath: string, dataPath: string, modules: { [name: string]: Module }, views: ViewSpecification[]) => {
+ const pathParts = splitVPath(refPath, /(?:(?:([^\/\:]+):)?([^\/]+))/g); // 1 = opt: namespace / 2 = property
+ let referencedModule = modules[pathParts[0][0]];
+
+ let dataMember: string;
+ let view: ViewSpecification;
+ let currentNS: string | null = null;
+ let dataUrls = [dataPath];
+ let data: any;
+
+ for (let i = 0; i < pathParts.length; ++i) {
+ const [pathPartNS, pathPart] = pathParts[i];
+ const namespace = pathPartNS != null ? (currentNS = pathPartNS) : currentNS;
+
+ const viewElement = i === 0
+ ? views[0].elements[`${referencedModule.name}:${pathPart}`]
+ : view!.elements[`${pathPart}`] || view!.elements[`${namespace}:${pathPart}`];
+
+ if (!viewElement) throw new Error(`Could not find ${pathPart} in ${refPath}`);
+ if (i < pathParts.length - 1) {
+ if (!isViewElementObjectOrList(viewElement)) {
+ throw Error(`Module: [${referencedModule.name}].[${viewElement.label}]. Viewelement is not list or object.`);
+ }
+ view = views[+viewElement.viewId];
+ const resultingDataUrls : string[] = [];
+ if (isViewElementList(viewElement)) {
+ for (let j = 0; j < dataUrls.length; ++j) {
+ const dataUrl = dataUrls[j];
+ const restResult = (await restService.getConfigData(dataUrl));
+ if (restResult.data == null || restResult.status < 200 || restResult.status > 299) {
+ const message = restResult.data && restResult.data.errors && restResult.data.errors.error && restResult.data.errors.error[0] && restResult.data.errors.error[0]["error-message"] || "";
+ throw new Error(`Server Error. Status: [${restResult.status}]\n${message || restResult.message || ''}`);
+ }
+
+ let dataRaw = restResult.data[dataMember!];
+ dataRaw = dataRaw instanceof Array
+ ? dataRaw[0]
+ : dataRaw;
+
+ data = dataRaw && dataRaw[viewElement.label] || [];
+ const keys: string[] = data.map((entry: { [key: string]: any } )=> entry[viewElement.key!]);
+ resultingDataUrls.push(...keys.map(key => `${dataUrl}/${viewElement.label.replace(/\//ig, "%2F")}/${key.replace(/\//ig, "%2F")}`));
+ }
+ dataMember = viewElement.label;
+ } else {
+ // just a member, not a list
+ const pathSegment = (i === 0
+ ? `/${referencedModule.name}:${viewElement.label.replace(/\//ig, "%2F")}`
+ : `/${viewElement.label.replace(/\//ig, "%2F")}`);
+ resultingDataUrls.push(...dataUrls.map(dataUrl => dataUrl + pathSegment));
+ dataMember = viewElement.label;
+ }
+ dataUrls = resultingDataUrls;
+ } else {
+ data = [];
+ for (let j = 0; j < dataUrls.length; ++j) {
+ const dataUrl = dataUrls[j];
+ const restResult = (await restService.getConfigData(dataUrl));
+ if (restResult.data == null || restResult.status < 200 || restResult.status > 299) {
+ const message = restResult.data && restResult.data.errors && restResult.data.errors.error && restResult.data.errors.error[0] && restResult.data.errors.error[0]["error-message"] || "";
+ throw new Error(`Server Error. Status: [${restResult.status}]\n${message || restResult.message || ''}`);
+ }
+ let dataRaw = restResult.data[dataMember!];
+ dataRaw = dataRaw instanceof Array
+ ? dataRaw[0]
+ : dataRaw;
+ data.push(dataRaw);
+ }
+ // BUG UUID ist nicht in den elements enthalten !!!!!!
+ const key = viewElement && viewElement.label || pathPart;
+ return {
+ view: view!,
+ data: data,
+ key: key,
+ };
+ }
+ }
+ return null;
+}
+
+const resolveViewDescription = (defaultNS: string | null, vPath: string, view: ViewSpecification, viewData: any, displayAsList: boolean = false, key?: string): UpdatViewDescription =>{
+
+ // check if-feature | when | and resolve all references.
+ view = { ...view };
+ view.elements = Object.keys(view.elements).reduce<{ [name: string]: ViewElement }>((acc, cur) => {
+ const elm = view.elements[cur];
+ const key = defaultNS && cur.replace(new RegExp(`^${defaultNS}:`, "i"),"") || cur;
+ if (isViewElementReference(elm)) {
+ acc[key] = { ...(elm.ref(vPath) || elm), id: key };
+ } else {
+ acc[key] = { ...elm, id: key };
+ }
+ return acc;
+ }, {});
+ return new UpdatViewDescription(vPath, view, viewData, displayAsList, key);
+}
+
+export const updateViewActionAsyncCreator = (vPath: string) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
+ const pathParts = splitVPath(vPath, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
+ const { configuration: { deviceDescription: { nodeId, modules, views } }, framework: { navigationState } } = getState();
+ let dataPath = `/restconf/config/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount`;
+ let viewSpecification: ViewSpecification = views[0];
+ let viewElement: ViewElement;
+
+ let dataMember: string;
+ let extractList: boolean = false;
+
+ let currentNS : string | null = null;
+ let defaultNS : string | null = null;
+
+ dispatch(new SetCollectingSelectionData(true));
+ try {
+ for (let ind = 0; ind < pathParts.length; ++ind) {
+ const [property, key] = pathParts[ind];
+ const namespaceInd = property && property.indexOf(":") || -1;
+ const namespace : string | null = namespaceInd > -1 ? (currentNS = property.slice(0, namespaceInd)) : currentNS;
+
+ if (ind === 0) { defaultNS = namespace };
+
+ viewElement = viewSpecification.elements[property];
+ if (!viewElement) throw Error("Property [" + property + "] does not exist.");
+
+ if (viewElement.isList && !key) {
+ if (pathParts.length - 1 > ind) {
+ dispatch(new SetCollectingSelectionData(false));
+ throw new Error("No key for list [" + property + "]");
+ } else if (vPath.endsWith("[]") && pathParts.length - 1 === ind) {
+ // empty key is used for new element
+ if (viewElement && "viewId" in viewElement) viewSpecification = views[+viewElement.viewId];
+ const data = Object.keys(viewSpecification.elements).reduce<{ [name: string]: any }>((acc, cur) => {
+ const elm = viewSpecification.elements[cur];
+ if (elm.default) {
+ acc[elm.id] = elm.default || ""
+ }
+ return acc;
+ }, {});
+ return dispatch(resolveViewDescription(defaultNS, vPath, viewSpecification, data, false, isViewElementList(viewElement!) && viewElement.key || undefined));
+ }
+ if (viewElement && isViewElementList(viewElement) && viewSpecification.parentView === "0") {
+ // check if there is a reference as key
+ const listSpecification = views[+viewElement.viewId];
+ const keyElement = viewElement.key && listSpecification.elements[viewElement.key];
+ if (keyElement && isViewElementReference(keyElement)) {
+ const refList = await getReferencedDataList(keyElement.referencePath, dataPath, modules, views);
+ if (!refList) {
+ throw new Error(`Could not find refList for [${keyElement.referencePath}].`);
+ }
+ if (!refList.key) {
+ throw new Error(`Key property not found for [${keyElement.referencePath}].`);
+ }
+ dispatch(new EnableValueSelector(refList.view, refList.data, refList.key, (refKey) => {
+ window.setTimeout(() => dispatch(new PushAction(`${vPath}[${refKey.replace(/\//ig, "%2F")}]`)));
+ }));
+ } else {
+ dispatch(new SetCollectingSelectionData(false));
+ throw new Error("Found a list at root level of a module w/o a refenrece key.");
+ }
+ return;
+ }
+ extractList = true;
+ } else {
+ dataPath += `/${property}${key ? `/${key.replace(/\//ig, "%2F")}` : ""}`;
+ dataMember = namespace === defaultNS
+ ? viewElement.label
+ : `${namespace}:${viewElement.label}`;
+ extractList = false;
+ }
+
+ if (viewElement && "viewId" in viewElement) viewSpecification = views[+viewElement.viewId];
+ }
+
+ let data: any = {};
+ if (viewSpecification && viewSpecification.id !== "0") {
+ const restResult = (await restService.getConfigData(dataPath));
+ if (!restResult.data) {
+ // special case: if this is a list without any response
+ if (extractList && restResult.status === 404) {
+ if (!isViewElementList(viewElement!)) {
+ throw new Error(`vPath: [${vPath}]. ViewElement has no key.`);
+ }
+ return dispatch(resolveViewDescription(defaultNS, vPath, viewSpecification, [], extractList, viewElement.key));
+ }
+ throw new Error(`Did not get response from Server. Status: [${restResult.status}]`);
+ } else if (restResult.status < 200 || restResult.status > 299) {
+ const message = restResult.data.errors && restResult.data.errors.error && restResult.data.errors.error[0] && restResult.data.errors.error[0]["error-message"] || "";
+ throw new Error(`Server Error. Status: [${restResult.status}]\n${message}`);
+ } else {
+ data = restResult.data[dataMember!]; // extract dataMember
+ }
+
+ // extract the first element list[key]
+ data = data instanceof Array
+ ? data[0]
+ : data;
+
+ // extract the list -> key: list
+ data = extractList
+ ? data[viewElement!.label] || [] // if the list is empty, it does not exist
+ : data;
+ }
+
+ return dispatch(resolveViewDescription(defaultNS, vPath, viewSpecification, data, extractList, isViewElementList(viewElement!) && viewElement.key || undefined));
+ // https://beta.just-run.it/#/configuration/Sim12600/core-model:network-element/ltp[LTP-MWPS-TTP-01]
+ // https://beta.just-run.it/#/configuration/Sim12600/core-model:network-element/ltp[LTP-MWPS-TTP-01]/lp
+ } catch (error) {
+ history.back();
+ dispatch(new AddErrorInfoAction({ title: "Problem", message: error.message || `Could not process ${dataPath}` }));
+ dispatch(new SetCollectingSelectionData(false));
+ } finally {
+ return;
+ }
+}
+
+export const updateDataActionAsyncCreator = (vPath: string, data: any) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
+ const pathParts = splitVPath(vPath, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
+ const { configuration: { deviceDescription: { nodeId, views } } } = getState();
+ let dataPath = `/restconf/config/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount`;
+ let viewSpecification: ViewSpecification = views[0];
+ let viewElement: ViewElement;
+ let dataMember: string;
+ let embedList: boolean = false;
+ let isNew: string | false = false;
+
+ let currentNS: string | null = null;
+ let defaultNS: string | null = null;
+
+ dispatch(new SetCollectingSelectionData(true));
+ try {
+ for (let ind = 0; ind < pathParts.length; ++ind) {
+ let [property, key] = pathParts[ind];
+ const namespaceInd = property && property.indexOf(":") || -1;
+ const namespace: string | null = namespaceInd > -1 ? (currentNS = property.slice(0, namespaceInd)) : currentNS;
+
+ if (ind === 0) { defaultNS = namespace };
+ viewElement = viewSpecification.elements[property];
+ if (!viewElement) throw Error("Property [" + property + "] does not exist.");
+
+ if (isViewElementList(viewElement) && !key) {
+ embedList = true;
+ if (viewElement && viewElement.isList && viewSpecification.parentView === "0") {
+ throw new Error("Found a list at root level of a module w/o a refenrece key.");
+ }
+ if (pathParts.length - 1 > ind) {
+ dispatch(new SetCollectingSelectionData(false));
+ throw new Error("No key for list [" + property + "]");
+ } else if (vPath.endsWith("[]") && pathParts.length - 1 === ind) {
+ // handle new element
+ key = viewElement.key && String(data[viewElement.key]) || "";
+ isNew = key;
+ if (!key) {
+ dispatch(new SetCollectingSelectionData(false));
+ throw new Error("No value for key [" + viewElement.key +"] in list [" + property + "]");
+ }
+ }
+ }
+
+ dataPath += `/${property}${key ? `/${key.replace(/\//ig, "%2F")}` : ""}`;
+ dataMember = viewElement.label;
+ embedList = false;
+
+ if (viewElement && "viewId" in viewElement) {
+ viewSpecification = views[+viewElement.viewId];
+ }
+ }
+
+ // embed the list -> key: list
+ data = embedList
+ ? { [viewElement!.label]: data }
+ : data;
+
+ // embed the first element list[key]
+ data = isNew
+ ? [data]
+ : data;
+
+ // do not extract root member (0)
+ if (viewSpecification && viewSpecification.id !== "0") {
+ const updateResult = await restService.setConfigData(dataPath, { [dataMember!]: data }); // extractDataMember
+ if (updateResult.status < 200 || updateResult.status > 299) {
+ const message = updateResult.data && updateResult.data.errors && updateResult.data.errors.error && updateResult.data.errors.error[0] && updateResult.data.errors.error[0]["error-message"] || "";
+ throw new Error(`Server Error. Status: [${updateResult.status}]\n${message || updateResult.message || ''}`);
+ }
+ }
+
+ return isNew
+ ? dispatch(new ReplaceAction(`/configuration/${nodeId}/${vPath.replace(/\[\]$/i,`[${isNew}]`)}`)) // navigate to new element
+ : dispatch(resolveViewDescription(defaultNS, vPath, viewSpecification, data, embedList, isViewElementList(viewElement!) && viewElement.key || undefined));
+ } catch (error) {
+ history.back();
+ dispatch(new AddErrorInfoAction({ title: "Problem", message: error.message || `Could not change ${dataPath}` }));
+ dispatch(new SetCollectingSelectionData(false));
+ } finally {
+ return;
+ }
+} \ 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
deleted file mode 100644
index 5e0165e4f..000000000
--- a/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json
+++ /dev/null
@@ -1,6678 +0,0 @@
-{
- "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
deleted file mode 100644
index 4fbd8bf27..000000000
--- a/sdnr/wt/odlux/apps/configurationApp/src/assets/microwave-model@2017-03-24.json.old
+++ /dev/null
@@ -1,19680 +0,0 @@
-{
- "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
index b1fd5031d..04b63d39b 100644
--- a/sdnr/wt/odlux/apps/configurationApp/src/handlers/configurationAppRootHandler.ts
+++ b/sdnr/wt/odlux/apps/configurationApp/src/handlers/configurationAppRootHandler.ts
@@ -1,95 +1,29 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-// 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';
+import { IConnectedNetworkElementsState, connectedNetworkElementsActionHandler } from './connectedNetworkElementsHandler';
+import { IDeviceDescriptionState, deviceDescriptionHandler } from "./deviceDescriptionHandler";
+import { IViewDescriptionState, viewDescriptionHandler } from "./viewDescriptionHandler";
+import { IValueSelectorState, valueSelectorHandler } from "./valueSelectorHandler";
-export interface IConfigurationAppStoreState {
- loading: boolean;
- nodeId?: string;
- lpId?: string;
- viewId?: string;
- indexValues?: string;
- capability?: string;
- conditionalPackage?: string,
- coreModel?: CoreModelNetworkElement;
- viewSpecifications: ViewSpecification[];
- viewData: {};
+interface IConfigurationAppStoreState {
+ connectedNetworkElements: IConnectedNetworkElementsState; // used for ne selection
+ deviceDescription: IDeviceDescriptionState; // contains ui and device descriptions
+ viewDescription: IViewDescriptionState; // contains current ui description
+ valueSelector: IValueSelectorState;
}
declare module '../../../../framework/src/store/applicationStore' {
interface IApplicationStoreState {
- configuration: IConfigurationAppStoreState
+ 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,
- lpId: undefined,
- capability: undefined,
- conditionalPackage: undefined,
- viewSpecifications: [],
- viewData: { },
- indexValues: undefined,
- viewId: undefined,
- };
- } else if (action instanceof UpdateLp) {
- state = {
- ...state,
- lpId: action.lpId,
- capability: action.capability,
- conditionalPackage: action.conditionalPackage,
- viewSpecifications: action.viewSpecifications,
- viewData: { },
- indexValues: undefined,
- viewId: undefined,
- };
- } else if (action instanceof UpdateViewData) {
- state = {
- ...state,
- viewData: action.viewData,
- indexValues: action.indexValues,
- viewId: action.viewId,
- };
- }
- return state;
+const actionHandlers = {
+ connectedNetworkElements: connectedNetworkElementsActionHandler,
+ deviceDescription: deviceDescriptionHandler,
+ viewDescription: viewDescriptionHandler,
+ valueSelector: valueSelectorHandler,
};
+export const configurationAppRootHandler = combineActionHandler<IConfigurationAppStoreState>(actionHandlers);
export default configurationAppRootHandler;
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/handlers/connectedNetworkElementsHandler.ts b/sdnr/wt/odlux/apps/configurationApp/src/handlers/connectedNetworkElementsHandler.ts
new file mode 100644
index 000000000..6a68242eb
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/handlers/connectedNetworkElementsHandler.ts
@@ -0,0 +1,19 @@
+import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
+import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
+
+import { NetworkElementConnection } from '../models/networkElementConnection';
+
+export interface IConnectedNetworkElementsState extends IExternalTableState<NetworkElementConnection> { }
+
+// create eleactic search material data fetch handler
+const connectedNetworkElementsSearchHandler = createSearchDataHandler<NetworkElementConnection>('network-element-connection', { status: "Connected" });
+
+export const {
+ actionHandler: connectedNetworkElementsActionHandler,
+ createActions: createConnectedNetworkElementsActions,
+ createProperties: createConnectedNetworkElementsProperties,
+ reloadAction: connectedNetworkElementsReloadAction,
+
+ // set value action, to change a value
+} = createExternal<NetworkElementConnection>(connectedNetworkElementsSearchHandler, appState => appState.configuration.connectedNetworkElements);
+ \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/handlers/deviceDescriptionHandler.ts b/sdnr/wt/odlux/apps/configurationApp/src/handlers/deviceDescriptionHandler.ts
new file mode 100644
index 000000000..3cc27aa95
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/handlers/deviceDescriptionHandler.ts
@@ -0,0 +1,30 @@
+import { Module } from "../models/yang";
+import { ViewSpecification } from "../models/uiModels";
+import { IActionHandler } from "../../../../framework/src/flux/action";
+import { UpdateDeviceDescription } from "../actions/deviceActions";
+
+export interface IDeviceDescriptionState {
+ nodeId: string,
+ modules: {
+ [name: string]: Module
+ },
+ views: ViewSpecification[],
+}
+
+const deviceDescriptionStateInit: IDeviceDescriptionState = {
+ nodeId: "",
+ modules: {},
+ views: []
+};
+
+export const deviceDescriptionHandler: IActionHandler<IDeviceDescriptionState> = (state = deviceDescriptionStateInit, action) => {
+ if (action instanceof UpdateDeviceDescription) {
+ state = {
+ ...state,
+ nodeId: action.nodeId,
+ modules: action.modules,
+ views: action.views
+ };
+ }
+ return state;
+};
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/handlers/valueSelectorHandler.ts b/sdnr/wt/odlux/apps/configurationApp/src/handlers/valueSelectorHandler.ts
new file mode 100644
index 000000000..c9e7dd2cc
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/handlers/valueSelectorHandler.ts
@@ -0,0 +1,58 @@
+import { IActionHandler } from "../../../../framework/src/flux/action";
+import { ViewSpecification } from "../models/uiModels";
+import { EnableValueSelector, SetSelectedValue, UpdateDeviceDescription, SetCollectingSelectionData, UpdatViewDescription } from "../actions/deviceActions";
+
+export interface IValueSelectorState {
+ collectingData: boolean;
+ keyProperty: string | undefined;
+ listSpecification: ViewSpecification | null;
+ listData: any[];
+ onValueSelected: (value: any) => void;
+}
+
+const nc = (val: React.SyntheticEvent) => { };
+const valueSelectorStateInit: IValueSelectorState = {
+ collectingData: false,
+ keyProperty: undefined,
+ listSpecification: null,
+ listData: [],
+ onValueSelected: nc,
+};
+
+export const valueSelectorHandler: IActionHandler<IValueSelectorState> = (state = valueSelectorStateInit, action) => {
+ if (action instanceof SetCollectingSelectionData) {
+ state = {
+ ...state,
+ collectingData: action.busy,
+ };
+ } else if (action instanceof EnableValueSelector) {
+ state = {
+ ...state,
+ collectingData: false,
+ keyProperty: action.keyProperty,
+ listSpecification: action.listSpecification,
+ onValueSelected: action.onValueSelected,
+ listData: action.listData,
+ };
+ } else if (action instanceof SetSelectedValue) {
+ state.keyProperty && state.onValueSelected(action.value[state.keyProperty]);
+ state = {
+ ...state,
+ collectingData: false,
+ keyProperty: undefined,
+ listSpecification: null,
+ onValueSelected: nc,
+ listData: [],
+ };
+ } else if (action instanceof UpdateDeviceDescription || action instanceof UpdatViewDescription) {
+ state = {
+ ...state,
+ collectingData: false,
+ keyProperty: undefined,
+ listSpecification: null,
+ onValueSelected: nc,
+ listData: [],
+ };
+ }
+ return state;
+};
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/handlers/viewDescriptionHandler.ts b/sdnr/wt/odlux/apps/configurationApp/src/handlers/viewDescriptionHandler.ts
new file mode 100644
index 000000000..48155ee1e
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/handlers/viewDescriptionHandler.ts
@@ -0,0 +1,42 @@
+import { IActionHandler } from "../../../../framework/src/flux/action";
+
+import { UpdatViewDescription } from "../actions/deviceActions";
+import { ViewSpecification } from "../models/uiModels";
+
+export interface IViewDescriptionState {
+ vPath: string | null;
+ keyProperty: string | undefined;
+ displayAsList: boolean;
+ viewSpecification: ViewSpecification;
+ viewData: any
+}
+
+const viewDescriptionStateInit: IViewDescriptionState = {
+ vPath: null,
+ keyProperty: undefined,
+ displayAsList: false,
+ viewSpecification: {
+ id: "empty",
+ canEdit: false,
+ parentView: "",
+ name: "emplty",
+ language: "en-US",
+ title: "empty",
+ elements: {}
+ },
+ viewData: null
+};
+
+export const viewDescriptionHandler: IActionHandler<IViewDescriptionState> = (state = viewDescriptionStateInit, action) => {
+ if (action instanceof UpdatViewDescription) {
+ state = {
+ ...state,
+ vPath: action.vPath,
+ keyProperty: action.key,
+ displayAsList: action.displayAsList,
+ viewSpecification: action.view,
+ viewData: action.viewData,
+ }
+ }
+ return state;
+};
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts b/sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts
deleted file mode 100644
index ea37a23f1..000000000
--- a/sdnr/wt/odlux/apps/configurationApp/src/models/coreModel.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-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/networkElementConnection.ts b/sdnr/wt/odlux/apps/configurationApp/src/models/networkElementConnection.ts
new file mode 100644
index 000000000..2575500a3
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/models/networkElementConnection.ts
@@ -0,0 +1,19 @@
+export type NetworkElementConnection = {
+ id?: string;
+ nodeId: string;
+ host: string;
+ port: number;
+ username?: string;
+ password?: string;
+ isRequired?: boolean;
+ status?: "connected" | "mounted" | "unmounted" | "connecting" | "disconnected" | "idle";
+ coreModelCapability?: string;
+ deviceType?: string;
+ nodeDetails?: {
+ availableCapabilities: string[];
+ unavailableCapabilities: {
+ failureReason: string;
+ capability: string;
+ }[];
+ }
+}
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts b/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts
index 69a807a3c..441d1281d 100644
--- a/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts
+++ b/sdnr/wt/odlux/apps/configurationApp/src/models/uiModels.ts
@@ -1,90 +1,142 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-export interface AccessFlags {
- "read": boolean,
- "write": boolean,
- "create": boolean
-}
-
-export interface ViewElementBase {
+export type ViewElementBase = {
"id": string;
"label": string;
- "viewId": string;
- "leafrefPath": string;
- "accessFlags": AccessFlags;
- "description": string;
+ "config": boolean;
+ "ifFeature"?: string;
+ "when"?: string;
+ "mandatory"?: boolean;
+ "description"?: string;
+ "isList"?: boolean;
+ "default"?: string;
+ "status"?: "current" | "deprecated" | "obsolete",
+ "reference"?: string, // https://tools.ietf.org/html/rfc7950#section-7.21.4
+}
+
+// https://tools.ietf.org/html/rfc7950#section-9.8
+export type ViewElementBinary = ViewElementBase & {
+ "uiType": "binary";
+ "length"?: number; // number of octets
+}
+
+// https://tools.ietf.org/html/rfc7950#section-9.7.4
+export type ViewElementBits = ViewElementBase & {
+ "uiType": "bits";
+ "flags": {
+ [name: string]: number | undefined; // 0 - 4294967295
+ }
}
-export interface ViewElementString extends ViewElementBase {
+// https://tools.ietf.org/html/rfc7950#section-9
+export type ViewElementString = ViewElementBase & {
"uiType": "string";
+ "pattern"?: string[];
+ "length"?: string;
+ "invertMatch"?: true;
}
-export interface ViewElementNumber extends ViewElementBase {
+// https://tools.ietf.org/html/rfc7950#section-9.3
+export type ViewElementNumber = ViewElementBase & {
"uiType": "number";
"min"?: number;
"max"?: number;
- "unit"?: string;
+ "units"?: string;
"format"?: string;
+ "fDigits"?: number;
}
-export interface ViewElementBoolean extends ViewElementBase {
+// https://tools.ietf.org/html/rfc7950#section-9.5
+export type ViewElementBoolean = ViewElementBase & {
"uiType": "boolean";
"trueValue"?: string;
"falseValue"?: string;
}
-export interface ViewElementObject extends ViewElementBase {
- "uiType": "object";
- "viewId": string;
-}
-
-export interface ViewElementSelection extends ViewElementBase {
+// https://tools.ietf.org/html/rfc7950#section-9.6.4
+export type ViewElementSelection = ViewElementBase & {
"uiType": "selection";
"multiSelect"?: boolean
"options": {
- "key": string,
- "value": string,
- "description": string
- }[],
+ "key": string;
+ "value": string;
+ "description"?: string,
+ "status"?: "current" | "deprecated" | "obsolete",
+ "reference"?: string,
+ }[];
}
-export interface ViewElementList extends ViewElementBase {
- "uiType": "list",
- "listType": "object" | "string" | "number",
- "viewId": string,
+// is a list if isList is true ;-)
+export type ViewElementObject = ViewElementBase & {
+ "uiType": "object";
+ "isList"?: false;
+ "viewId": string;
+}
+
+// Hint: read only lists do not need a key
+export type ViewElementList = (ViewElementBase & {
+ "uiType": "object";
+ "isList": true;
+ "viewId": string;
+ "key"?: string;
+});
+
+export type ViewElementReference = ViewElementBase & {
+ "uiType": "reference";
+ "referencePath": string;
+ "ref": (currentPath: string) => ViewElement | null;
}
export type ViewElement =
+ | ViewElementBits
+ | ViewElementBinary
| ViewElementString
| ViewElementNumber
| ViewElementBoolean
| ViewElementObject
+ | ViewElementList
| ViewElementSelection
- | ViewElementList;
+ | ViewElementReference;
+
+export const isViewElementString = (viewElement: ViewElement): viewElement is ViewElementString => {
+ return viewElement && viewElement.uiType === "string";
+}
-export interface ViewSpecification {
+export const isViewElementNumber = (viewElement: ViewElement): viewElement is ViewElementNumber => {
+ return viewElement && viewElement.uiType === "number" ;
+}
+
+export const isViewElementBoolean = (viewElement: ViewElement): viewElement is ViewElementBoolean => {
+ return viewElement && viewElement.uiType === "boolean";
+}
+
+export const isViewElementObject = (viewElement: ViewElement): viewElement is ViewElementObject => {
+ return viewElement && viewElement.uiType === "object" && viewElement.isList === false;
+}
+
+export const isViewElementList = (viewElement: ViewElement): viewElement is ViewElementList => {
+ return viewElement && viewElement.uiType === "object" && viewElement.isList === true;
+}
+
+export const isViewElementObjectOrList = (viewElement: ViewElement): viewElement is ViewElementObject | ViewElementList => {
+ return viewElement && viewElement.uiType === "object";
+}
+
+export const isViewElementSelection = (viewElement: ViewElement): viewElement is ViewElementSelection => {
+ return viewElement && viewElement.uiType === "selection";
+}
+
+export const isViewElementReference = (viewElement: ViewElement): viewElement is ViewElementReference => {
+ return viewElement && viewElement.uiType === "reference";
+}
+
+export type ViewSpecification = {
"id": string;
- "parentView": string;
"name": string;
- "language": string;
"title"?: string;
- "url": string;
- "dataPath": string;
- "elements": ViewElement[];
+ "parentView"?: string;
+ "language": string;
+ "ifFeature"?: string;
+ "when"?: string;
+ "uses"?: string[];
+ "elements": { [name: string]: ViewElement };
+ readonly "canEdit": boolean;
}
-
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/models/yang.ts b/sdnr/wt/odlux/apps/configurationApp/src/models/yang.ts
new file mode 100644
index 000000000..57edf803f
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/models/yang.ts
@@ -0,0 +1,44 @@
+import { ViewElement, ViewSpecification } from "./uiModels";
+
+export type Token = {
+ name: string;
+ value: string;
+ start: number;
+ end: number;
+}
+
+export type Statement = {
+ key: string;
+ arg?: string;
+ sub?: Statement[];
+}
+
+export type Identity = {
+ id: string,
+ label: string,
+ base?: string,
+ description?: string,
+ reference?: string,
+ children?: Identity[],
+ values?: Identity[],
+}
+
+export type Revision = {
+ description?: string,
+ reference?: string
+};
+
+export type Module = {
+ name: string;
+ namespace?: string;
+ prefix?: string;
+ identities: { [name: string]: Identity };
+ revisions: { [version: string]: Revision } ;
+ imports: { [prefix: string]: string };
+ features: { [feature: string]: { description?: string } };
+ typedefs: { [type: string]: ViewElement };
+ augments: { [path: string]: ViewSpecification[] };
+ groupings: { [group: string]: ViewSpecification };
+ views: { [view: string]: ViewSpecification };
+ elements: { [view: string]: ViewElement };
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx b/sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx
deleted file mode 100644
index 4d5faf559..000000000
--- a/sdnr/wt/odlux/apps/configurationApp/src/plugin.tsx
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-// 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;
- currentMountId && 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;
- currentLpId && 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/pluginConfiguration.tsx b/sdnr/wt/odlux/apps/configurationApp/src/pluginConfiguration.tsx
new file mode 100644
index 000000000..7fd3a97f9
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/pluginConfiguration.tsx
@@ -0,0 +1,77 @@
+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 { NetworkElementSelector } from "./views/networkElementSelector";
+
+import ConfigurationApplication from "./views/configurationApplication";
+import { updateNodeIdAsyncActionCreator, updateViewActionAsyncCreator } from "./actions/deviceActions";
+
+let currentNodeId: string | null | undefined = undefined;
+let currentVirtualPath: string | null | undefined = undefined;
+let lastUrl: string | undefined = undefined;
+
+const mapProps = (state: IApplicationStoreState) => ({
+ // currentProblemsProperties: createCurrentProblemsProperties(state),
+});
+
+const mapDisp = (dispatcher: IDispatcher) => ({
+ updateNodeId: (nodeId: string) => dispatcher.dispatch(updateNodeIdAsyncActionCreator(nodeId)),
+ updateView: (vPath: string) => dispatcher.dispatch(updateViewActionAsyncCreator(vPath)),
+});
+
+const ConfigurationApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComponentProps<{ nodeId?: string, 0: string }> & Connect<typeof mapProps, typeof mapDisp>) => {
+ React.useEffect(() => {
+ return () => {
+ lastUrl = undefined;
+ currentNodeId = undefined;
+ currentVirtualPath = undefined;
+ }
+ },[]);
+ 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 nodeId has changed
+ if (currentNodeId !== props.match.params.nodeId) {
+ currentNodeId = props.match.params.nodeId || undefined;
+ currentVirtualPath = null;
+ currentNodeId && await props.updateNodeId(currentNodeId);
+ }
+
+ if (currentVirtualPath !== props.match.params[0]) {
+ currentVirtualPath = props.match.params[0];
+ await props.updateView(currentVirtualPath);
+ }
+
+ });
+ }
+ return (
+ <ConfigurationApplication />
+ );
+});
+
+const App = withRouter((props: RouteComponentProps) => (
+ <Switch>
+ <Route path={`${props.match.url}/:nodeId/*`} component={ ConfigurationApplicationRouteAdapter } />
+ <Route path={`${props.match.url}/:nodeId`} component={ ConfigurationApplicationRouteAdapter } />
+ <Route path={`${props.match.url}`} component={ NetworkElementSelector } />
+ <Redirect to={`${props.match.url}`} />
+ </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
deleted file mode 100644
index f78730480..000000000
--- a/sdnr/wt/odlux/apps/configurationApp/src/services/configurationService.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-
-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" }, false, true);
- 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/services/restServices.ts b/sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts
new file mode 100644
index 000000000..061be05ec
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts
@@ -0,0 +1,38 @@
+import { requestRest, requestRestExt } from "../../../../framework/src/services/restService";
+import { convertPropertyNames, replaceHyphen } from "../../../../framework/src/utilities/yangHelper";
+
+import { NetworkElementConnection } from "../models/networkElementConnection";
+
+class RestService {
+ public async getMountedNetworkElementByMountId(nodeId: string): Promise<NetworkElementConnection | null> {
+ // const path = 'restconf/operational/network-topology:network-topology/topology/topology-netconf/node/' + nodeId;
+ // const connectedNetworkElement = await requestRest<NetworkElementConnection>(path, { method: "GET" });
+ // return connectedNetworkElement || null;
+
+ const path = "/restconf/operations/data-provider:read-network-element-connection-list";
+ const body = { "input": { "filter": [{ "property": "node-id", "filtervalue": nodeId }], "sortorder": [], "pagination": { "size": 1, "page": 1 } } };
+ const networkElementResult = await requestRest<{ output: { data: NetworkElementConnection[] } }>(path, { method: "POST", body: JSON.stringify(body) });
+ return networkElementResult && networkElementResult.output && networkElementResult.output.data &&
+ networkElementResult.output.data.map(obj => convertPropertyNames(obj, replaceHyphen))[0] || null;
+ }
+
+ /** Reads the config data by restconf path.
+ * @param path The restconf path to be used for read.
+ * @returns The data.
+ */
+ public getConfigData(path: string) {
+ return requestRestExt<{ [key: string]: any }>(path, { method: "GET" });
+ }
+
+ /** Updates or creates the config data by restconf path using data.
+ * @param path The restconf path to identify the note to update.
+ * @param data The data to be updated.
+ * @returns The written data.
+ */
+ public setConfigData(path: string, data: any) {
+ return requestRestExt<{ [key: string]: any }>(path, { method: "PUT", body: JSON.stringify(data) });
+ }
+ }
+
+export const restService = new RestService();
+export default restService; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/services/yangService.ts b/sdnr/wt/odlux/apps/configurationApp/src/services/yangService.ts
new file mode 100644
index 000000000..17a4e43a7
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/services/yangService.ts
@@ -0,0 +1,25 @@
+type YangInfo = [string, (string | null | undefined)];
+
+const cache: { [path: string]: string } = {
+
+};
+
+class YangService {
+
+ public async getCapability(capability: string, version?: string) {
+ const url = `/yang-schema/${capability}${version ? `/${version}` : ""}`;
+
+ const cacheHit = cache[url];
+ if (cacheHit) return cacheHit;
+
+ const res = await fetch(url);
+ const yangFile = res.ok && await res.text();
+ if (yangFile !== false && yangFile !== null) {
+ cache[url] = yangFile;
+ }
+ return yangFile;
+ }
+}
+
+export const yangService = new YangService();
+export default yangService; \ 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
index d5189fcd0..24a4af8b2 100644
--- a/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx
+++ b/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx
@@ -15,306 +15,450 @@
* the License.
* ============LICENSE_END==========================================================================
*/
+
import * as React from 'react';
+import { RouteComponentProps, withRouter } from 'react-router-dom';
+
+import { WithStyles, withStyles, createStyles, Theme } from '@material-ui/core/styles';
-import { MaterialTable, 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 connect, { IDispatcher, Connect } from "../../../../framework/src/flux/connect";
+import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore";
+import MaterialTable, { ColumnModel, ColumnType, MaterialTableCtorType } from "../../../../framework/src/components/material-table";
+import { Loader } from "../../../../framework/src/components/material-ui/loader";
-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 { SetSelectedValue, splitVPath, updateDataActionAsyncCreator } from "../actions/deviceActions";
+import { ViewSpecification, isViewElementString, isViewElementNumber, isViewElementBoolean, isViewElementObjectOrList, isViewElementSelection } from "../models/uiModels";
-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 Fab from '@material-ui/core/Fab';
+import AddIcon from '@material-ui/icons/Add';
+import RemoveIcon from '@material-ui/icons/RemoveCircleOutline';
+import SaveIcon from '@material-ui/icons/Save';
+import EditIcon from '@material-ui/icons/Edit';
+import Tooltip from "@material-ui/core/Tooltip";
+import TextField from "@material-ui/core/TextField";
+import FormControl from "@material-ui/core/FormControl";
+import IconButton from "@material-ui/core/IconButton";
+import Button from "@material-ui/core/Button";
+import InputAdornment from "@material-ui/core/InputAdornment";
+import InputLabel from "@material-ui/core/InputLabel";
+import Select from "@material-ui/core/Select";
+import MenuItem from "@material-ui/core/MenuItem";
+import Breadcrumbs from "@material-ui/core/Breadcrumbs";
+import Link from "@material-ui/core/Link";
+import FormHelperText from '@material-ui/core/FormHelperText';
-import { ViewSpecification } from '../models/uiModels';
+const styles = (theme: Theme) => createStyles({
+ header: {
+ "display": "flex",
+ "justifyContent": "space-between",
+ },
+ leftButton: {
+ "justifyContent": "left"
+ },
+ outer: {
+ "flex": "1",
+ "heigh": "100%",
+ "display": "flex",
+ "alignItems": "center",
+ "justifyContent": "center",
+ },
+ inner: {
-const NetworkElementTable = MaterialTable as MaterialTableCtorType<MountedNetworkElementType>;
+ },
+ "icon": {
+ "marginRight": theme.spacing(0.5),
+ "width": 20,
+ "height": 20,
+ },
+ "fab": {
+ "margin": theme.spacing(1),
+ },
+ button: {
+ margin: 0,
+ padding: "6px 6px",
+ minWidth: 'unset'
+ },
+ readOnly: {
+ '& label.Mui-focused': {
+ color: 'green',
+ },
+ '& .MuiInput-underline:after': {
+ borderBottomColor: 'green',
+ },
+ '& .MuiOutlinedInput-root': {
+ '& fieldset': {
+ borderColor: 'red',
+ },
+ '&:hover fieldset': {
+ borderColor: 'yellow',
+ },
+ '&.Mui-focused fieldset': {
+ borderColor: 'green',
+ },
+ },
+ },
+});
const mapProps = (state: IApplicationStoreState) => ({
- ...state.configuration,
- avaliableDevices: state.connect.mountedNetworkElements.elements.filter(el => el.connectionStatus === "connected")
+ collectingData: state.configuration.valueSelector.collectingData,
+ listKeyProperty: state.configuration.valueSelector.keyProperty,
+ listSpecification: state.configuration.valueSelector.listSpecification,
+ listData: state.configuration.valueSelector.listData,
+ vPath: state.configuration.viewDescription.vPath,
+ nodeId: state.configuration.deviceDescription.nodeId,
+ viewData: state.configuration.viewDescription.viewData,
+ viewSpecification: state.configuration.viewDescription.viewSpecification,
+ displayAsList: state.configuration.viewDescription.displayAsList,
+ keyProperty: state.configuration.viewDescription.keyProperty,
});
-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}`));
- })
+
+const mapDispatch = (dispatcher: IDispatcher) => ({
+ onValueSelected: (value: any) => dispatcher.dispatch(new SetSelectedValue(value)),
+ onUpdateData: (vPath: string, data: any) => dispatcher.dispatch(updateDataActionAsyncCreator(vPath, data)),
});
-type ConfigurationApplicationProps = Connect<typeof mapProps, typeof mapDisp>;
+const SelectElementTable = MaterialTable as MaterialTableCtorType<{ [key: string]: any }>;
-type ConfigurationApplicationState = {
+type ConfigurationApplicationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDispatch> & WithStyles<typeof styles>;
+type ConfigurationApplicationComponentState = {
+ isNew: boolean;
+ editMode: boolean;
+ canEdit: boolean;
+ viewData: { [key: string]: any } | null;
}
-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 this.props.coreModel && this.props.coreModel.ltp && this.props.coreModel.ltp.length
- ? (
- <>
- <h2>Please select an existing LP first !</h2>
- <ul>
- { 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>
- </>
- )
- : (
- <>
- <h2>No LTP / LP found !</h2>
- </>
- );
- } else if (!this.props.capability && !this.props.viewId) {
- return (
- <h2>Please select a capability or viewId first !</h2>
- );
+const OldProps = Symbol("OldProps");
+class ConfigurationApplicationComponent extends React.Component<ConfigurationApplicationComponentProps, ConfigurationApplicationComponentState> {
+
+ /**
+ *
+ */
+ constructor (props: ConfigurationApplicationComponentProps) {
+ super(props);
+
+ this.state = {
+ isNew: false,
+ canEdit: false,
+ editMode: false,
+ viewData: null
}
- 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> } */}
+ static getDerivedStateFromProps(nextProps: ConfigurationApplicationComponentProps, prevState: ConfigurationApplicationComponentState & { [OldProps]: ConfigurationApplicationComponentProps }) {
- </div>
- </>
- )
- : <h2>View [{this.props.viewId || this.props.conditionalPackage}] Not Found ! {this.props.viewSpecifications.length} </h2>;
+ if (!prevState || !prevState[OldProps] || (prevState[OldProps].viewData !== nextProps.viewData)) {
+ const isNew: boolean = nextProps.vPath?.endsWith("[]") || false;
+ const state = {
+ ...prevState,
+ isNew: isNew,
+ editMode: isNew,
+ viewData: nextProps.viewData || null,
+ [OldProps]: nextProps,
+ }
+ return state;
+ }
+ return null;
}
- 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 navigate = (path: string) => {
+ this.props.history.push(`${this.props.match.url}${path}`);
}
- private renderUIElement = (viewSpecification: ViewSpecification, viewData: { [key: string]: string | number }) => (
- viewSpecification.elements.map(uiElement => {
- if (uiElement.leafrefPath) {
- return null;
+ private changeValueFor = (property: string, value: any) => {
+ this.setState({
+ viewData: {
+ ...this.state.viewData,
+ [property]: value
}
- switch (uiElement.uiType) {
- case "selection":
- return (viewData[uiElement.id] != null
+ });
+ }
+
+ private renderUIElement = (viewSpecification: ViewSpecification, viewData: { [key: string]: any }, keyProperty: string | undefined, editMode: boolean, isNew: boolean) => {
+ const elements = viewSpecification.elements;
+ return (
+ Object.keys(elements).sort((a, b) => {
+ const vsA = elements[a];
+ const vsB = elements[b];
+ if (keyProperty) {
+ // if (vsA.label === vsB.label) return 0;
+ if (vsA.label === keyProperty) return -1;
+ if (vsB.label === keyProperty) return +1;
+ }
+
+ if (vsA.uiType === vsB.uiType) return 0;
+ if (vsA.uiType !== "object" && vsB.uiType !== "object") return 0;
+ if (vsA.uiType === "object") return +1;
+ return -1;
+ }).map(key => {
+ const uiElement = elements[key];
+ const isKey = (uiElement.label === keyProperty);
+ const canEdit = editMode && (isNew || (uiElement.config && !isKey));
+ if (isViewElementSelection(uiElement)) {
+ let error = ""
+ const value = String(viewData[uiElement.id]).toLowerCase();
+ if (uiElement.mandatory && !!value) {
+ error = "Error";
+ }
+ return (canEdit || 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 }
+ required={!!uiElement.mandatory}
+ error={!!error}
+ onChange={(e) => { this.changeValueFor(uiElement.id, e.target.value) }}
+ readOnly={!canEdit}
+ disabled={editMode && !canEdit}
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>))}
+ {uiElement.options.map(option => (<MenuItem key={option.key} title={option.description} value={option.value}>{option.key}</MenuItem>))}
</Select>
+ <FormHelperText>{error}</FormHelperText>
</FormControl>)
: null
);
- case "boolean":
- return (viewData[uiElement.id] != null
+ } else if (isViewElementBoolean(uiElement)) {
+ let error = ""
+ const value = String(viewData[uiElement.id]).toLowerCase();
+ if (uiElement.mandatory && value !== "true" && value !== "false") {
+ error = "Error";
+ }
+ return (canEdit || 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>
+ required={!!uiElement.mandatory}
+ error={!!error}
+ onChange={(e) => { this.changeValueFor(uiElement.id, e.target.value) }}
+ readOnly={!canEdit}
+ disabled={editMode && !canEdit}
+ value={value}
+ inputProps={{
+ name: uiElement.id,
+ id: `select-${uiElement.id}`,
+ }}
+ >
+ <MenuItem value={'true'}>{uiElement.trueValue || 'True'}</MenuItem>
+ <MenuItem value={'false'}>{uiElement.falseValue || 'False'}</MenuItem>
+
+ </Select>
+ <FormHelperText>{error}</FormHelperText>
</FormControl>)
: null
);
- case "string":
+ } else if (isViewElementString(uiElement)) {
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 }} />
+ <TextField InputProps={{ readOnly: !canEdit, disabled: editMode && !canEdit }} spellCheck={false} autoFocus margin="dense"
+ id={uiElement.id} label={isKey ? "🔑 " + uiElement.label : uiElement.label} type="text" value={viewData[uiElement.id] || ''}
+ style={{ width: 485, marginLeft: 20, marginRight: 20 }}
+ onChange={(e) => { this.changeValueFor(uiElement.id, e.target.value) }}
+ />
</Tooltip>
);
- case "number":
+ } else if (isViewElementNumber(uiElement)) {
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 }} />
+ <TextField InputProps={{ readOnly: !canEdit, disabled: editMode && !canEdit, startAdornment: uiElement.units != null ? <InputAdornment position="start">{uiElement.units}</InputAdornment> : undefined }} spellCheck={false} autoFocus margin="dense"
+ id={uiElement.id} label={uiElement.label} type="text" value={viewData[uiElement.id] == null ? '' : viewData[uiElement.id]}
+ style={{ width: 485, marginLeft: 20, marginRight: 20 }}
+ onChange={(e) => { this.changeValueFor(uiElement.id, e.target.value) }}
+ />
</Tooltip>
);
- case "list":
- case "object":
+ } else if (isViewElementObjectOrList(uiElement)) {
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>
+ <FormControl key={uiElement.id} style={{ width: 485, marginLeft: 20, marginRight: 20 }}>
+ <Tooltip title={uiElement.description || ''}>
+ <Button className={this.props.classes.leftButton} color="secondary" disabled={this.state.editMode} onClick={() => {
+ this.navigate(`/${uiElement.id}`);
+ }}>{uiElement.label}</Button>
+ </Tooltip>
+ </FormControl>
);
- default:
+ } else {
if (process.env.NODE_ENV !== "production") {
console.error(`Unknown type - ${(uiElement as any).uiType} in ${(uiElement as any).id}.`)
}
return null;
+ }
+ })
+ );
+ };
+
+ private renderUIElementList(listSpecification: ViewSpecification, listKeyProperty: string, listData: { [key: string]: any }[]) {
+ const listElements = listSpecification.elements;
+
+ const navigate = (path: string) => {
+ this.props.history.push(`${this.props.match.url}${path}`);
+ };
+
+ const addNewElementAction = {
+ icon: AddIcon, tooltip: 'Add', onClick: () => {
+ navigate("[]"); // empty key means new element
}
- })
- )
-
- 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 || ''));
+ };
+
+ const { classes } = this.props;
+
+ return (
+ <SelectElementTable idProperty={listKeyProperty} rows={listData} customActionButtons={[addNewElementAction]} columns={
+ Object.keys(listElements).reduce<ColumnModel<{ [key: string]: any }>[]>((acc, cur) => {
+ const elm = listElements[cur];
+ if (elm.uiType !== "object" && listData.every(entry => entry[elm.label] != null)) {
+ if (elm.label !== listKeyProperty) {
+ acc.push({ property: elm.label, type: elm.uiType === "number" ? ColumnType.numeric : ColumnType.text });
+ } else {
+ acc.unshift({ property: elm.label, type: elm.uiType === "number" ? ColumnType.numeric : ColumnType.text });
+ }
+ }
+ return acc;
+ }, []).concat([{
+ property: "Actions", disableFilter: true, disableSorting: true, type: ColumnType.custom, customControl: (row => {
+ return (
+ <Tooltip title={"Remove"} >
+ <IconButton className={classes.button} onClick={event => {
+
+ }} >
+ <RemoveIcon />
+ </IconButton>
+ </Tooltip>
+ )
+ })
+ }])
+ } onHandleClick={(ev, row) => {
+ ev.preventDefault();
+ navigate(`[${row[listKeyProperty]}]`);
+ }} ></SelectElementTable>
+ );
+ }
+
+ private renderBreadCrumps() {
+ const { editMode } = this.state;
+ const { viewSpecification, displayAsList } = this.props;
+ const { vPath, match: { url, path }, nodeId } = this.props;
+ const pathParts = splitVPath(vPath!, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
+ let lastPath = `/configuration`;
+ let basePath = `/configuration/${nodeId}`;
+ return (
+ <div className={this.props.classes.header}>
+ <div>
+ <Breadcrumbs aria-label="breadcrumb">
+ <Link color="inherit" href="#" onClick={(ev: React.MouseEvent<HTMLElement>) => {
+ ev.preventDefault();
+ this.props.history.push(lastPath);
+ }}>Back</Link>
+ <Link color="inherit" href="#" onClick={(ev: React.MouseEvent<HTMLElement>) => {
+ ev.preventDefault();
+ this.props.history.push(`/configuration/${nodeId}`);
+ }}><span>{nodeId}</span></Link>
+ {
+ pathParts.map(([prop, key], ind) => {
+ const path = `${basePath}/${prop}`;
+ const keyPath = key && `${basePath}/${prop}[${key}]`;
+ const ret = (
+ <span key={ind}>
+ <Link color="inherit" href="#" onClick={(ev: React.MouseEvent<HTMLElement>) => {
+ ev.preventDefault();
+ this.props.history.push(path);
+ }}><span>{prop.replace(/^[^:]+:/, "")}</span></Link>
+ {
+ keyPath && <Link color="inherit" href="#" onClick={(ev: React.MouseEvent<HTMLElement>) => {
+ ev.preventDefault();
+ this.props.history.push(keyPath);
+ }}>{`[${key}]`}</Link> || null
+ }
+ </span>
+ );
+ lastPath = basePath;
+ basePath = keyPath || path;
+ return ret;
+ })
+ }
+ </Breadcrumbs>
+ </div>
+ { /* do not show edit if this is a list or it can't be edited */
+ !displayAsList && viewSpecification.canEdit && (<div>
+ <Fab color="secondary" aria-label="edit" className={this.props.classes.fab} onClick={() => {
+ if (this.state.editMode) {
+ this.props.onUpdateData(this.props.vPath!, this.state.viewData);
+ }
+ this.setState({ editMode: !editMode });
+ }}>
+ {editMode
+ ? <SaveIcon />
+ : <EditIcon />
+ }
+ </Fab>
+ </div> || null)
+ }
+ </div>
+ );
+ }
+
+ private renderValueSelector() {
+ const { listKeyProperty, listSpecification, listData, onValueSelected } = this.props;
+ if (!listKeyProperty || !listSpecification) {
+ throw new Error("ListKex ot view not specified.");
}
- return result;
+
+ return (
+ <div>
+ <SelectElementTable idProperty={listKeyProperty} rows={listData} columns={
+ Object.keys(listSpecification.elements).reduce<ColumnModel<{ [key: string]: any }>[]>((acc, cur) => {
+ const elm = listSpecification.elements[cur];
+ if (elm.uiType !== "object" && listData.every(entry => entry[elm.label] != null)) {
+ if (elm.label !== listKeyProperty) {
+ acc.push({ property: elm.label, type: elm.uiType === "number" ? ColumnType.numeric : ColumnType.text });
+ } else {
+ acc.unshift({ property: elm.label, type: elm.uiType === "number" ? ColumnType.numeric : ColumnType.text });
+ }
+ }
+ return acc;
+ }, [])
+ } onHandleClick={(ev, row) => { ev.preventDefault(); onValueSelected(row); }} ></SelectElementTable>
+ </div>
+ );
+ }
+
+ private renderValueEditor() {
+ const { keyProperty, displayAsList, viewSpecification } = this.props;
+ const { viewData, editMode, isNew } = this.state;
+
+ return (
+ <div>
+ { this.renderBreadCrumps() }
+ { displayAsList && viewData instanceof Array
+ ? this.renderUIElementList(viewSpecification, keyProperty!, viewData)
+ : this.renderUIElement(viewSpecification, viewData!, keyProperty, editMode, isNew)
+ }
+ </div >
+ );
+ }
+
+ private renderCollectingData() {
+ return (
+ <div className={this.props.classes.outer}>
+ <div className={this.props.classes.inner}>
+ <Loader />
+ <h3>Collecting Data ...</h3>
+ </div>
+ </div>
+ );
+ }
+
+ render() {
+ return this.props.collectingData || !this.state.viewData
+ ? this.renderCollectingData()
+ : this.props.listSpecification
+ ? this.renderValueSelector()
+ : this.renderValueEditor();
}
}
-export const ConfigurationApplication = connect(mapProps, mapDisp)(ConfigurationApplicationComponent);
+export const ConfigurationApplication = withStyles(styles)(withRouter(connect(mapProps, mapDispatch)(ConfigurationApplicationComponent)));
export default ConfigurationApplication; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/views/networkElementSelector.tsx b/sdnr/wt/odlux/apps/configurationApp/src/views/networkElementSelector.tsx
new file mode 100644
index 000000000..6fd5c8cf0
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/views/networkElementSelector.tsx
@@ -0,0 +1,47 @@
+import * as React from 'react';
+import { RouteComponentProps, withRouter } from 'react-router-dom';
+
+import connect, { IDispatcher, Connect } from "../../../../framework/src/flux/connect";
+import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore";
+import { MaterialTable, MaterialTableCtorType, ColumnType } from "../../../../framework/src/components/material-table";
+import { createConnectedNetworkElementsProperties, createConnectedNetworkElementsActions } from "../../../configurationApp/src/handlers/connectedNetworkElementsHandler";
+
+import { NetworkElementConnection } from "../models/networkElementConnection";
+import { Tooltip, Button, IconButton } from "@material-ui/core";
+
+const mapProps = (state: IApplicationStoreState) => ({
+ connectedNetworkElementsProperties: createConnectedNetworkElementsProperties(state),
+});
+
+const mapDispatch = (dispatcher: IDispatcher) => ({
+ connectedNetworkElementsActions: createConnectedNetworkElementsActions(dispatcher.dispatch),
+});
+
+const ConnectedElementTable = MaterialTable as MaterialTableCtorType<NetworkElementConnection>;
+
+type NetworkElementSelectorComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDispatch>;
+
+class NetworkElementSelectorComponent extends React.Component<NetworkElementSelectorComponentProps> {
+
+ componentDidMount() {
+ this.props.connectedNetworkElementsActions.onRefresh();
+ }
+
+ render() {
+ return (
+ <ConnectedElementTable onHandleClick={(e, row) => { this.props.history.push(`${ this.props.match.path }/${row.nodeId}`) }} columns={[
+ { property: "nodeId", title: "Name", type: ColumnType.text },
+ { property: "isRequired", title: "Required ?", type: ColumnType.boolean },
+ { property: "host", title: "Host", type: ColumnType.text },
+ { property: "port", title: "Port", type: ColumnType.numeric },
+ { property: "coreModelCapability", title: "Core Model", type: ColumnType.text },
+ { property: "deviceType", title: "Type", type: ColumnType.text },
+ ]} idProperty="id" {...this.props.connectedNetworkElementsActions} {...this.props.connectedNetworkElementsProperties} asynchronus >
+ </ConnectedElementTable>
+ );
+ }
+}
+
+export const NetworkElementSelector = withRouter(connect(mapProps, mapDispatch)(NetworkElementSelectorComponent));
+export default NetworkElementSelector;
+
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/yang/yangParser.ts b/sdnr/wt/odlux/apps/configurationApp/src/yang/yangParser.ts
new file mode 100644
index 000000000..c7ab5e4a3
--- /dev/null
+++ b/sdnr/wt/odlux/apps/configurationApp/src/yang/yangParser.ts
@@ -0,0 +1,1099 @@
+
+import { Token, Statement, Module, Identity } from "../models/yang";
+import { ViewSpecification, ViewElement, isViewElementObjectOrList, ViewElementBase, isViewElementReference } from "../models/uiModels";
+import { yangService } from "../services/yangService";
+
+export const splitVPath = (vPath: string, vPathParser: RegExp): RegExpMatchArray[] => {
+ const pathParts: RegExpMatchArray[] = [];
+ let partMatch: RegExpExecArray | null;
+ if (vPath) do {
+ partMatch = vPathParser.exec(vPath);
+ if (partMatch) {
+ pathParts.push(partMatch);
+ }
+ } while (partMatch)
+ return pathParts;
+}
+
+class YangLexer {
+
+ private pos: number = 0;
+ private buf: string = "";
+
+ constructor(input: string) {
+ this.pos = 0;
+ this.buf = input;
+ }
+
+ private _optable: { [key: string]: string } = {
+ ';': 'SEMI',
+ '{': 'L_BRACE',
+ '}': 'R_BRACE',
+ };
+
+ private _isNewline(char: string): boolean {
+ return char === '\r' || char === '\n';
+ }
+
+ private _isWhitespace(char: string): boolean {
+ return char === ' ' || char === '\t' || this._isNewline(char);
+ }
+
+ private _isDigit(char: string): boolean {
+ return char >= '0' && char <= '9';
+ }
+
+ private _isAlpha(char: string): boolean {
+ return (char >= 'a' && char <= 'z') ||
+ (char >= 'A' && char <= 'Z')
+ }
+
+ private _isAlphanum(char: string): boolean {
+ return this._isAlpha(char) || this._isDigit(char) ||
+ char === '_' || char === '-' || char === '.';
+ }
+
+ private _skipNontokens() {
+ while (this.pos < this.buf.length) {
+ const char = this.buf.charAt(this.pos);
+ if (this._isWhitespace(char)) {
+ this.pos++;
+ } else {
+ break;
+ }
+ }
+ }
+
+ private _processString(terminator: string | null): Token {
+ // this.pos points at the opening quote. Find the ending quote.
+ let end_index = this.pos + 1;
+ while (end_index < this.buf.length) {
+ const char = this.buf.charAt(end_index);
+ if (char === "\\") {
+ end_index += 2;
+ continue;
+ };
+ if (terminator === null && (this._isWhitespace(char) || this._optable[char] !== undefined) || char === terminator) {
+ break;
+ }
+ end_index++;
+ }
+
+ if (end_index >= this.buf.length) {
+ throw Error('Unterminated quote at ' + this.pos);
+ } else {
+ const start = this.pos + (terminator ? 1 : 0);
+ const end = end_index;
+ const tok = {
+ name: 'STRING',
+ value: this.buf.substring(start, end),
+ start,
+ end
+ };
+ this.pos = terminator ? end + 1 : end;
+ return tok;
+ }
+ }
+
+ private _processIdentifier(): Token {
+ let endpos = this.pos + 1;
+ while (endpos < this.buf.length &&
+ this._isAlphanum(this.buf.charAt(endpos))) {
+ endpos++;
+ }
+
+ const tok = {
+ name: 'IDENTIFIER',
+ value: this.buf.substring(this.pos, endpos),
+ start: this.pos,
+ end: endpos
+ };
+ this.pos = endpos;
+ return tok;
+ }
+
+ private _processNumber(): Token {
+ let endpos = this.pos + 1;
+ while (endpos < this.buf.length &&
+ this._isDigit(this.buf.charAt(endpos))) {
+ endpos++;
+ }
+
+ const tok = {
+ name: 'NUMBER',
+ value: this.buf.substring(this.pos, endpos),
+ start: this.pos,
+ end: endpos
+ };
+ this.pos = endpos;
+ return tok;
+ }
+
+ private _processLineComment() {
+ var endpos = this.pos + 2;
+ // Skip until the end of the line
+ while (endpos < this.buf.length && !this._isNewline(this.buf.charAt(endpos))) {
+ endpos++;
+ }
+ this.pos = endpos + 1;
+ }
+
+ private _processBlockComment() {
+ var endpos = this.pos + 2;
+ // Skip until the end of the line
+ while (endpos < this.buf.length && !((this.buf.charAt(endpos) === "/" && this.buf.charAt(endpos - 1) === "*"))) {
+ endpos++;
+ }
+ this.pos = endpos + 1;
+ }
+
+ public tokenize(): Token[] {
+ const result: Token[] = [];
+ this._skipNontokens();
+ while (this.pos < this.buf.length) {
+
+ const char = this.buf.charAt(this.pos);
+ const op = this._optable[char];
+
+ if (op !== undefined) {
+ result.push({ name: op, value: char, start: this.pos, end: ++this.pos });
+ } else if (this._isAlpha(char)) {
+ result.push(this._processIdentifier());
+ this._skipNontokens();
+ const peekChar = this.buf.charAt(this.pos);
+ if (this._optable[peekChar] === undefined) {
+ result.push((peekChar !== "'" && peekChar !== '"')
+ ? this._processString(null)
+ : this._processString(peekChar));
+ }
+ } else if (char === '/' && this.buf.charAt(this.pos + 1) === "/") {
+ this._processLineComment();
+ } else if (char === '/' && this.buf.charAt(this.pos + 1) === "*") {
+ this._processBlockComment();
+ } else {
+ throw Error('Token error at ' + this.pos + " " + this.buf[this.pos]);
+ }
+ this._skipNontokens();
+ }
+ return result;
+ }
+
+ public tokenize2(): Statement {
+ let stack: Statement[] = [{ key: "ROOT", sub: [] }];
+ let current: Statement | null = null;
+
+ this._skipNontokens();
+ while (this.pos < this.buf.length) {
+
+ const char = this.buf.charAt(this.pos);
+ const op = this._optable[char];
+
+ if (op !== undefined) {
+ if (op === "L_BRACE") {
+ current && stack.unshift(current);
+ current = null;
+ } else if (op === "R_BRACE") {
+ current = stack.shift() || null;
+ }
+ this.pos++;
+ } else if (this._isAlpha(char)) {
+ const key = this._processIdentifier().value;
+ this._skipNontokens();
+ let peekChar = this.buf.charAt(this.pos);
+ let arg = undefined;
+ if (this._optable[peekChar] === undefined) {
+ arg = (peekChar === '"' || peekChar === "'")
+ ? this._processString(peekChar).value
+ : this._processString(null).value;
+ }
+ do {
+ this._skipNontokens();
+ peekChar = this.buf.charAt(this.pos);
+ if (peekChar !== "+") break;
+ this.pos++;
+ this._skipNontokens();
+ peekChar = this.buf.charAt(this.pos);
+ arg += (peekChar === '"' || peekChar === "'")
+ ? this._processString(peekChar).value
+ : this._processString(null).value;
+ } while (true);
+ current = { key, arg, sub: [] };
+ stack[0].sub!.push(current);
+ } else if (char === '/' && this.buf.charAt(this.pos + 1) === "/") {
+ this._processLineComment();
+ } else if (char === '/' && this.buf.charAt(this.pos + 1) === "*") {
+ this._processBlockComment();
+ } else {
+ throw Error('Token error at ' + this.pos + " " + this.buf.slice(this.pos - 10, this.pos + 10));
+ }
+ this._skipNontokens();
+ }
+ if (stack[0].key !== "ROOT" || !stack[0].sub![0]) {
+ throw new Error("Internal Perser Error");
+ }
+ return stack[0].sub![0];
+ }
+}
+
+export class YangParser {
+ private _groupingsToResolve: (() => void)[] = [];
+ private _identityToResolve: (() => void)[] = [];
+
+ private _modules: { [name: string]: Module } = {};
+ private _views: ViewSpecification[] = [{
+ id: "0",
+ name: "root",
+ language: "en-US",
+ canEdit: false,
+ parentView: "0",
+ title: "root",
+ elements: {},
+ }];
+
+ constructor() {
+
+ }
+
+ public get modules() {
+ return this._modules;
+ }
+
+ public get views() {
+ return this._views;
+ }
+
+ public async addCapability(capability: string, version?: string) {
+ // do not add twice
+ if (this._modules[capability]) {
+ return;
+ }
+
+ const data = await yangService.getCapability(capability, version);
+ if (!data) {
+ throw new Error(`Could not load yang file for ${capability}.`);
+ }
+
+ const rootStatement = new YangLexer(data).tokenize2();
+
+ if (rootStatement.key !== "module") {
+ throw new Error(`Root element of ${capability} is not a module.`);
+ }
+ if (rootStatement.arg !== capability) {
+ throw new Error(`Root element capability ${rootStatement.arg} does not requested ${capability}.`);
+ }
+
+ const module = this._modules[capability] = {
+ name: rootStatement.arg,
+ revisions: {},
+ imports: {},
+ features: {},
+ identities: {},
+ augments: {},
+ groupings: {},
+ typedefs: {},
+ views: {},
+ elements: {}
+ };
+
+ await this.handleModule(module, rootStatement, capability);
+ }
+
+ private async handleModule(module: Module, rootStatement: Statement, capability: string) {
+
+ // extract namespace && prefix
+ module.namespace = this.extractValue(rootStatement, "namespace");
+ module.prefix = this.extractValue(rootStatement, "prefix");
+ if (module.prefix) {
+ module.imports[module.prefix] = capability;
+ }
+
+ // extract revisions
+ const revisions = this.extractNodes(rootStatement, "revision");
+ module.revisions = {
+ ...module.revisions,
+ ...revisions.reduce<{ [version: string]: { }}>((acc, version) => {
+ if (!version.arg) {
+ throw new Error(`Module [${module.name}] has a version w/o version number.`);
+ }
+ const description = this.extractValue(version, "description");
+ const reference = this.extractValue(version,"reference");
+ acc[version.arg] = {
+ description,
+ reference,
+ };
+ return acc;
+ }, {})
+ };
+
+ // extract features
+ const features = this.extractNodes(rootStatement, "feature");
+ module.features = {
+ ...module.features,
+ ...features.reduce<{ [version: string]: {} }>((acc, feature) => {
+ if (!feature.arg) {
+ throw new Error(`Module [${module.name}] has a feature w/o name.`);
+ }
+ const description = this.extractValue(feature, "description");
+ acc[feature.arg] = {
+ description,
+ };
+ return acc;
+ }, {})
+ };
+
+ // extract imports
+ const imports = this.extractNodes(rootStatement, "import");
+ module.imports = {
+ ...module.imports,
+ ...imports.reduce < { [key: string]: string }>((acc, imp) => {
+ const prefix = imp.sub && imp.sub.filter(s => s.key === "prefix");
+ if (!imp.arg) {
+ throw new Error(`Module [${module.name}] has an import with neither name nor prefix.`);
+ }
+ acc[prefix && prefix.length === 1 && prefix[0].arg || imp.arg] = imp.arg;
+ return acc;
+ }, {})
+ };
+
+ // import all required files
+ if (imports) for (let ind = 0; ind < imports.length; ++ind) {
+ await this.addCapability(imports[ind].arg!);
+ }
+
+ this.extractTypeDefinitions(rootStatement, module, "");
+
+ this.extractIdentites(rootStatement, 0, module, "");
+
+ const groupings = this.extractGroupings(rootStatement, 0, module, "");
+ this._views.push(...groupings);
+
+ const augments = this.extractAugments(rootStatement, 0, module, "");
+ this._views.push(...augments);
+
+ // the default for config on module level is config = true;
+ const [currentView, subViews] = this.extractSubViews(rootStatement, 0, module, "");
+ this._views.push(currentView, ...subViews);
+
+ // create the root elements for this module
+ module.elements = currentView.elements;
+ Object.keys(module.elements).forEach(key => {
+ const viewElement = module.elements[key];
+ if (!isViewElementObjectOrList(viewElement)) {
+ throw new Error(`Module: [${module}]. Only List or Object allowed on root level.`);
+ }
+ const viewIdIndex = Number(viewElement.viewId);
+ module.views[key] = this._views[viewIdIndex];
+ this._views[0].elements[key] = module.elements[key];
+ });
+ return module;
+ }
+
+ public postProcess() {
+ // process all groupings
+ // execute all post processes like resolving in propper order
+ this._groupingsToResolve.forEach(cb => {
+ try { cb(); } catch (error) {
+ console.warn(`Error resolving: [${error.message}]`);
+ }
+ });
+
+ // process all augmentations
+ Object.keys(this.modules).forEach(modKey => {
+ const module = this.modules[modKey];
+ Object.keys(module.augments).forEach(augKey => {
+ const augments = module.augments[augKey];
+ const viewSpec = this.resolveView(augKey);
+ if (!viewSpec) console.warn(`Could not find view to augment [${augKey}] in [${module.name}].`);
+ if (augments && viewSpec) {
+ augments.forEach(augment => Object.keys(augment.elements).forEach(key => {
+ const elm = augment.elements[key];
+ viewSpec.elements[key] = {
+ ...augment.elements[key],
+ when: elm.when ? `(${augment.when}) and (${elm.when})` : augment.when,
+ ifFeature: elm.ifFeature ? `(${augment.ifFeature}) and (${elm.ifFeature})` : augment.ifFeature,
+ };
+ }));
+ }
+ });
+ });
+
+ // process Identities
+ const traverseIdentity = (identities : Identity[]) => {
+ const result: Identity[] = [];
+ for (let identity of identities) {
+ if (identity.children && identity.children.length > 0) {
+ result.push(...traverseIdentity(identity.children));
+ } else {
+ result.push(identity);
+ }
+ }
+ return result;
+ }
+
+
+ const baseIdentites: Identity[] = [];
+ Object.keys(this.modules).forEach(modKey => {
+ const module = this.modules[modKey];
+ Object.keys(module.identities).forEach(idKey => {
+ const identity = module.identities[idKey];
+ if (identity.base != null) {
+ const base = this.resolveIdentity(identity.base, module);
+ base.children?.push(identity);
+ } else {
+ baseIdentites.push(identity);
+ }
+ });
+ });
+ baseIdentites.forEach(identity => {
+ identity.values = identity.children && traverseIdentity(identity.children) || [];
+ });
+
+ this._identityToResolve.forEach(cb => {
+ try { cb(); } catch (error) {
+ console.warn(error.message);
+ }
+ });
+ };
+
+
+ private _nextId = 1;
+ private get nextId() {
+ return this._nextId++;
+ }
+
+ private extractNodes(statement: Statement, key: string): Statement[] {
+ return statement.sub && statement.sub.filter(s => s.key === key) || [];
+ }
+
+ private extractValue(statement: Statement, key: string): string | undefined;
+ private extractValue(statement: Statement, key: string, parser: RegExp): RegExpExecArray | undefined;
+ private extractValue(statement: Statement, key: string, parser?: RegExp): string | RegExpExecArray | undefined {
+ const typeNodes = this.extractNodes(statement, key);
+ const rawValue = typeNodes.length > 0 && typeNodes[0].arg || undefined;
+ return parser
+ ? rawValue && parser.exec(rawValue) || undefined
+ : rawValue;
+ }
+
+ private extractTypeDefinitions(statement: Statement, module: Module, currentPath: string): void {
+ const typedefs = this.extractNodes(statement, "typedef");
+ typedefs && typedefs.forEach(def => {
+ if (! def.arg) {
+ throw new Error(`Module: [${module.name}]. Found typefed without name.`);
+ }
+ module.typedefs[def.arg] = this.getViewElement(def, module, 0, currentPath, false);
+ });
+ }
+
+ /** Handles Goupings like named Container */
+ private extractGroupings(statement: Statement, parentId: number, module: Module, currentPath: string): ViewSpecification[] {
+ const subViews: ViewSpecification[] = [];
+ const groupings = this.extractNodes(statement, "grouping");
+ if (groupings && groupings.length > 0) {
+ subViews.push(...groupings.reduce<ViewSpecification[]>((acc, cur) => {
+ if (!cur.arg) {
+ throw new Error(`Module: [${module.name}][${currentPath}]. Found grouping without name.`);
+ }
+ const grouping = cur.arg;
+
+ // the default for config on module level is config = true;
+ const [currentView, subViews] = this.extractSubViews(cur, parentId, module, currentPath);
+ grouping && (module.groupings[grouping] = currentView);
+ acc.push(currentView, ...subViews);
+ return acc;
+ }, []));
+ }
+
+ return subViews;
+ }
+
+ /** Handles Augmants also like named Container */
+ private extractAugments(statement: Statement, parentId: number, module: Module, currentPath: string): ViewSpecification[] {
+ const subViews: ViewSpecification[] = [];
+ const augments = this.extractNodes(statement, "augment");
+ if (augments && augments.length > 0) {
+ subViews.push(...augments.reduce<ViewSpecification[]>((acc, cur) => {
+ if (!cur.arg) {
+ throw new Error(`Module: [${module.name}][${currentPath}]. Found augment without path.`);
+ }
+ const augment = this.resolveReferencePath(cur.arg, module);
+
+ // the default for config on module level is config = true;
+ const [currentView, subViews] = this.extractSubViews(cur, parentId, module, currentPath);
+ if (augment) {
+ module.augments[augment] = module.augments[augment] || [];
+ module.augments[augment].push(currentView);
+ }
+ acc.push(currentView, ...subViews);
+ return acc;
+ }, []));
+ }
+
+ return subViews;
+ }
+
+ /** Handles Identities */
+ private extractIdentites(statement: Statement, parentId: number, module: Module, currentPath: string) {
+ const identities = this.extractNodes(statement, "identity");
+ module.identities = identities.reduce<{ [name: string]: Identity }>((acc, cur) => {
+ if (!cur.arg) {
+ throw new Error(`Module: [${module.name}][${currentPath}]. Found identiy without name.`);
+ }
+ acc[cur.arg] = {
+ id: `${module.name}:${cur.arg}`,
+ label: cur.arg,
+ base: this.extractValue(cur, "base"),
+ description: this.extractValue(cur, "description"),
+ reference: this.extractValue(cur, "reference"),
+ children: []
+ }
+ return acc;
+ }, {});
+ }
+
+ private extractSubViews(statement: Statement, parentId: number, module: Module, currentPath: string): [ViewSpecification, ViewSpecification[]] {
+ const subViews: ViewSpecification[] = [];
+ const currentId = this.nextId;
+ let elements: ViewElement[] = [];
+
+ const configValue = this.extractValue(statement, "config");
+ const config = configValue == null ? true : configValue.toLocaleLowerCase() !== "false";
+
+ // extract conditions
+ const ifFeature = this.extractValue(statement, "if-feature");
+ const whenCondition = this.extractValue(statement, "when");
+
+ // extract all container
+ const container = this.extractNodes(statement, "container");
+ if (container && container.length > 0) {
+ subViews.push(...container.reduce<ViewSpecification[]>((acc, cur) => {
+ if (!cur.arg) {
+ throw new Error(`Module: [${module.name}]. Found container without name.`);
+ }
+ const [currentView, subViews] = this.extractSubViews(cur, currentId, module, `${currentPath}/${module.name}:${cur.arg}`);
+ elements.push({
+ id: parentId === 0 ? `${module.name}:${cur.arg}` : cur.arg,
+ label: cur.arg,
+ uiType: "object",
+ viewId: currentView.id,
+ config: config
+ });
+ acc.push(currentView, ...subViews);
+ return acc;
+ }, []));
+ }
+
+ // process all lists
+ // a list is a list of containers with the leafs contained in the list
+ const lists = this.extractNodes(statement, "list");
+ if (lists && lists.length > 0) {
+ subViews.push(...lists.reduce<ViewSpecification[]>((acc, cur) => {
+ if (!cur.arg) {
+ throw new Error(`Module: [${module.name}]. Found list without name.`);
+ }
+ const key = this.extractValue(cur, "key") || undefined;
+ if (config && !key) {
+ throw new Error(`Module: [${module.name}]. Found configurable list without key.`);
+ }
+ const [currentView, subViews] = this.extractSubViews(cur, currentId, module, `${currentPath}/${module.name}:${cur.arg}`);
+ elements.push({
+ id: parentId === 0 ? `${module.name}:${cur.arg}` : cur.arg,
+ label: cur.arg,
+ isList: true,
+ uiType: "object",
+ viewId: currentView.id,
+ key: key,
+ config: config
+ });
+ acc.push(currentView, ...subViews);
+ return acc;
+ }, []));
+ }
+
+ // process all leaf-lists
+ // a leaf-list is a list of some type
+ const leafLists = this.extractNodes(statement, "leaf-list");
+ if (leafLists && leafLists.length > 0) {
+ elements.push(...leafLists.reduce<ViewElement[]>((acc, cur) => {
+ const element = this.getViewElement(cur, module, parentId, currentPath, true);
+ element && acc.push(element);
+ return acc;
+ }, []));
+ }
+
+ // process all leafs
+ // a leaf is mainly a property of an object
+ const leafs = this.extractNodes(statement, "leaf");
+ if (leafs && leafs.length > 0) {
+ elements.push(...leafs.reduce<ViewElement[]>((acc, cur) => {
+ const element = this.getViewElement(cur, module, parentId, currentPath, false);
+ element && acc.push(element);
+ return acc;
+ }, []));
+ }
+
+
+ const choiceStms = this.extractNodes(statement, "choice");
+ if (choiceStms && choiceStms.length > 0) {
+ for (let i = 0; i < choiceStms.length; ++i) {
+ const cases = this.extractNodes(choiceStms[i], "case");
+ console.warn(`Choice found ${choiceStms[i].arg}::${cases.map(c => c.arg).join(";")}`, choiceStms[i]);
+ }
+ }
+
+ const rpcs = this.extractNodes(statement, "rpc");
+ if (rpcs && rpcs.length > 0) {
+ // todo:
+ }
+
+ if (!statement.arg) {
+ throw new Error(`Module: [${module.name}]. Found statement without name.`);
+ }
+
+ const viewSpec: ViewSpecification = {
+ id: String(currentId),
+ parentView: String(parentId),
+ name: statement.arg,
+ title: statement.arg,
+ language: "en-us",
+ canEdit: false,
+ ifFeature: ifFeature,
+ when: whenCondition,
+ elements: elements.reduce<{ [name: string]: ViewElement }>((acc, cur) => {
+ acc[cur.id] = cur;
+ return acc;
+ }, {}),
+ };
+
+ // evaluate canEdit depending on all conditions
+ Object.defineProperty(viewSpec, "canEdit", {
+ get: () => {
+ return Object.keys(viewSpec.elements).some(key => {
+ const elm = viewSpec.elements[key];
+ return (!isViewElementObjectOrList(elm) && elm.config);
+ });
+ }
+ });
+
+ // merge in all uses references and resolve groupings
+ const usesRefs = this.extractNodes(statement, "uses");
+ if (usesRefs && usesRefs.length > 0) {
+
+ viewSpec.uses = (viewSpec.uses || []);
+ for (let i = 0; i < usesRefs.length; ++i) {
+ const groupingName = usesRefs[i].arg;
+ if (!groupingName) {
+ throw new Error(`Module: [${module.name}]. Found an uses statement without a grouping name.`);
+ }
+
+ viewSpec.uses.push(this.resolveReferencePath(groupingName, module));
+
+ this._groupingsToResolve.push(() => {
+ const groupingViewSpec = this.resolveGrouping(groupingName, module);
+ if (groupingViewSpec) {
+ Object.keys(groupingViewSpec.elements).forEach(key => {
+ const elm = groupingViewSpec.elements[key];
+ viewSpec.elements[key] = {
+ ...groupingViewSpec.elements[key],
+ when: elm.when ? `(${groupingViewSpec.when}) and (${elm.when})` : groupingViewSpec.when,
+ ifFeature: elm.ifFeature ? `(${groupingViewSpec.ifFeature}) and (${elm.ifFeature})` : groupingViewSpec.ifFeature,
+ };
+ });
+ }
+ });
+ }
+ }
+
+ return [viewSpec, subViews];
+ }
+
+ /** Extracts the UI View from the type in the cur statement. */
+ private getViewElement(cur: Statement, module: Module, parentId: number, currentPath: string, isList: boolean): ViewElement {
+
+ const type = this.extractValue(cur, "type");
+ const defaultVal = this.extractValue(cur, "default") || undefined;
+ const description = this.extractValue(cur, "description") || undefined;
+ const rangeMatch = this.extractValue(cur, "range", /^(\d+)\.\.(\d+)/) || undefined;
+
+ const configValue = this.extractValue(cur, "config");
+ const config = configValue == null ? true : configValue.toLocaleLowerCase() !== "false";
+
+ const mandatory = this.extractValue(cur, "mandatory") === "true" || false;
+
+ if (!cur.arg) {
+ throw new Error(`Module: [${module.name}]. Found element without name.`);
+ }
+
+ if (!type) {
+ throw new Error(`Module: [${module.name}].[${cur.arg}]. Found element without type.`);
+ }
+
+ const element: ViewElementBase = {
+ id: parentId === 0 ? `${module.name}:${cur.arg}`: cur.arg,
+ label: cur.arg,
+ config: config,
+ mandatory: mandatory,
+ isList: isList,
+ default: defaultVal,
+ description: description
+ };
+
+ if (type === "string") {
+ return ({
+ ...element,
+ uiType: "string",
+ pattern: this.extractNodes(this.extractNodes(cur, "type")[0]!, "pattern").map(p => p.arg!).filter(p => !!p),
+ });
+ } else if (type === "boolean") {
+ return ({
+ ...element,
+ uiType: "boolean"
+ });
+ } else if (type === "uint8") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +255,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "uint16") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +65535,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "uint32") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +4294967295,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "uint64") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +18446744073709551615,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "int8") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : -128,
+ max: rangeMatch ? Number(rangeMatch[1]) : +127,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "int16") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : -32768,
+ max: rangeMatch ? Number(rangeMatch[1]) : +32767,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "int32") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : -2147483648,
+ max: rangeMatch ? Number(rangeMatch[1]) : +2147483647,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "int64") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +18446744073709551615,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ });
+ } else if (type === "decimal16") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +18446744073709551615,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ fDigits: Number(this.extractValue(this.extractNodes(cur, "type")[0]!, "fraction-digits")) || -1
+ });
+ } else if (type === "decimal32") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +18446744073709551615,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ fDigits: Number(this.extractValue(this.extractNodes(cur, "type")[0]!, "fraction-digits")) || -1
+ });
+ } else if (type === "decimal64") {
+ return ({
+ ...element,
+ uiType: "number",
+ min: rangeMatch ? Number(rangeMatch[0]) : 0,
+ max: rangeMatch ? Number(rangeMatch[1]) : +18446744073709551615,
+ units: this.extractValue(cur, "units") || undefined,
+ format: this.extractValue(cur, "format") || undefined,
+ fDigits: Number(this.extractValue(this.extractNodes(cur, "type")[0]!, "fraction-digits")) || -1
+ });
+ } else if (type === "enumeration") {
+ const typeNode = this.extractNodes(cur, "type")[0]!;
+ const enumNodes = this.extractNodes(typeNode, "enum");
+ return ({
+ ...element,
+ uiType: "selection",
+ options: enumNodes.reduce<{ key: string; value: string; description?: string }[]>((acc, enumNode) => {
+ if (!enumNode.arg) {
+ throw new Error(`Module: [${module.name}][${currentPath}][${cur.arg}]. Found option without name.`);
+ }
+ const ifClause = this.extractValue(enumNode, "if-feature");
+ const value = this.extractValue(enumNode, "value");
+ const enumOption = {
+ key: enumNode.arg,
+ value: value != null ? value : enumNode.arg,
+ description: this.extractValue(enumNode, "description") || undefined
+ };
+ // todo: ❗ handle the if clause ⚡
+ acc.push(enumOption);
+ return acc;
+ }, [])
+ });
+ } else if (type === "leafref") {
+ const typeNode = this.extractNodes(cur, "type")[0]!;
+ const vPath = this.extractValue(typeNode, "path");
+ if (!vPath) {
+ throw new Error(`Module: [${module.name}][${currentPath}][${cur.arg}]. Found leafref without path.`);
+ }
+ const refPath = this.resolveReferencePath(vPath, module);
+ const resolve = this.resolveReference.bind(this);
+ const res : ViewElement = {
+ ...element,
+ uiType: "reference",
+ referencePath: refPath,
+ ref(this: ViewElement, currentPath: string) {
+ const resolved = resolve(refPath, currentPath);
+ return resolved && {
+ ...resolved,
+ id: this.id,
+ label: this.label,
+ config: this.config,
+ mandatory: this.mandatory,
+ isList: this.isList,
+ default: this.default,
+ description: this.description,
+ } as ViewElement;
+ }
+ };
+ return res;
+ } else if (type === "identityref") {
+ const typeNode = this.extractNodes(cur, "type")[0]!;
+ const base = this.extractValue(typeNode, "base");
+ if (!base) {
+ throw new Error(`Module: [${module.name}][${currentPath}][${cur.arg}]. Found identityref without base.`);
+ }
+ const res: ViewElement = {
+ ...element,
+ uiType: "selection",
+ options: []
+ };
+ this._identityToResolve.push(() => {
+ const identity : Identity = this.resolveIdentity(base, module);
+ if (!identity) {
+ throw new Error(`Module: [${module.name}][${currentPath}][${cur.arg}]. Could not resolve identity [${base}].`);
+ }
+ if (!identity.values || identity.values.length === 0) {
+ throw new Error(`Identity: [${base}] has no values.`);
+ }
+ res.options = identity.values.map(val => ({
+ key: val.id,
+ value: val.id,
+ description: val.description
+ }));
+ });
+ return res ;
+ } else if (type === "empty") {
+ // todo: ❗ handle empty ⚡
+ /* 9.11. The empty Built-In Type
+ The empty built-in type represents a leaf that does not have any
+ value, it conveys information by its presence or absence. */
+ console.warn(`found type: empty in [${module.name}][${currentPath}][${element.label}]`);
+ return {
+ ...element,
+ uiType: "string",
+ };
+ } else if (type === "union") {
+ // todo: ❗ handle union ⚡
+ /* 9.12. The union Built-In Type */
+ console.warn(`found type: union in [${module.name}][${currentPath}][${element.label}]`);
+ return {
+ ...element,
+ uiType: "string",
+ };
+ } else if (type === "bits") {
+ const typeNode = this.extractNodes(cur, "type")[0]!;
+ const bitNodes = this.extractNodes(typeNode, "bit");
+ return {
+ ...element,
+ uiType: "bits",
+ flags: bitNodes.reduce<{[name: string]: number | undefined; }>((acc, bitNode) => {
+ if (!bitNode.arg) {
+ throw new Error(`Module: [${module.name}][${currentPath}][${cur.arg}]. Found bit without name.`);
+ }
+ const ifClause = this.extractValue(bitNode, "if-feature");
+ const pos = Number(this.extractValue(bitNode, "position"));
+ acc[bitNode.arg] = pos === pos ? pos : undefined;
+ return acc;
+ }, {})
+ };
+ } else if (type === "binary") {
+ const typeNode = this.extractNodes(cur, "type")[0]!;
+ const length = Number(this.extractValue(typeNode, "length"));
+ return {
+ ...element,
+ uiType: "binary",
+ length: length === length ? length : undefined
+ };
+ } else {
+ // not a build in type, have to resolve type
+ const typeRef = this.resolveType(type, module);
+ if (typeRef == null) console.error(new Error(`Could not resolve type ${type} in [${module.name}][${currentPath}].`));
+ return ({
+ ...typeRef,
+ ...element,
+ description: description
+ }) as ViewElement;
+ }
+ }
+
+ private resolveReferencePath(vPath: string, module: Module) {
+ const vPathParser = /(?:(?:([^\/\:]+):)?([^\/]+))/g // 1 = opt: namespace / 2 = property
+ return vPath.replace(vPathParser, (_, ns, property) => {
+ const nameSpace = ns && module.imports[ns] || module.name;
+ return `${nameSpace}:${property}`;
+ });
+ }
+
+
+ private resolveReference(vPath: string, currentPath: string) {
+ const vPathParser = /(?:(?:([^\/\[\]\:]+):)?([^\/\[\]]+)(\[[^\]]+\])?)/g // 1 = opt: namespace / 2 = property / 3 = opt: indexPath
+ let element : ViewElement | null = null;
+ let moduleName = "";
+
+ const vPathParts = splitVPath(vPath, vPathParser).map(p => ({ ns: p[1], property: p[2], ind: p[3] }));
+ const resultPathParts = !vPath.startsWith("/")
+ ? splitVPath(currentPath, vPathParser).map(p => ({ ns: p[1], property: p[2], ind: p[3] }))
+ : [];
+
+ for (let i = 0; i < vPathParts.length; ++i){
+ const vPathPart = vPathParts[i];
+ if (vPathPart.property === "..") {
+ resultPathParts.pop();
+ } else if (vPathPart.property !== ".") {
+ resultPathParts.push(vPathPart);
+ }
+ }
+
+ // resolve element by path
+ for (let j = 0; j < resultPathParts.length;++j){
+ const pathPart = resultPathParts[j];
+ if (j===0) {
+ moduleName = pathPart.ns;
+ const rootModule = this._modules[moduleName];
+ if (!rootModule) throw new Error("Could not resolve module [" + moduleName +"].\r\n" + vPath);
+ element = rootModule.elements[`${pathPart.ns}:${pathPart.property}`];
+ } else if (element && isViewElementObjectOrList(element)) {
+ const view: ViewSpecification = this._views[+element.viewId];
+ if (moduleName !== pathPart.ns) {
+ moduleName = pathPart.ns;
+ element = view.elements[`${moduleName}:${pathPart.property}`];
+ } else {
+ element = view.elements[pathPart.property] || view.elements[`${moduleName}:${pathPart.property}`];
+ }
+ } else {
+ throw new Error("Could not resolve reference.\r\n" + vPath);
+ }
+ if (!element) throw new Error("Could not resolve path [" + pathPart.property + "] in ["+ currentPath +"] \r\n" + vPath);
+ }
+
+ return element;
+ }
+
+ private resolveView(vPath: string) {
+ const vPathParser = /(?:(?:([^\/\[\]\:]+):)?([^\/\[\]]+)(\[[^\]]+\])?)/g // 1 = opt: namespace / 2 = property / 3 = opt: indexPath
+ let element: ViewElement | null = null;
+ let partMatch: RegExpExecArray | null;
+ let view: ViewSpecification | null = null;
+ let moduleName = "";
+ if (vPath) do {
+ partMatch = vPathParser.exec(vPath);
+ if (partMatch) {
+ if (element === null) {
+ moduleName = partMatch[1]!;
+ const rootModule = this._modules[moduleName];
+ if (!rootModule) return null;
+ element = rootModule.elements[`${moduleName}:${partMatch[2]!}`];
+ } else if (isViewElementObjectOrList(element)) {
+ view = this._views[+element.viewId];
+ if (moduleName !== partMatch[1]) {
+ moduleName = partMatch[1];
+ element = view.elements[`${moduleName}:${partMatch[2]}`];
+ } else {
+ element = view.elements[partMatch[2]];
+ }
+ } else {
+ return null;
+ }
+ if (!element) return null;
+ }
+ } while (partMatch)
+ return element && isViewElementObjectOrList(element) && this._views[+element.viewId] || null;
+ }
+
+ private resolveType(type: string, module: Module) {
+ const collonInd = type.indexOf(":");
+ const preFix = collonInd > -1 ? type.slice(0, collonInd) : "";
+ const typeName = collonInd > -1 ? type.slice(collonInd + 1) : type;
+
+ const res = preFix
+ ? this._modules[module.imports[preFix]].typedefs[typeName]
+ : module.typedefs[typeName];
+ return res;
+ }
+
+ private resolveGrouping(grouping: string, module: Module) {
+ const collonInd = grouping.indexOf(":");
+ const preFix = collonInd > -1 ? grouping.slice(0, collonInd) : "";
+ const groupingName = collonInd > -1 ? grouping.slice(collonInd + 1) : grouping;
+
+ return preFix
+ ? this._modules[module.imports[preFix]].groupings[groupingName]
+ : module.groupings[groupingName];
+
+ }
+
+ private resolveIdentity(identity: string, module: Module) {
+ const collonInd = identity.indexOf(":");
+ const preFix = collonInd > -1 ? identity.slice(0, collonInd) : "";
+ const identityName = collonInd > -1 ? identity.slice(collonInd + 1) : identity;
+
+ return preFix
+ ? this._modules[module.imports[preFix]].identities[identityName]
+ : module.identities[identityName];
+
+ }
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/configurationApp/webpack.config.js b/sdnr/wt/odlux/apps/configurationApp/webpack.config.js
index e44b9322b..6a5c5d55e 100644
--- a/sdnr/wt/odlux/apps/configurationApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/configurationApp/webpack.config.js
@@ -26,7 +26,7 @@ module.exports = (env) => {
context: path.resolve(__dirname, "src"),
entry: {
- configurationApp: ["./plugin.tsx"]
+ configurationApp: ["./pluginConfiguration.tsx"]
},
devtool: env === "release" ? false : "source-map",
@@ -86,10 +86,6 @@ module.exports = (env) => {
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": {
@@ -131,25 +127,29 @@ module.exports = (env) => {
},
proxy: {
"/oauth2/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
+ secure: false
+ },
+ "/yang-schema/": {
+ target: "http://10.20.6.29:48181",
secure: false
},
"/database/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/restconf/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/help/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
- "/websocket/": {
- target: "http://localhost:3000",
+ "/websocket": {
+ target: "http://10.20.6.29:48181",
ws: true,
- changeOrigin: true,
+ changeOrigin: false,
secure: false
}
}
diff --git a/sdnr/wt/odlux/apps/connectApp/package.json b/sdnr/wt/odlux/apps/connectApp/package.json
index 269fa2a8c..04653d520 100644
--- a/sdnr/wt/odlux/apps/connectApp/package.json
+++ b/sdnr/wt/odlux/apps/connectApp/package.json
@@ -21,20 +21,20 @@
"author": "Matthias Fischer",
"license": "Apache-2.0",
"dependencies": {
- "@odlux/framework" : "*"
+ "@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"
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
+ "@types/react-router-dom": "4.3.1",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
+ "@types/classnames": "2.2.6",
+ "@types/flux": "3.1.8",
+ "@types/jquery": "3.3.10",
+ "jquery": "3.3.1",
+ "react": "16.11.0",
+ "react-dom": "16.11.0",
+ "react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/pom.xml b/sdnr/wt/odlux/apps/connectApp/pom.xml
index 3da282c39..36a5cf8bf 100644
--- a/sdnr/wt/odlux/apps/connectApp/pom.xml
+++ b/sdnr/wt/odlux/apps/connectApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-connectApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-connectApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/connectApp/src/actions/commonNetworkElementsActions.ts b/sdnr/wt/odlux/apps/connectApp/src/actions/commonNetworkElementsActions.ts
new file mode 100644
index 000000000..bf4778b5b
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/actions/commonNetworkElementsActions.ts
@@ -0,0 +1,113 @@
+// update action erstellen, die unterscheiden kann, ob die eine oder die andere Ansicht gerade aktive ist und diese katualisiert.
+// Diese action wird dann bei jeder aktualisierung in den anderen Actions und bei eintreffen von notifikationen verwendet.
+
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+import { Action } from '../../../../framework/src/flux/action';
+import { Dispatch } from '../../../../framework/src/flux/store';
+import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
+
+import { networkElementsReloadAction } from '../handlers/networkElementsHandler';
+import { connectionStatusLogReloadAction } from '../handlers/connectionStatusLogHandler';
+
+import { PanelId } from '../models/panelId';
+import { guiCutThrough } from '../models/guiCutTrough';
+import connectService from '../services/connectService';
+import { NetworkElementConnection } from '../models/networkElementConnection';
+
+export class SetPanelAction extends Action {
+ constructor(public panelId: PanelId) {
+ super();
+ }
+}
+
+export class AddWebUriList extends Action {
+ constructor(public element: guiCutThrough[], public knownElements: string[]) {
+ super();
+ }
+}
+
+export class RemoveWebUri extends Action {
+ constructor(public element: string) {
+ super();
+ }
+}
+
+export const removeWebUriAction = (nodeId: string) => {
+ return new RemoveWebUri(nodeId);
+}
+
+let isBusy = false;
+export const findWebUrisForGuiCutThroughAsyncAction = (dispatcher: Dispatch) => (networkElements: NetworkElementConnection[], knownElements: string[]) => {
+
+ // keep method from executing simultanously; state not used because change of iu isn't needed
+ if (isBusy)
+ return;
+ isBusy = true;
+
+ const nodeIds = networkElements.map(element => { return element.id as string });
+
+ if (knownElements.length > 0) {
+
+ let elementsToSearch: string[] = [];
+
+ nodeIds.forEach(element => {
+ // find index of nodeId
+ const index = knownElements.indexOf(element);
+
+ // if element dosen't exist, add it to list
+ if (index === -1) {
+ elementsToSearch.push(element)
+ }
+ });
+
+ // if new elements were found, search for weburi
+ if (elementsToSearch.length > 0) {
+ const foundWebUris = connectService.getAllWebUriExtensionsForNetworkElementListAsync(elementsToSearch);
+ foundWebUris.then(result => {
+ dispatcher(new AddWebUriList(result, elementsToSearch));
+ isBusy = false;
+ })
+
+ } else {
+ isBusy = false;
+ }
+
+ } else {
+ connectService.getAllWebUriExtensionsForNetworkElementListAsync(nodeIds).then(result => {
+ dispatcher(new AddWebUriList(result, nodeIds));
+ isBusy = false;
+ })
+ }
+}
+
+export const setPanelAction = (panelId: PanelId) => {
+ return new SetPanelAction(panelId);
+}
+
+export const updateCurrentViewAsyncAction = () => (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
+ const { connect: { currentOpenPanel } } = getState();
+ if (currentOpenPanel === "NetworkElements") {
+ return dispatch(networkElementsReloadAction);
+ }
+ else {
+ return dispatch(connectionStatusLogReloadAction);
+ }
+};
+
diff --git a/sdnr/wt/odlux/apps/connectApp/src/actions/infoNetworkElementActions.ts b/sdnr/wt/odlux/apps/connectApp/src/actions/infoNetworkElementActions.ts
new file mode 100644
index 000000000..4ae28aab2
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/actions/infoNetworkElementActions.ts
@@ -0,0 +1,57 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import { Action } from '../../../../framework/src/flux/action';
+import { Dispatch } from '../../../../framework/src/flux/store';
+
+import { TopologyNode } from '../models/topologyNetconf';
+import { connectService } from '../services/connectService';
+
+/**
+ * Represents the base action.
+ */
+export class BaseAction extends Action { }
+
+/**
+ * Represents an action causing the store to load all element Yang capabilities.
+ */
+export class LoadAllElementInfoAction extends BaseAction { }
+
+/**
+ * Represents an action causing the store to update element Yang capabilities.
+ */
+export class AllElementInfoLoadedAction extends BaseAction {
+ /**
+ * Initialize this instance.
+ * @param elementInfo The information of the element which is returned.
+ */
+ constructor(public elementInfo: TopologyNode | null, public error?: string) {
+ super();
+ }
+}
+
+/**
+ * Represents an asynchronous thunk action to load all yang capabilities.
+ */
+export const loadAllInfoElementAsync = (nodeId: string) => (dispatch: Dispatch) => {
+ dispatch(new LoadAllElementInfoAction());
+ connectService.infoNetworkElement(nodeId).then(info => {
+ dispatch(new AllElementInfoLoadedAction(info));
+ }, error => {
+ dispatch(new AllElementInfoLoadedAction(null, error));
+ });
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/actions/mountedNetworkElementsActions.ts b/sdnr/wt/odlux/apps/connectApp/src/actions/mountedNetworkElementsActions.ts
index 12f7c8594..84e73ae5a 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/actions/mountedNetworkElementsActions.ts
+++ b/sdnr/wt/odlux/apps/connectApp/src/actions/mountedNetworkElementsActions.ts
@@ -15,107 +15,45 @@
* the License.
* ============LICENSE_END==========================================================================
*/
+
import { Action } from '../../../../framework/src/flux/action';
import { Dispatch } from '../../../../framework/src/flux/store';
-import { MountedNetworkElementType } from '../models/mountedNetworkElements';
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
-
import { connectService } from '../services/connectService';
+import { NetworkElementConnection } from '../models/networkElementConnection';
import { AddSnackbarNotification } from '../../../../framework/src/actions/snackbarActions';
+import { updateCurrentViewAsyncAction } from './commonNetworkElementsActions';
/** Represents the base action. */
export class BaseAction extends Action { }
-/** Represents an action causing the store to load all mounted network elements. */
-export class LoadAllMountedNetworkElementsAction extends BaseAction { }
-
-/** Represents an action causing the store to update all mounted network elements. */
-export class AllMountedNetworkElementsLoadedAction extends BaseAction {
- constructor(public mountedNetworkElements: MountedNetworkElementType[] | null, public error?: string) {
- super();
- }
-}
-
-/** Represents an action causing the store to update all mounted network elements. */
-export class AddOrUpdateMountedNetworkElement extends BaseAction {
- constructor(public mountedNetworkElement: MountedNetworkElementType | null, public error?: string) {
- super();
- }
-}
-
-export class RemoveMountedNetworkElement extends BaseAction {
- constructor(public mountId: string) {
- super();
- }
-}
-
-export class UpdateConnectionStateMountedNetworkElement extends BaseAction {
- constructor(public mountId: string, connectionState: string) {
- super();
- }
-}
-
-
-export class UpdateRequiredMountedNetworkElement extends BaseAction {
- constructor(public mountId: string, public required: boolean) {
- super();
- }
-}
-
-/**
- * Represents an action crator for a async thunk action to add an allready mounted element to the state of this app.
- * Note: Use this action to add created object notified by the websocket.
-*/
-export const addMountedNetworkElementAsyncActionCreator = (mountId: string) => async (dispatch: Dispatch) => {
- return connectService.getMountedNetworkElementByMountId(mountId).then(mountedNetworkElement => {
- mountedNetworkElement && dispatch(new AddOrUpdateMountedNetworkElement(mountedNetworkElement));
- }).catch(error => {
- dispatch(new AddOrUpdateMountedNetworkElement(null, error));
- });
-};
-
-export const updateMountedNetworkElementAsyncActionCreator = (mountId: string) => async (dispatch: Dispatch) => {
- return connectService.getMountedNetworkElementByMountId(mountId).then(mountedNetworkElement => {
- if (mountedNetworkElement) {
- dispatch(new AddOrUpdateMountedNetworkElement(mountedNetworkElement));
- } else {
- dispatch(new RemoveMountedNetworkElement(mountId));
- }
- }).catch(error => {
- dispatch(new AddOrUpdateMountedNetworkElement(null, error));
- });
-};
-
-/** Represents an async thunk action to load all mounted network elements. */
-export const loadAllMountedNetworkElementsAsync = (dispatch: Dispatch) => {
- dispatch(new LoadAllMountedNetworkElementsAction());
- return connectService.getMountedNetworkElementsList().then(mountedNetworkElements => {
- mountedNetworkElements && dispatch(new AllMountedNetworkElementsLoadedAction(mountedNetworkElements));
- }).catch(error => {
- dispatch(new AllMountedNetworkElementsLoadedAction(null, error));
- });
-};
-
/** Represents an action crator for a async thunk action to mount a network element. */
-export const mountNetworkElementAsyncActionCreator = (networkElement: RequiredNetworkElementType) => (dispatch: Dispatch) => {
+export const mountNetworkElementAsyncActionCreator = (networkElement: NetworkElementConnection) => (dispatch: Dispatch) => {
return connectService.mountNetworkElement(networkElement).then((success) => {
- success && (
- dispatch(addMountedNetworkElementAsyncActionCreator(networkElement.mountId)) &&
- dispatch(new AddSnackbarNotification({ message: `Requesting mount [${networkElement.mountId}]`, options: { variant: 'info' } }))
- ) || dispatch(new AddSnackbarNotification({ message: `Failed to mount [${ networkElement.mountId }]`, options: { variant: 'warning' } }));
+ if (success) {
+ dispatch(updateCurrentViewAsyncAction());
+ dispatch(new AddSnackbarNotification({ message: `Requesting mount [${networkElement.nodeId}]`, options: { variant: 'info' } }))
+ } else {
+ dispatch(new AddSnackbarNotification({ message: `Failed to mount [${networkElement.nodeId}]`, options: { variant: 'warning' } }));
+ }
}).catch(error => {
- dispatch(new AddOrUpdateMountedNetworkElement(null, error));
+ dispatch(new AddSnackbarNotification({ message: `Failed to mount [${networkElement.nodeId}]`, options: { variant: 'error' } }));
+ console.error(error);
});
};
/** Represents an action crator for a async thunk action to unmount a network element. */
-export const unmountNetworkElementAsyncActionCreator = (mountId: string) => (dispatch: Dispatch) => {
- return connectService.unmountNetworkElement(mountId).then((success) => {
- success && dispatch(new AddSnackbarNotification({ message: `Requesting unmount [${ mountId }]`, options: { variant: 'info' } }))
- || dispatch(new AddSnackbarNotification({ message: `Failed to unmount [${ mountId }]`, options: { variant: 'warning' } }));
+export const unmountNetworkElementAsyncActionCreator = (nodeId: string) => (dispatch: Dispatch) => {
+ return connectService.unmountNetworkElement(nodeId).then((success) => {
+ if (success) {
+ dispatch(updateCurrentViewAsyncAction());
+ dispatch(new AddSnackbarNotification({ message: `Requesting unmount [${nodeId}]`, options: { variant: 'info' } }));
+ } else {
+ dispatch(new AddSnackbarNotification({ message: `Failed to unmount [${nodeId}]`, options: { variant: 'warning' } }));
+ }
}).catch(error => {
- dispatch(new AddOrUpdateMountedNetworkElement(null, error));
+ dispatch(new AddSnackbarNotification({ message: `Failed to unmount [${nodeId}]`, options: { variant: 'error' } }));
+ console.error(error);
});
};
diff --git a/sdnr/wt/odlux/apps/connectApp/src/actions/networkElementsActions.ts b/sdnr/wt/odlux/apps/connectApp/src/actions/networkElementsActions.ts
new file mode 100644
index 000000000..1a86f94b1
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/actions/networkElementsActions.ts
@@ -0,0 +1,61 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import { Action } from '../../../../framework/src/flux/action';
+import { Dispatch } from '../../../../framework/src/flux/store';
+
+import { AddSnackbarNotification } from '../../../../framework/src/actions/snackbarActions';
+
+import { NetworkElementConnection, ConnectionStatus, UpdateNetworkElement } from '../models/networkElementConnection';
+import { connectService } from '../services/connectService';
+import { updateCurrentViewAsyncAction } from './commonNetworkElementsActions';
+import { unmountNetworkElementAsyncActionCreator } from './mountedNetworkElementsActions';
+
+/** Represents the base action. */
+export class BaseAction extends Action { }
+
+/** Represents an async thunk action creator to add an element to the network elements. */
+export const addNewNetworkElementAsyncActionCreator = (element: NetworkElementConnection) => async (dispatch: Dispatch) => {
+ const res = await connectService.createNetworkElement({ ...element });
+ dispatch(updateCurrentViewAsyncAction());
+ dispatch(new AddSnackbarNotification({ message: `Successfully added [${element.nodeId}]`, options: { variant: 'success' } }));
+};
+
+/** Represents an async thunk action creator to edit network element. */
+export const editNetworkElementAsyncActionCreator = (element: UpdateNetworkElement) => async (dispatch: Dispatch) => {
+ const connectionStatus: ConnectionStatus[] = await connectService.getNetworkElementConnectionStatus(element.id).then(ne => (ne)) || [];
+ const currentConnectionStatus = connectionStatus[0].status;
+ if (currentConnectionStatus === "Disconnected") {
+ const res = await connectService.deleteNetworkElement(element);
+ }
+ else {
+ const res = await connectService.updateNetworkElement(element);
+ }
+ dispatch(updateCurrentViewAsyncAction());
+ dispatch(new AddSnackbarNotification({ message: `Successfully modified [${element.id}]`, options: { variant: 'success' } }));
+};
+
+
+/** Represents an async thunk action creator to delete an element from network elements. */
+export const removeNetworkElementAsyncActionCreator = (element: UpdateNetworkElement) => async (dispatch: Dispatch) => {
+ const res = await connectService.deleteNetworkElement(element);
+ await dispatch(unmountNetworkElementAsyncActionCreator(element && element.id));
+ dispatch(updateCurrentViewAsyncAction());
+};
+
+
+
diff --git a/sdnr/wt/odlux/apps/connectApp/src/actions/requiredNetworkElementsActions.ts b/sdnr/wt/odlux/apps/connectApp/src/actions/requiredNetworkElementsActions.ts
deleted file mode 100644
index 0e55cadf4..000000000
--- a/sdnr/wt/odlux/apps/connectApp/src/actions/requiredNetworkElementsActions.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import { Action } from '../../../../framework/src/flux/action';
-import { Dispatch } from '../../../../framework/src/flux/store';
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
-import { requiredNetworkElementsReloadAction } from '../handlers/requiredNetworkElementsHandler';
-import { UpdateRequiredMountedNetworkElement } from '../actions/mountedNetworkElementsActions';
-
-import { AddSnackbarNotification } from '../../../../framework/src/actions/snackbarActions';
-
-import { connectService } from '../services/connectService';
-
-/** Represents the base action. */
-export class BaseAction extends Action { }
-
-
-/** Represents an async thunk action creator to add an element to the required network elements. */
-export const addToRequiredNetworkElementsAsyncActionCreator = (element: RequiredNetworkElementType) => (dispatch: Dispatch) => {
- connectService.insertRequiredNetworkElement(element).then(_ => {
- window.setTimeout(() => {
- dispatch(requiredNetworkElementsReloadAction);
- dispatch(new UpdateRequiredMountedNetworkElement(element.mountId, true));
- dispatch(new AddSnackbarNotification({ message: `Successfully added [${ element.mountId }]`, options: { variant: 'success' } }));
- }, 900);
- });
-};
-
-/** Represents an async thunk action creator to delete an element from the required network elements. */
-export const removeFromRequiredNetworkElementsAsyncActionCreator = (element: RequiredNetworkElementType) => (dispatch: Dispatch) => {
- connectService.deleteRequiredNetworkElement(element).then(_ => {
- window.setTimeout(() => {
- dispatch(requiredNetworkElementsReloadAction);
- dispatch(new UpdateRequiredMountedNetworkElement(element.mountId, false));
- dispatch(new AddSnackbarNotification({ message: `Successfully removed [${ element.mountId }]`, options: { variant: 'success' } }));
- }, 900);
- });
-};
-
-
-
diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/connectionStatusLog.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/connectionStatusLog.tsx
index 3cc104836..4e5ca65e1 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/components/connectionStatusLog.tsx
+++ b/sdnr/wt/odlux/apps/connectApp/src/components/connectionStatusLog.tsx
@@ -21,32 +21,31 @@ import { IApplicationStoreState } from '../../../../framework/src/store/applicat
import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table';
import { createConnectionStatusLogActions, createConnectionStatusLogProperties } from '../handlers/connectionStatusLogHandler';
-import { ConnectionStatusLogType } from '../models/connectionStatusLog';
+import { NetworkElementConnectionLog } from '../models/networkElementConnectionLog';
const mapProps = (state: IApplicationStoreState) => ({
connectionStatusLogProperties: createConnectionStatusLogProperties(state),
});
const mapDispatch = (dispatcher: IDispatcher) => ({
- connectionStatusLogActions: createConnectionStatusLogActions(dispatcher.dispatch),
+ connectionStatusLogActions: createConnectionStatusLogActions(dispatcher.dispatch),
});
-
-const ConnectionStatusTable = MaterialTable as MaterialTableCtorType<ConnectionStatusLogType>;
+
+const ConnectionStatusTable = MaterialTable as MaterialTableCtorType<NetworkElementConnectionLog>;
type ConnectionStatusLogComponentProps = Connect<typeof mapProps, typeof mapDispatch>;
class ConnectionStatusLogComponent extends React.Component<ConnectionStatusLogComponentProps> {
render(): JSX.Element {
return (
- <ConnectionStatusTable columns={ [
- { property: "timeStamp", title: "Time", type: ColumnType.text },
- { property: "objectId", title: "Name", type: ColumnType.text },
- { property: "elementStatus", title: "Connection status", type: ColumnType.text, disableFilter: true, disableSorting: true },
- ] } idProperty="_id" { ...this.props.connectionStatusLogActions } {...this.props.connectionStatusLogProperties } >
+ <ConnectionStatusTable tableId="connection-status-table" columns={[
+ { property: "timestamp", title: "Time", type: ColumnType.text },
+ { property: "nodeId", title: "Node Name", type: ColumnType.text },
+ { property: "status", title: "Connection status", type: ColumnType.text },
+ ]} idProperty="id" {...this.props.connectionStatusLogActions} {...this.props.connectionStatusLogProperties} >
</ConnectionStatusTable>
);
};
-
}
export const ConnectionStatusLog = connect(mapProps, mapDispatch)(ConnectionStatusLogComponent);
diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/editNetworkElementDialog.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/editNetworkElementDialog.tsx
index 32b23a41e..1e1f11523 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/components/editNetworkElementDialog.tsx
+++ b/sdnr/wt/odlux/apps/connectApp/src/components/editNetworkElementDialog.tsx
@@ -24,46 +24,47 @@ import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import DialogContentText from '@material-ui/core/DialogContentText';
import DialogTitle from '@material-ui/core/DialogTitle';
+import { FormControl, InputLabel, Select, MenuItem } from '@material-ui/core';
import { IDispatcher, connect, Connect } from '../../../../framework/src/flux/connect';
import {
- addToRequiredNetworkElementsAsyncActionCreator,
- removeFromRequiredNetworkElementsAsyncActionCreator
-} from '../actions/requiredNetworkElementsActions';
+ editNetworkElementAsyncActionCreator,
+ addNewNetworkElementAsyncActionCreator,
+ removeNetworkElementAsyncActionCreator
+} from '../actions/networkElementsActions';
import { unmountNetworkElementAsyncActionCreator, mountNetworkElementAsyncActionCreator } from '../actions/mountedNetworkElementsActions';
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
+import { NetworkElementConnection, UpdateNetworkElement } from '../models/networkElementConnection';
+import { removeWebUriAction } from '../actions/commonNetworkElementsActions';
export enum EditNetworkElementDialogMode {
None = "none",
- UnknownNetworkElementToRequiredNetworkElements = "unknownNetworkElementToRequiredNetworkElements",
- RequiredNetworkElementToUnknownNetworkElements = "requiredNetworkElementToUnknownNetworkElements",
- MountNetworkElementToRequiredNetworkElements = "mountNetworkElementToRequiredNetworkElements",
- MountNetworkElementToUnknonwNetworkElements = "mountNetworkElementToRequiredUnknownElements",
+ EditNetworkElement = "editNetworkElement",
+ RemoveNetworkElement = "removeNetworkElement",
+ AddNewNetworkElement = "addNewNetworkElement",
MountNetworkElement = "mountNetworkElement",
UnmountNetworkElement = "unmountNetworkElement",
}
const mapDispatch = (dispatcher: IDispatcher) => ({
- addToRequiredNetworkElements: (element: RequiredNetworkElementType) => {
- dispatcher.dispatch(addToRequiredNetworkElementsAsyncActionCreator(element));
+ addNewNetworkElement: async (element: NetworkElementConnection) => {
+ await dispatcher.dispatch(addNewNetworkElementAsyncActionCreator(element));
+ await dispatcher.dispatch(mountNetworkElementAsyncActionCreator(element));
},
- removeFromRequiredNetworkElements: (element: RequiredNetworkElementType) => {
- dispatcher.dispatch(removeFromRequiredNetworkElementsAsyncActionCreator(element));
+ mountNetworkElement: (element: NetworkElementConnection) => dispatcher.dispatch(mountNetworkElementAsyncActionCreator(element)),
+ unmountNetworkElement: (element: NetworkElementConnection) => {
+ dispatcher.dispatch(unmountNetworkElementAsyncActionCreator(element && element.nodeId));
},
- mountNetworkElement: (element: RequiredNetworkElementType) => {
- dispatcher.dispatch(mountNetworkElementAsyncActionCreator(element));
+ editNetworkElement: async (element: UpdateNetworkElement, mountElement: NetworkElementConnection) => {
+ await dispatcher.dispatch(editNetworkElementAsyncActionCreator(element));
+ await dispatcher.dispatch(mountNetworkElementAsyncActionCreator(mountElement));
},
- mountAndRquireNetworkElement: (element: RequiredNetworkElementType) => {
- dispatcher.dispatch(addToRequiredNetworkElementsAsyncActionCreator(element));
- dispatcher.dispatch(mountNetworkElementAsyncActionCreator(element));
- },
- unmountNetworkElement: (element: RequiredNetworkElementType) => {
- dispatcher.dispatch(unmountNetworkElementAsyncActionCreator(element && element.mountId));
+ removeNetworkElement: (element: UpdateNetworkElement) => {
+ dispatcher.dispatch(removeNetworkElementAsyncActionCreator(element));
+ dispatcher.dispatch(removeWebUriAction(element.id));
}
-}
-);
+});
type DialogSettings = {
dialogTitle: string,
@@ -85,37 +86,11 @@ const settings: { [key: string]: DialogSettings } = {
enableUsernameEditor: false,
enableExtendedEditor: false,
},
- [EditNetworkElementDialogMode.UnknownNetworkElementToRequiredNetworkElements] : {
- dialogTitle: "Add to required network elements" ,
- dialogDescription: "Create a new NetworkElement in planning database as clone of existing real NetworkElement." ,
- applyButtonText: "Add to required network elements" ,
- cancelButtonText: "Cancel",
- enableMountIdEditor: false,
- enableUsernameEditor: true,
- enableExtendedEditor: false,
- },
- [EditNetworkElementDialogMode.RequiredNetworkElementToUnknownNetworkElements]: {
- dialogTitle: "Remove from required network elements",
- dialogDescription: "Do you really want to remove the required element:",
- applyButtonText: "Remove network element",
- cancelButtonText: "Cancel",
- enableMountIdEditor: false,
- enableUsernameEditor: false,
- enableExtendedEditor: false,
- },
- [EditNetworkElementDialogMode.MountNetworkElementToUnknonwNetworkElements]: {
- dialogTitle: "Mount to unknown network elements",
- dialogDescription: "Mount this network element:",
- applyButtonText: "Mount network element",
- cancelButtonText: "Cancel",
- enableMountIdEditor: true,
- enableUsernameEditor: true,
- enableExtendedEditor: true,
- },
- [EditNetworkElementDialogMode.MountNetworkElementToRequiredNetworkElements]: {
- dialogTitle: "Mount to required network elements",
- dialogDescription: "Mount this network element:",
- applyButtonText: "Mount network element",
+
+ [EditNetworkElementDialogMode.AddNewNetworkElement]: {
+ dialogTitle: "Add new network element",
+ dialogDescription: "Add this new network element:",
+ applyButtonText: "Add network element",
cancelButtonText: "Cancel",
enableMountIdEditor: true,
enableUsernameEditor: true,
@@ -139,83 +114,102 @@ const settings: { [key: string]: DialogSettings } = {
enableUsernameEditor: false,
enableExtendedEditor: false,
},
+ [EditNetworkElementDialogMode.EditNetworkElement]: {
+ dialogTitle: "Modify the network elements",
+ dialogDescription: "Modify this network element",
+ applyButtonText: "Modify",
+ cancelButtonText: "Cancel",
+ enableMountIdEditor: false,
+ enableUsernameEditor: true,
+ enableExtendedEditor: false,
+ },
+ [EditNetworkElementDialogMode.RemoveNetworkElement]: {
+ dialogTitle: "Remove network element",
+ dialogDescription: "Do you really want to remove this network element:",
+ applyButtonText: "Remove network element",
+ cancelButtonText: "Cancel",
+ enableMountIdEditor: false,
+ enableUsernameEditor: false,
+ enableExtendedEditor: false,
+ }
}
-type EditNetworkElementDialogComponentProps = Connect<undefined,typeof mapDispatch> & {
+type EditNetworkElementDialogComponentProps = Connect<undefined, typeof mapDispatch> & {
mode: EditNetworkElementDialogMode;
- initialNetworkElement: RequiredNetworkElementType;
+ initialNetworkElement: NetworkElementConnection;
onClose: () => void;
};
-type EditNetworkElementDialogComponentState = RequiredNetworkElementType & {
- required: boolean;
-};
+type EditNetworkElementDialogComponentState = NetworkElementConnection;
class EditNetworkElementDialogComponent extends React.Component<EditNetworkElementDialogComponentProps, EditNetworkElementDialogComponentState> {
constructor(props: EditNetworkElementDialogComponentProps) {
super(props);
this.state = {
- mountId: this.props.initialNetworkElement.mountId,
+ nodeId: this.props.initialNetworkElement.nodeId,
+ isRequired: false,
host: this.props.initialNetworkElement.host,
port: this.props.initialNetworkElement.port,
- password: this.props.initialNetworkElement.password,
- username: this.props.initialNetworkElement.username,
- required: false
};
}
render(): JSX.Element {
const setting = settings[this.props.mode];
return (
- <Dialog open={ this.props.mode !== EditNetworkElementDialogMode.None }>
- <DialogTitle id="form-dialog-title">{ setting.dialogTitle }</DialogTitle>
+ <Dialog open={this.props.mode !== EditNetworkElementDialogMode.None}>
+ <DialogTitle id="form-dialog-title">{setting.dialogTitle}</DialogTitle>
<DialogContent>
<DialogContentText>
- { setting.dialogDescription }
+ {setting.dialogDescription}
</DialogContentText>
- <TextField disabled={ !setting.enableMountIdEditor } spellCheck={false} autoFocus margin="dense" id="name" label="Name" type="text" fullWidth value={ this.state.mountId } onChange={(event)=>{ this.setState({mountId: event.target.value}); } } />
- <TextField disabled={ !setting.enableMountIdEditor } spellCheck={false} margin="dense" id="ipaddress" label="IP address" type="text" fullWidth value={ this.state.host } onChange={(event)=>{ this.setState({host: event.target.value}); } }/>
- <TextField disabled={ !setting.enableMountIdEditor } spellCheck={false} margin="dense" id="netconfport" label="NetConf port" type="number" fullWidth value={ this.state.port.toString() } onChange={(event)=>{ this.setState({port: +event.target.value}); } }/>
- { setting.enableUsernameEditor && <TextField disabled={ !setting.enableUsernameEditor } spellCheck={ false } margin="dense" id="username" label="Username" type="text" fullWidth value={ this.state.username } onChange={ (event) => { this.setState({ username: event.target.value }); } } /> || null }
- { setting.enableUsernameEditor && <TextField disabled={ !setting.enableUsernameEditor } spellCheck={ false } margin="dense" id="password" label="Password" type="password" fullWidth value={ this.state.password } onChange={ (event) => { this.setState({ password: event.target.value }); } } /> || null }
+ <TextField disabled={!setting.enableMountIdEditor} spellCheck={false} autoFocus margin="dense" id="name" label="Name" aria-label="name" type="text" fullWidth value={this.state.nodeId} onChange={(event) => { this.setState({ nodeId: event.target.value }); }} />
+ <TextField disabled={!setting.enableMountIdEditor} spellCheck={false} margin="dense" id="ipaddress" label="IP address" aria-label="ip adress" type="text" fullWidth value={this.state.host} onChange={(event) => { this.setState({ host: event.target.value }); }} />
+ <TextField disabled={!setting.enableMountIdEditor} spellCheck={false} margin="dense" id="netconfport" label="NetConf port" aria-label="netconf port" type="number" fullWidth value={this.state.port.toString()} onChange={(event) => { this.setState({ port: +event.target.value }); }} />
+ {setting.enableUsernameEditor && <TextField disabled={!setting.enableUsernameEditor} spellCheck={false} margin="dense" id="username" label="Username" aria-label="username" type="text" fullWidth value={this.state.username} onChange={(event) => { this.setState({ username: event.target.value }); }} /> || null}
+ {setting.enableUsernameEditor && <TextField disabled={!setting.enableUsernameEditor} spellCheck={false} margin="dense" id="password" label="Password" aria-label="password" type="password" fullWidth value={this.state.password} onChange={(event) => { this.setState({ password: event.target.value }); }} /> || null}
+ <FormControl fullWidth disabled={!setting.enableUsernameEditor}>
+ <InputLabel htmlFor="active">Required</InputLabel>
+ <Select value={this.state.isRequired || false} onChange={(event) => {
+ this.setState({ isRequired: event.target.value as any as boolean });
+ }} inputProps={{ name: 'required', id: 'required' }} fullWidth >
+ <MenuItem value={true as any as string} >True</MenuItem>
+ <MenuItem value={false as any as string} >False</MenuItem>
+ </Select>
+ </FormControl>
</DialogContent>
<DialogActions>
- <Button onClick={ (event) => {
+ <Button onClick={(event) => {
this.onApply({
- mountId: this.state.mountId,
+ isRequired: this.state.isRequired,
+ id: this.state.nodeId,
+ nodeId: this.state.nodeId,
host: this.state.host,
port: this.state.port,
username: this.state.username,
- password: this.state.password
+ password: this.state.password,
});
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>
)
}
- private onApply = (element: RequiredNetworkElementType) => {
+ private onApply = (element: NetworkElementConnection) => {
this.props.onClose && this.props.onClose();
+ let updateElement: UpdateNetworkElement = {
+ id: this.state.nodeId
+ }
switch (this.props.mode) {
- case EditNetworkElementDialogMode.UnknownNetworkElementToRequiredNetworkElements:
- element && this.props.addToRequiredNetworkElements(element);
- break;
- case EditNetworkElementDialogMode.RequiredNetworkElementToUnknownNetworkElements:
- element && this.props.removeFromRequiredNetworkElements(element);
- break;
- case EditNetworkElementDialogMode.MountNetworkElementToUnknonwNetworkElements:
- element && this.props.mountNetworkElement(element);
- break;
- case EditNetworkElementDialogMode.MountNetworkElementToRequiredNetworkElements:
- element && this.props.mountAndRquireNetworkElement(element);
+ case EditNetworkElementDialogMode.AddNewNetworkElement:
+ element && this.props.addNewNetworkElement(element);
break;
case EditNetworkElementDialogMode.MountNetworkElement:
element && this.props.mountNetworkElement(element);
@@ -223,6 +217,18 @@ class EditNetworkElementDialogComponent extends React.Component<EditNetworkEleme
case EditNetworkElementDialogMode.UnmountNetworkElement:
element && this.props.unmountNetworkElement(element);
break;
+ case EditNetworkElementDialogMode.EditNetworkElement:
+ if (this.props.initialNetworkElement.isRequired !== this.state.isRequired)
+ updateElement.isRequired = this.state.isRequired;
+ if (this.props.initialNetworkElement.username !== this.state.username)
+ updateElement.username = this.state.username;
+ if (this.props.initialNetworkElement.password !== this.state.password)
+ updateElement.password = this.state.password;
+ element && this.props.editNetworkElement(updateElement, element);
+ break;
+ case EditNetworkElementDialogMode.RemoveNetworkElement:
+ element && this.props.removeNetworkElement(updateElement);
+ break;
}
};
@@ -230,7 +236,7 @@ class EditNetworkElementDialogComponent extends React.Component<EditNetworkEleme
this.props.onClose && this.props.onClose();
}
- static getDerivedStateFromProps(props: EditNetworkElementDialogComponentProps, state: EditNetworkElementDialogComponentState & { _initialNetworkElement: RequiredNetworkElementType }): EditNetworkElementDialogComponentState & { _initialNetworkElement: RequiredNetworkElementType } {
+ static getDerivedStateFromProps(props: EditNetworkElementDialogComponentProps, state: EditNetworkElementDialogComponentState & { _initialNetworkElement: NetworkElementConnection }): EditNetworkElementDialogComponentState & { _initialNetworkElement: NetworkElementConnection } {
if (props.initialNetworkElement !== state._initialNetworkElement) {
state = {
...state,
diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/infoNetworkElementDialog.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/infoNetworkElementDialog.tsx
new file mode 100644
index 000000000..ea9d419ec
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/components/infoNetworkElementDialog.tsx
@@ -0,0 +1,154 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import * as React from 'react';
+
+import Button from '@material-ui/core/Button';
+import Dialog from '@material-ui/core/Dialog';
+import DialogActions from '@material-ui/core/DialogActions';
+import DialogContent from '@material-ui/core/DialogContent';
+import DialogContentText from '@material-ui/core/DialogContentText';
+import DialogTitle from '@material-ui/core/DialogTitle';
+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 { IDispatcher, connect, Connect } from '../../../../framework/src/flux/connect';
+
+import { NetworkElementConnection } from '../models/networkElementConnection';
+import { AvailableCapabilities } from '../models/yangCapabilitiesType'
+
+export enum InfoNetworkElementDialogMode {
+ None = "none",
+ InfoNetworkElement = "infoNetworkElement"
+}
+
+const mapDispatch = (dispatcher: IDispatcher) => ({
+});
+
+type DialogSettings = {
+ dialogTitle: string,
+ dialogDescription: string,
+ cancelButtonText: string,
+}
+
+const settings: { [key: string]: DialogSettings } = {
+ [InfoNetworkElementDialogMode.None]: {
+ dialogTitle: "",
+ dialogDescription: "",
+ cancelButtonText: "",
+ },
+ [InfoNetworkElementDialogMode.InfoNetworkElement]: {
+ dialogTitle: "Yang capabilities of the network element",
+ dialogDescription: "Available capabilities of the network element",
+ cancelButtonText: "Cancel",
+ }
+}
+
+type InfoNetworkElementDialogComponentProps = Connect<undefined, typeof mapDispatch> & {
+ mode: InfoNetworkElementDialogMode;
+ initialNetworkElement: NetworkElementConnection;
+ onClose: () => void;
+};
+
+type InfoNetworkElementDialogComponentState = NetworkElementConnection;
+
+class InfoNetworkElementDialogComponent extends React.Component<InfoNetworkElementDialogComponentProps, InfoNetworkElementDialogComponentState> {
+ constructor(props: InfoNetworkElementDialogComponentProps) {
+ super(props);
+
+ this.state = {
+ nodeId: this.props.initialNetworkElement.nodeId,
+ isRequired: false,
+ host: this.props.initialNetworkElement.host,
+ port: this.props.initialNetworkElement.port,
+ };
+ }
+
+ render(): JSX.Element {
+ const setting = settings[this.props.mode];
+ const availableCapabilities = this.props.state.connect.elementInfo.elementInfo["netconf-node-topology:available-capabilities"]["available-capability"];
+ let yangCapabilities: AvailableCapabilities[] = [];
+
+ availableCapabilities.forEach(value => {
+ const capabilty = value.capability;
+ const indexRevision = capabilty.indexOf("revision=");
+ const indexModule = capabilty.indexOf(")", indexRevision);
+ if (indexRevision > 0 && indexModule > 0) {
+ yangCapabilities.push({
+ module: capabilty.substr(indexModule + 1),
+ revision: capabilty.substr(indexRevision + 9, 10)
+ });
+ }
+ });
+
+ return (
+ <Dialog open={this.props.mode !== InfoNetworkElementDialogMode.None}>
+ <DialogTitle id="form-dialog-title">{setting.dialogTitle}</DialogTitle>
+ <DialogContent>
+ <DialogContentText>
+ {setting.dialogDescription + " " + this.state.nodeId}
+ </DialogContentText>
+ <Table >
+ <TableHead>
+ <TableRow>
+ <TableCell align="right">S.No</TableCell>
+ <TableCell >Module</TableCell>
+ <TableCell >Revision</TableCell>
+ </TableRow>
+ </TableHead>
+ <TableBody>
+ {yangCapabilities.map((yang, index) => (
+ <TableRow>
+ <TableCell>{index + 1}</TableCell>
+ <TableCell>{yang.module}</TableCell>
+ <TableCell>{yang.revision}</TableCell>
+ </TableRow>
+ ))}
+ </TableBody>
+ </Table>
+ </DialogContent>
+ <DialogActions>
+ <Button onClick={(event) => {
+ this.onCancel();
+ event.preventDefault();
+ event.stopPropagation();
+ }} color="secondary"> {setting.cancelButtonText} </Button>
+ </DialogActions>
+ </Dialog>
+ )
+ }
+
+ private onCancel = () => {
+ this.props.onClose();
+ }
+
+ static getDerivedStateFromProps(props: InfoNetworkElementDialogComponentProps, state: InfoNetworkElementDialogComponentState & { _initialNetworkElement: NetworkElementConnection }): InfoNetworkElementDialogComponentState & { _initialNetworkElement: NetworkElementConnection } {
+ if (props.initialNetworkElement !== state._initialNetworkElement) {
+ state = {
+ ...state,
+ ...props.initialNetworkElement,
+ _initialNetworkElement: props.initialNetworkElement,
+ };
+ }
+ return state;
+ }
+}
+
+export const InfoNetworkElementDialog = connect(undefined, mapDispatch)(InfoNetworkElementDialogComponent);
+export default InfoNetworkElementDialog; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/networkElements.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/networkElements.tsx
new file mode 100644
index 000000000..0f4b0e8ff
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/components/networkElements.tsx
@@ -0,0 +1,259 @@
+/**
+* ============LICENSE_START========================================================================
+* ONAP : ccsdk feature sdnr wt odlux
+* =================================================================================================
+* 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==========================================================================
+*/
+import * as React from 'react';
+import { Theme, createStyles, withStyles, WithStyles } from '@material-ui/core/styles';
+
+import AddIcon from '@material-ui/icons/Add';
+import LinkIcon from '@material-ui/icons/Link';
+import LinkOffIcon from '@material-ui/icons/LinkOff';
+import RemoveIcon from '@material-ui/icons/RemoveCircleOutline';
+import EditIcon from '@material-ui/icons/Edit';
+import Info from '@material-ui/icons/Info';
+import ComputerIcon from '@material-ui/icons/Computer';
+
+import Button from '@material-ui/core/Button';
+import IconButton from '@material-ui/core/IconButton';
+import Tooltip from '@material-ui/core/Tooltip';
+
+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 { NavigateToApplication } from '../../../../framework/src/actions/navigationActions';
+
+import { createNetworkElementsActions, createNetworkElementsProperties } from '../handlers/networkElementsHandler';
+
+import { NetworkElementConnection } from '../models/networkElementConnection';
+import EditNetworkElementDialog, { EditNetworkElementDialogMode } from './editNetworkElementDialog';
+
+import InfoNetworkElementDialog, { InfoNetworkElementDialogMode } from './infoNetworkElementDialog';
+import { loadAllInfoElementAsync } from '../actions/infoNetworkElementActions';
+import { TopologyNode } from '../models/topologyNetconf';
+
+const styles = (theme: Theme) => createStyles({
+ connectionStatusConnected: {
+ color: 'darkgreen',
+ },
+ connectionStatusConnecting: {
+ color: 'blue',
+ },
+ connectionStatusDisconnected: {
+ color: 'red',
+ },
+ button: {
+ margin: 0,
+ padding: "6px 6px",
+ minWidth: 'unset'
+ },
+ spacer: {
+ marginLeft: theme.spacing(1),
+ marginRight: theme.spacing(1),
+ display: "inline"
+ }
+});
+
+const mapProps = (state: IApplicationStoreState) => ({
+ networkElementsProperties: createNetworkElementsProperties(state),
+});
+
+const mapDispatch = (dispatcher: IDispatcher) => ({
+ networkElementsActions: createNetworkElementsActions(dispatcher.dispatch),
+ navigateToApplication: (applicationName: string, path?: string) => dispatcher.dispatch(new NavigateToApplication(applicationName, path)),
+ networkElementInfo: async (nodeId: string) => await dispatcher.dispatch(loadAllInfoElementAsync(nodeId)),
+});
+
+type NetworkElementsListComponentProps = WithStyles<typeof styles> & Connect<typeof mapProps, typeof mapDispatch>;
+type NetworkElementsListComponentState = {
+ networkElementToEdit: NetworkElementConnection,
+ networkElementEditorMode: EditNetworkElementDialogMode,
+ infoNetworkElementEditorMode: InfoNetworkElementDialogMode,
+ elementInfo: TopologyNode | null
+}
+
+const emptyRequireNetworkElement: NetworkElementConnection = { id: "", nodeId: "", host: "", port: 0, status: "Disconnected", isRequired: false };
+
+const NetworkElementTable = MaterialTable as MaterialTableCtorType<NetworkElementConnection>;
+
+export class NetworkElementsListComponent extends React.Component<NetworkElementsListComponentProps, NetworkElementsListComponentState> {
+
+ constructor(props: NetworkElementsListComponentProps) {
+ super(props);
+
+ this.state = {
+ networkElementToEdit: emptyRequireNetworkElement,
+ networkElementEditorMode: EditNetworkElementDialogMode.None,
+ elementInfo: null,
+ infoNetworkElementEditorMode: InfoNetworkElementDialogMode.None
+ };
+ }
+
+ // private navigationCreator
+
+ render(): JSX.Element {
+ const { classes } = this.props;
+ const { networkElementToEdit } = this.state;
+ const addRequireNetworkElementAction = {
+ icon: AddIcon, tooltip: 'Add', onClick: () => {
+ this.setState({
+ networkElementEditorMode: EditNetworkElementDialogMode.AddNewNetworkElement,
+ networkElementToEdit: emptyRequireNetworkElement,
+ });
+ }
+ };
+ let counter = 0;
+ return (
+ <>
+ <NetworkElementTable tableId="network-element-table" customActionButtons={[addRequireNetworkElementAction]} columns={[
+ { property: "nodeId", title: "Node Name", type: ColumnType.text },
+ { property: "isRequired", title: "Required", type: ColumnType.boolean },
+ { property: "status", title: "Connection Status", type: ColumnType.text },
+ { property: "host", title: "Host", type: ColumnType.text },
+ { property: "port", title: "Port", type: ColumnType.numeric },
+ { property: "coreModelCapability", title: "Core Model", type: ColumnType.text },
+ { property: "deviceType", title: "Type", type: ColumnType.text },
+ {
+ property: "actions", title: "Actions", type: ColumnType.custom, customControl: ({ rowData }) => {
+ counter++;
+ return (
+ <>
+ <div className={classes.spacer}>
+ {
+ rowData.webUri && <Tooltip title={"Web Client"} ><IconButton aria-label={"web-client-button-" + counter} className={classes.button} onClick={event => { console.log(rowData); window.open(rowData.webUri, "_blank") }}><ComputerIcon /></IconButton></Tooltip>
+ }
+ <Tooltip title={"Mount"} >
+ <IconButton aria-label={"mount-button-" + counter} className={classes.button} onClick={event => this.onOpenMountdNetworkElementsDialog(event, rowData)} >
+ <LinkIcon /></IconButton>
+ </Tooltip>
+ <Tooltip title={"Unmount"} >
+ <IconButton aria-label={"unmount-button-" + counter} className={classes.button} onClick={event => this.onOpenUnmountdNetworkElementsDialog(event, rowData)} >
+ <LinkOffIcon /></IconButton>
+ </Tooltip>
+ <Tooltip title={"Info"} ><IconButton aria-label={"info-button-" + counter} className={classes.button} onClick={event => this.onOpenInfoNetworkElementDialog(event, rowData)} disabled={rowData.status === "Connecting" || rowData.status === "Disconnected"} >
+ <Info /></IconButton>
+ </Tooltip>
+ <Tooltip title={"Edit"} ><IconButton aria-label={"edit-button-" + counter} className={classes.button} onClick={event => this.onOpenEditNetworkElementDialog(event, rowData)} ><EditIcon /></IconButton></Tooltip>
+ <Tooltip title={"Remove"} ><IconButton aria-label={"remove-button-" + counter} className={classes.button} onClick={event => this.onOpenRemoveNetworkElementDialog(event, rowData)} ><RemoveIcon /></IconButton></Tooltip>
+ </div>
+ <div className={classes.spacer}>
+ <Tooltip title={"Inventory"} ><Button aria-label={"inventory-button-" + counter} className={classes.button} onClick={this.navigateToApplicationHandlerCreator("inventory", rowData)} >I</Button></Tooltip>
+ </div>
+ <div className={classes.spacer}>
+ <Tooltip title={"Fault"} ><Button aria-label={"fault-button-" + counter} className={classes.button} onClick={this.navigateToApplicationHandlerCreator("fault", rowData)} >F</Button></Tooltip>
+ <Tooltip title={"Configure"} ><Button aria-label={"configure-button-" + counter} className={classes.button} onClick={this.navigateToApplicationHandlerCreator("configuration", rowData)} >C</Button></Tooltip>
+ <Tooltip title={"Accounting "} ><Button className={classes.button} onClick={this.navigateToApplicationHandlerCreator("accounting", rowData)} disabled={true} >A</Button></Tooltip>
+ <Tooltip title={"Performance"} ><Button aria-label={"performance-button-" + counter} className={classes.button} onClick={this.navigateToApplicationHandlerCreator("performanceHistory", rowData)}>P</Button></Tooltip>
+ <Tooltip title={"Security"} ><Button className={classes.button} onClick={this.navigateToApplicationHandlerCreator("security", rowData)} disabled={true} >S</Button></Tooltip>
+ </div>
+ </>
+ )
+ }
+ },
+ ]} idProperty="id" {...this.props.networkElementsActions} {...this.props.networkElementsProperties} asynchronus >
+ </NetworkElementTable>
+ <EditNetworkElementDialog
+ initialNetworkElement={networkElementToEdit}
+ mode={this.state.networkElementEditorMode}
+ onClose={this.onCloseEditNetworkElementDialog}
+ />
+ <InfoNetworkElementDialog
+ initialNetworkElement={networkElementToEdit}
+ mode={this.state.infoNetworkElementEditorMode}
+ onClose={this.onCloseInfoNetworkElementDialog}
+ />
+ </>
+ );
+ };
+
+ public componentDidMount() {
+ this.props.networkElementsActions.onRefresh();
+ }
+
+ private onOpenRemoveNetworkElementDialog = (event: React.MouseEvent<HTMLElement>, element: NetworkElementConnection) => {
+ this.setState({
+ networkElementToEdit: element,
+ networkElementEditorMode: EditNetworkElementDialogMode.RemoveNetworkElement
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ private onOpenEditNetworkElementDialog = (event: React.MouseEvent<HTMLElement>, element: NetworkElementConnection) => {
+ this.setState({
+ networkElementToEdit: {
+ nodeId: element.nodeId,
+ isRequired: element.isRequired,
+ host: element.host,
+ port: element.port,
+ username: element.username,
+ password: element.password,
+ },
+ networkElementEditorMode: EditNetworkElementDialogMode.EditNetworkElement
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ private onOpenUnmountdNetworkElementsDialog = (event: React.MouseEvent<HTMLElement>, element: NetworkElementConnection) => {
+ this.setState({
+ networkElementToEdit: element,
+ networkElementEditorMode: EditNetworkElementDialogMode.UnmountNetworkElement
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ private onOpenMountdNetworkElementsDialog = (event: React.MouseEvent<HTMLElement>, element: NetworkElementConnection) => {
+ this.setState({
+ networkElementToEdit: element,
+ networkElementEditorMode: EditNetworkElementDialogMode.MountNetworkElement
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ private onOpenInfoNetworkElementDialog = (event: React.MouseEvent<HTMLElement>, element: NetworkElementConnection) => {
+ this.props.networkElementInfo(element.nodeId);
+ this.setState({
+ networkElementToEdit: element,
+ infoNetworkElementEditorMode: InfoNetworkElementDialogMode.InfoNetworkElement,
+ });
+ event.preventDefault();
+ event.stopPropagation();
+ }
+
+ private onCloseEditNetworkElementDialog = () => {
+ this.setState({
+ networkElementEditorMode: EditNetworkElementDialogMode.None,
+ networkElementToEdit: emptyRequireNetworkElement,
+ });
+ }
+ private onCloseInfoNetworkElementDialog = () => {
+ this.setState({
+ infoNetworkElementEditorMode: InfoNetworkElementDialogMode.None,
+ networkElementToEdit: emptyRequireNetworkElement,
+ });
+ }
+
+ private navigateToApplicationHandlerCreator = (applicationName: string, element: NetworkElementConnection) => (event: React.MouseEvent<HTMLElement>) => {
+ this.props.navigateToApplication(applicationName, element.nodeId);
+ event.preventDefault();
+ event.stopPropagation();
+ }
+}
+
+export const NetworkElementsList = withStyles(styles)(connect(mapProps, mapDispatch)(NetworkElementsListComponent));
+export default NetworkElementsList; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx
deleted file mode 100644
index 2fb7594aa..000000000
--- a/sdnr/wt/odlux/apps/connectApp/src/components/requiredNetworkElements.tsx
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import * as React from 'react';
-import { Theme, createStyles, withStyles, WithStyles } from '@material-ui/core/styles';
-
-import AddIcon from '@material-ui/icons/Add';
-import LinkIcon from '@material-ui/icons/Link';
-import LinkOffIcon from '@material-ui/icons/LinkOff';
-import RemoveIcon from '@material-ui/icons/RemoveCircleOutline';
-
-import Button from '@material-ui/core/Button';
-import IconButton from '@material-ui/core/IconButton';
-
-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 { NavigateToApplication } from '../../../../framework/src/actions/navigationActions';
-
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
-import { createRequiredNetworkElementsActions, createRequiredNetworkElementsProperties } from '../handlers/requiredNetworkElementsHandler';
-
-import EditNetworkElementDialog, { EditNetworkElementDialogMode } from './editNetworkElementDialog';
-import { Tooltip } from '@material-ui/core';
-import { NetworkElementBaseType } from 'models/networkElementBase';
-
-const styles = (theme: Theme) => createStyles({
- connectionStatusConnected: {
- color: 'darkgreen',
- },
- connectionStatusConnecting: {
- color: 'blue',
- },
- connectionStatusDisconnected: {
- color: 'red',
- },
- button: {
- margin: 0,
- padding: "6px 6px",
- minWidth: 'unset'
- },
- spacer: {
- marginLeft: theme.spacing.unit,
- marginRight: theme.spacing.unit,
- display: "inline"
- }
-});
-
-const mapProps = (state: IApplicationStoreState) => ({
- requiredNetworkElementsProperties: createRequiredNetworkElementsProperties(state),
- mountedNetworkElements: state.connect.mountedNetworkElements
-});
-
-const mapDispatch = (dispatcher: IDispatcher) => ({
- requiredNetworkElementsActions: createRequiredNetworkElementsActions(dispatcher.dispatch),
- navigateToApplication: (applicationName: string, path?: string) => dispatcher.dispatch(new NavigateToApplication(applicationName, path)),
-});
-
-type RequiredNetworkElementsListComponentProps = WithStyles<typeof styles> & Connect<typeof mapProps, typeof mapDispatch>;
-type RequiredNetworkElementsListComponentState = {
- networkElementToEdit: RequiredNetworkElementType,
- networkElementEditorMode: EditNetworkElementDialogMode
-}
-
-const emptyRequireNetworkElement = { mountId: '', host: '', port: 0 };
-
-const RequiredNetworkElementTable = MaterialTable as MaterialTableCtorType<RequiredNetworkElementType>;
-
-export class RequiredNetworkElementsListComponent extends React.Component<RequiredNetworkElementsListComponentProps, RequiredNetworkElementsListComponentState> {
-
- constructor(props: RequiredNetworkElementsListComponentProps) {
- super(props);
-
- this.state = {
- networkElementToEdit: emptyRequireNetworkElement,
- networkElementEditorMode: EditNetworkElementDialogMode.None
- };
- }
-
- // private navigationCreator
-
- render(): JSX.Element {
- const { classes } = this.props;
- const { networkElementToEdit } = this.state;
- const addRequireNetworkElementAction = {
- icon: AddIcon, tooltip: 'Add', onClick: () => {
- this.setState({
- networkElementEditorMode: EditNetworkElementDialogMode.MountNetworkElementToRequiredNetworkElements,
- networkElementToEdit: emptyRequireNetworkElement,
- });
- }
- };
- return (
- <>
- <RequiredNetworkElementTable customActionButtons={ [addRequireNetworkElementAction] } columns={ [
- { property: "mountId", title: "Name", type: ColumnType.text },
- {
- property: "connectionStatus", title: "Connection Status", type: ColumnType.custom, disableFilter: true, disableSorting: true, customControl: ({ rowData }) => {
- const unknownNetworkElement = this.props.mountedNetworkElements.elements.find(el => el.mountId === rowData.mountId);
- const connectionStatus = unknownNetworkElement && unknownNetworkElement.connectionStatus || 'disconnected';
- const cssClasses = connectionStatus === "connected"
- ? classes.connectionStatusConnected
- : connectionStatus === "disconnected"
- ? classes.connectionStatusDisconnected
- : classes.connectionStatusConnecting
- return <div className={ cssClasses } >{ connectionStatus } </div>
-
- }
- },
- { property: "host", title: "Host", type: ColumnType.text },
- { property: "port", title: "Port", type: ColumnType.text },
- // { property: "username", title: "Username", type: ColumnType.text },
- // { property: "password", title: "Password", type: ColumnType.text },
- {
- property: "actions", title: "Actions", type: ColumnType.custom, customControl: ({ rowData }) => {
- const unknownNetworkElement = this.props.mountedNetworkElements.elements.find(el => el.mountId === rowData.mountId);
- const connectionStatus = unknownNetworkElement && unknownNetworkElement.connectionStatus || 'disconnected';
- return (
- <>
- <div className={ classes.spacer }>
- <Tooltip title={ "Mount" } ><IconButton className={ classes.button } onClick={ event => this.onOpenMountdNetworkElementsDialog(event, rowData) }><LinkIcon /></IconButton></Tooltip>
- <Tooltip title={ "Unmount" } ><IconButton className={ classes.button } onClick={ event => this.onOpenUnmountdNetworkElementsDialog(event, rowData) }><LinkOffIcon /></IconButton></Tooltip>
- <Tooltip title={ "Remove" } ><IconButton className={ classes.button } onClick={ event => this.onOpenRemoveRequiredNetworkElementDialog(event, rowData) } ><RemoveIcon /></IconButton></Tooltip>
- </div>
- <div className={ classes.spacer }>
- <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("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>
- </>
- )
- }
- },
- ] } idProperty="mountId" { ...this.props.requiredNetworkElementsActions } { ...this.props.requiredNetworkElementsProperties } asynchronus >
- </RequiredNetworkElementTable>
- <EditNetworkElementDialog
- initialNetworkElement={ networkElementToEdit }
- mode={ this.state.networkElementEditorMode }
- onClose={ this.onCloseEditNetworkElementDialog }
- />
- </>
- );
- };
-
- public componentDidMount() {
- this.props.requiredNetworkElementsActions.onRefresh();
- }
-
- private onOpenRemoveRequiredNetworkElementDialog = (event: React.MouseEvent<HTMLElement>, element: RequiredNetworkElementType) => {
- this.setState({
- networkElementToEdit: element,
- networkElementEditorMode: EditNetworkElementDialogMode.RequiredNetworkElementToUnknownNetworkElements
- });
- event.preventDefault();
- event.stopPropagation();
- }
-
- private onOpenUnmountdNetworkElementsDialog = (event: React.MouseEvent<HTMLElement>, element: RequiredNetworkElementType) => {
- this.setState({
- networkElementToEdit: element,
- networkElementEditorMode: EditNetworkElementDialogMode.UnmountNetworkElement
- });
- event.preventDefault();
- event.stopPropagation();
- }
-
- private onOpenMountdNetworkElementsDialog = (event: React.MouseEvent<HTMLElement>, element: RequiredNetworkElementType) => {
- this.setState({
- networkElementToEdit: element,
- networkElementEditorMode: EditNetworkElementDialogMode.MountNetworkElement
- });
- event.preventDefault();
- event.stopPropagation();
- }
-
- private onCloseEditNetworkElementDialog = () => {
- this.setState({
- networkElementEditorMode: EditNetworkElementDialogMode.None,
- networkElementToEdit: emptyRequireNetworkElement,
- });
- }
-
- private navigateToApplicationHandlerCreator = (applicationName: string, element: NetworkElementBaseType) => (event: React.MouseEvent<HTMLElement>) => {
- this.props.navigateToApplication(applicationName, element.mountId);
- event.preventDefault();
- event.stopPropagation();
- }
-}
-
-export const RequiredNetworkElementsList = withStyles(styles)(connect(mapProps, mapDispatch)(RequiredNetworkElementsListComponent));
-export default RequiredNetworkElementsList; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx b/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx
deleted file mode 100644
index 62b969575..000000000
--- a/sdnr/wt/odlux/apps/connectApp/src/components/unknownNetworkElements.tsx
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import * as React from 'react';
-import { Theme, createStyles, WithStyles, withStyles, Tooltip } from '@material-ui/core';
-
-import AddIcon from '@material-ui/icons/Add';
-import LinkOffIcon from '@material-ui/icons/LinkOff';
-import AddCircleIcon from '@material-ui/icons/AddCircleOutline';
-
-import Button from '@material-ui/core/Button';
-import IconButton from '@material-ui/core/IconButton';
-
-import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
-import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table';
-import { Connect, connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { NavigateToApplication } from '../../../../framework/src/actions/navigationActions';
-
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
-import { IMountedNetworkElementsState } from '../handlers/mountedNetworkElementsHandler';
-import EditNetworkElementDialog, { EditNetworkElementDialogMode } from './editNetworkElementDialog';
-import { NetworkElementBaseType } from 'models/networkElementBase';
-
-
-const styles = (theme: Theme) => createStyles({
- button: {
- margin: 0,
- padding: "6px 6px",
- minWidth: 'unset'
- },
- spacer: {
- marginLeft: theme.spacing.unit,
- marginRight: theme.spacing.unit,
- display: "inline"
- }
-});
-
-const mapProps = ({ connect: state }: IApplicationStoreState) => ({
- mountedNetworkElements: state.mountedNetworkElements
-});
-
-const mapDispatch = (dispatcher: IDispatcher) => ({
- navigateToApplication: (applicationName: string, path?: string) => dispatcher.dispatch(new NavigateToApplication(applicationName, path)),
-});
-type UnknownNetworkElementDisplayType = NetworkElementBaseType & {
- connectionStatus: string,
- coreModelRev: string,
- airInterfaceRev: string
-}
-
-type UnknownNetworkElementsListProps = WithStyles<typeof styles> & Connect<typeof mapProps, typeof mapDispatch> & {}
-
-type UnknownNetworkElementsListState = {
-
- unknownNetworkElements: UnknownNetworkElementDisplayType[];
-
- networkElementToEdit: RequiredNetworkElementType;
- networkElementEditorMode: EditNetworkElementDialogMode;
-}
-
-
-const emptyRequireNetworkElement = { mountId: '', host: '', port: 0 };
-const UnknownNetworkElementTable = MaterialTable as MaterialTableCtorType<UnknownNetworkElementDisplayType>;
-export class UnknownNetworkElementsListComponent extends React.Component<UnknownNetworkElementsListProps, UnknownNetworkElementsListState> {
-
- constructor(props: UnknownNetworkElementsListProps) {
- super(props);
-
- this.state = {
- unknownNetworkElements: [],
- networkElementToEdit: emptyRequireNetworkElement,
- networkElementEditorMode: EditNetworkElementDialogMode.None,
- };
- }
-
- static getDerivedStateFromProps(props: UnknownNetworkElementsListProps, state: UnknownNetworkElementsListState & { _mountedNetworkElements: IMountedNetworkElementsState }) {
- if (props.mountedNetworkElements != state._mountedNetworkElements) {
- state.unknownNetworkElements = props.mountedNetworkElements.elements.filter(element => !element.required).map(element => {
-
- // handle onfCoreModelRevision
- const onfCoreModelRevision = element.capabilities.find((cap) => {
- return cap.module === 'core-model' || cap.module === 'CoreModel-CoreNetworkModule-ObjectClasses' ;
- });
- const onfAirInterfaceRevision = element.capabilities.find((cap) => {
- return cap.module === 'microwave-model' || cap.module === 'MicrowaveModel-ObjectClasses-AirInterface' ;
- });
- return {
- mountId: element.mountId,
- host: element.host,
- port: element.port,
- connectionStatus: element.connectionStatus,
- coreModelRev: onfCoreModelRevision && onfCoreModelRevision.revision || 'unknown',
- airInterfaceRev: onfAirInterfaceRevision && onfAirInterfaceRevision.revision || 'unknown'
- }
- }
- );
- }
- return state;
- }
-
- render(): JSX.Element {
- const { classes } = this.props;
- const { networkElementToEdit, networkElementEditorMode, unknownNetworkElements } = this.state;
- const addRequireNetworkElementAction = {
- icon: AddIcon, tooltip: 'Add', onClick: () => {
- this.setState({
- networkElementEditorMode: EditNetworkElementDialogMode.MountNetworkElementToUnknonwNetworkElements,
- networkElementToEdit: emptyRequireNetworkElement,
- });
- }
- };
- return (
- <>
- <UnknownNetworkElementTable customActionButtons={ [addRequireNetworkElementAction] } asynchronus rows={ unknownNetworkElements } columns={ [
- { property: "mountId", title: "Name", type: ColumnType.text },
- { property: "connectionStatus", title: "Connection Status", type: ColumnType.text },
- { property: "host", title: "Host", type: ColumnType.text },
- { property: "port", title: "Port", type: ColumnType.text },
- { property: "coreModelRev", title: "Core Model", type: ColumnType.text },
- { property: "airInterfaceRev", title: "Air interface", type: ColumnType.text },
- {
- property: "actions", title: "Actions", type: ColumnType.custom, customControl: ({ rowData }) => (
- <>
- <div className={ classes.spacer }>
- <Tooltip title={ "Unmount" } ><IconButton className={ classes.button } onClick={ event => this.onOpenUnmountdNetworkElementsDialog(event, rowData) } ><LinkOffIcon /></IconButton></Tooltip>
- <Tooltip title={ "Add to required" } ><IconButton className={ classes.button } onClick={ event => this.onOpenAddToRequiredNetworkElementsDialog(event, rowData) } ><AddCircleIcon /></IconButton></Tooltip>
- </div>
- <div className={ classes.spacer }>
- <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("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>
- </>
- )
- },
- ] } idProperty="mountId" >
- </UnknownNetworkElementTable>
-
- <EditNetworkElementDialog
- mode={ networkElementEditorMode }
- initialNetworkElement={ networkElementToEdit }
- onClose={ this.onCloseEditNetworkElementDialog }
- />
- </>
- );
- };
-
- private onOpenAddToRequiredNetworkElementsDialog = (event: React.MouseEvent<HTMLElement>, element: UnknownNetworkElementDisplayType) => {
- this.setState({
- networkElementToEdit: {
- mountId: element.mountId,
- host: element.host,
- port: element.port,
- username: 'admin',
- password: 'admin',
- },
- networkElementEditorMode: EditNetworkElementDialogMode.UnknownNetworkElementToRequiredNetworkElements
- });
- event.preventDefault();
- event.stopPropagation();
- }
-
- private onOpenUnmountdNetworkElementsDialog = (event: React.MouseEvent<HTMLElement>, element: UnknownNetworkElementDisplayType) => {
- this.setState({
- networkElementToEdit: {
- mountId: element.mountId,
- host: element.host,
- port: element.port
- },
- networkElementEditorMode: EditNetworkElementDialogMode.UnmountNetworkElement
- });
- event.preventDefault();
- event.stopPropagation();
- }
-
- private onCloseEditNetworkElementDialog = () => {
- this.setState({
- networkElementEditorMode: EditNetworkElementDialogMode.None,
- networkElementToEdit: emptyRequireNetworkElement,
- });
- }
-
- private navigateToApplicationHandlerCreator = (applicationName: string, element: NetworkElementBaseType) => (event: React.MouseEvent<HTMLElement>) => {
- this.props.navigateToApplication(applicationName, element.mountId);
- event.preventDefault();
- event.stopPropagation();
- }
-
-}
-
-export const UnknownNetworkElementsList = withStyles(styles)(connect(mapProps, mapDispatch)(UnknownNetworkElementsListComponent));
-export default UnknownNetworkElementsList;
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.ts b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.ts
new file mode 100644
index 000000000..1440599fd
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.ts
@@ -0,0 +1,83 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+import { IActionHandler } from '../../../../framework/src/flux/action';
+import { combineActionHandler } from '../../../../framework/src/flux/middleware';
+import { INetworkElementsState, networkElementsActionHandler } from './networkElementsHandler';
+import { IConnectionStatusLogState, connectionStatusLogActionHandler } from './connectionStatusLogHandler';
+import { IInfoNetworkElementsState, infoNetworkElementsActionHandler } from './infoNetworkElementHandler';
+import { SetPanelAction, AddWebUriList, RemoveWebUri } from '../actions/commonNetworkElementsActions';
+import { PanelId } from '../models/panelId';
+import { guiCutThrough } from '../models/guiCutTrough';
+
+export interface IConnectAppStoreState {
+ networkElements: INetworkElementsState;
+ connectionStatusLog: IConnectionStatusLogState;
+ currentOpenPanel: PanelId;
+ elementInfo: IInfoNetworkElementsState;
+ guiCutThrough: guiCutThroughState;
+}
+
+const currentOpenPanelHandler: IActionHandler<PanelId> = (state = null, action) => {
+ if (action instanceof SetPanelAction) {
+ state = action.panelId;
+ }
+ return state;
+}
+
+interface guiCutThroughState {
+ availableWebUris: guiCutThrough[];
+ knownElements: string[];
+}
+
+const guiCutThroughHandler: IActionHandler<guiCutThroughState> = (state = { availableWebUris: [], knownElements: [] }, action) => {
+ if (action instanceof AddWebUriList) {
+ let knownElements: string[];
+ let availableWebUris: guiCutThrough[];
+
+ knownElements = state.knownElements.concat(action.knownElements);
+
+ availableWebUris = state.availableWebUris.concat(action.element);
+
+ state = { availableWebUris: availableWebUris, knownElements: knownElements }
+
+ } else if (action instanceof RemoveWebUri) {
+ const nodeId = action.element;
+ const webUris = state.availableWebUris.filter(item => item.nodeId !== nodeId);
+ const knownElements = state.knownElements.filter(item => item !== nodeId);
+ state = { knownElements: knownElements, availableWebUris: webUris };
+ }
+ return state;
+}
+
+declare module '../../../../framework/src/store/applicationStore' {
+ interface IApplicationStoreState {
+ connect: IConnectAppStoreState
+ }
+}
+
+const actionHandlers = {
+ networkElements: networkElementsActionHandler,
+ connectionStatusLog: connectionStatusLogActionHandler,
+ currentOpenPanel: currentOpenPanelHandler,
+ elementInfo: infoNetworkElementsActionHandler,
+ guiCutThrough: guiCutThroughHandler
+};
+
+export const connectAppRootHandler = combineActionHandler<IConnectAppStoreState>(actionHandlers);
+export default connectAppRootHandler;
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx
deleted file mode 100644
index 1c27f4b32..000000000
--- a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectAppRootHandler.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import { combineActionHandler } from '../../../../framework/src/flux/middleware';
-import { IRequiredNetworkElementsState, requiredNetworkElementsActionHandler } from './requiredNetworkElementsHandler';
-import { IMountedNetworkElementsState, mountedNetworkElementsActionHandler } from './mountedNetworkElementsHandler';
-import { IConnectionStatusLogState, connectionStatusLogActionHandler } from './connectionStatusLogHandler';
-
-export interface IConnectAppStoreState {
- requiredNetworkElements: IRequiredNetworkElementsState;
- mountedNetworkElements: IMountedNetworkElementsState;
- connectionStatusLog: IConnectionStatusLogState;
-}
-
-declare module '../../../../framework/src/store/applicationStore' {
- interface IApplicationStoreState {
- connect: IConnectAppStoreState
- }
-}
-
-const actionHandlers = {
- requiredNetworkElements: requiredNetworkElementsActionHandler,
- mountedNetworkElements: mountedNetworkElementsActionHandler,
- connectionStatusLog: connectionStatusLogActionHandler
-};
-
-export const connectAppRootHandler = combineActionHandler <IConnectAppStoreState>(actionHandlers);
-export default connectAppRootHandler;
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.ts
index 10b3b1b07..6863ec33b 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/handlers/requiredNetworkElementsHandler.tsx
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.ts
@@ -18,18 +18,18 @@
import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
-export interface IRequiredNetworkElementsState extends IExternalTableState<RequiredNetworkElementType> { }
+import { NetworkElementConnectionLog } from '../models/networkElementConnectionLog';
+export interface IConnectionStatusLogState extends IExternalTableState<NetworkElementConnectionLog> { }
// create eleactic search material data fetch handler
-const requiredNetworkElementsSearchHandler = createSearchDataHandler<RequiredNetworkElementType>('mwtn/required-networkelement');
+const connectionStatusLogSearchHandler = createSearchDataHandler<NetworkElementConnectionLog>('connectionlog');
export const {
- actionHandler: requiredNetworkElementsActionHandler,
- createActions: createRequiredNetworkElementsActions,
- createProperties: createRequiredNetworkElementsProperties,
- reloadAction: requiredNetworkElementsReloadAction,
+ actionHandler: connectionStatusLogActionHandler,
+ createActions: createConnectionStatusLogActions,
+ createProperties: createConnectionStatusLogProperties,
+ reloadAction: connectionStatusLogReloadAction,
// set value action, to change a value
-} = createExternal<RequiredNetworkElementType>(requiredNetworkElementsSearchHandler, appState => appState.connect.requiredNetworkElements);
+} = createExternal<NetworkElementConnectionLog>(connectionStatusLogSearchHandler, appState => appState.connect.connectionStatusLog);
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx
deleted file mode 100644
index 57e1930ed..000000000
--- a/sdnr/wt/odlux/apps/connectApp/src/handlers/connectionStatusLogHandler.tsx
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
-import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-
-import { ConnectionStatusLogType } from '../models/connectionStatusLog';
-export interface IConnectionStatusLogState extends IExternalTableState<ConnectionStatusLogType> { }
-
-// create eleactic search material data fetch handler
-const connectionStatusLogSearchHandler = createSearchDataHandler<{ event: ConnectionStatusLogType }, ConnectionStatusLogType>('sdnevents_v1/eventlog', null,
- (event) => ({
- _id: event._id,
- timeStamp: event._source.event.timeStamp,
- objectId: event._source.event.objectId,
- type: event._source.event.type,
- elementStatus: event._source.event.type === 'ObjectCreationNotificationXml'
- ? 'mounted'
- : event._source.event.type === 'ObjectDeletionNotificationXml'
- ? 'unmounted'
- : event._source.event.type === 'AttributeValueChangedNotificationXml'
- ? event._source.event.newValue
- : 'unknown',
- newValue: ''
-
- }),
- (name) => `event.${ name }`);
-
-export const {
- actionHandler: connectionStatusLogActionHandler,
- createActions: createConnectionStatusLogActions,
- createProperties: createConnectionStatusLogProperties,
- reloadAction: connectionStatusLogReloadAction,
-
- // set value action, to change a value
-} = createExternal<ConnectionStatusLogType>(connectionStatusLogSearchHandler, appState => appState.connect.connectionStatusLog);
-
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/infoNetworkElementHandler.ts b/sdnr/wt/odlux/apps/connectApp/src/handlers/infoNetworkElementHandler.ts
new file mode 100644
index 000000000..d67a81ec4
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/infoNetworkElementHandler.ts
@@ -0,0 +1,60 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import { IActionHandler } from '../../../../framework/src/flux/action';
+
+import { AllElementInfoLoadedAction, LoadAllElementInfoAction } from '../actions/infoNetworkElementActions';
+
+import { TopologyNode } from '../models/topologyNetconf';
+
+export interface IInfoNetworkElementsState {
+ elementInfo: TopologyNode;
+ busy: boolean;
+}
+
+const infoNetworkElementsStateInit: IInfoNetworkElementsState = {
+ elementInfo: {
+ "node-id": "",
+ "netconf-node-topology:available-capabilities": {
+ "available-capability": []
+ }
+ },
+ busy: false
+};
+
+export const infoNetworkElementsActionHandler: IActionHandler<IInfoNetworkElementsState> = (state = infoNetworkElementsStateInit, action) => {
+ if (action instanceof LoadAllElementInfoAction) {
+ state = {
+ ...state,
+ busy: true
+ };
+ } else if (action instanceof AllElementInfoLoadedAction) {
+ if (!action.error && action.elementInfo) {
+ state = {
+ ...state,
+ elementInfo: action.elementInfo,
+ busy: false
+ };
+ } else {
+ state = {
+ ...state,
+ busy: false
+ };
+ }
+ }
+ return state;
+}; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx b/sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx
deleted file mode 100644
index 089268946..000000000
--- a/sdnr/wt/odlux/apps/connectApp/src/handlers/mountedNetworkElementsHandler.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import { IActionHandler } from '../../../../framework/src/flux/action';
-
-import {
- AddOrUpdateMountedNetworkElement,
- AllMountedNetworkElementsLoadedAction,
- LoadAllMountedNetworkElementsAction,
- RemoveMountedNetworkElement,
- UpdateConnectionStateMountedNetworkElement,
- UpdateRequiredMountedNetworkElement
-} from '../actions/mountedNetworkElementsActions';
-
-import { MountedNetworkElementType } from '../models/mountedNetworkElements';
-
-export interface IMountedNetworkElementsState {
- elements: MountedNetworkElementType[];
- busy: boolean;
-}
-
-const mountedNetworkElementsStateInit: IMountedNetworkElementsState = {
- elements: [],
- busy: false
-};
-
-export const mountedNetworkElementsActionHandler: IActionHandler<IMountedNetworkElementsState> = (state = mountedNetworkElementsStateInit, action) => {
- if (action instanceof LoadAllMountedNetworkElementsAction) {
-
- state = {
- ...state,
- busy: true
- };
-
- } else if (action instanceof AllMountedNetworkElementsLoadedAction) {
- if (!action.error && action.mountedNetworkElements) {
- state = {
- ...state,
- elements: action.mountedNetworkElements,
- busy: false
- };
- } else {
- state = {
- ...state,
- busy: false
- };
- }
- } else if (action instanceof AddOrUpdateMountedNetworkElement) {
- if (!action.mountedNetworkElement) return state; // should handle error here
- const index = state.elements.findIndex(el => el.mountId === (action.mountedNetworkElement && action.mountedNetworkElement.mountId));
- if (index > -1) {
- state = {
- ...state,
- elements: [
- ...state.elements.slice(0, index),
- action.mountedNetworkElement,
- ...state.elements.slice(index + 1)
- ]
- }
- } else {
- state = {
- ...state,
- elements: [...state.elements, action.mountedNetworkElement],
- }
- };
- } else if (action instanceof RemoveMountedNetworkElement) {
- state = {
- ...state,
- elements: state.elements.filter(e => e.mountId !== action.mountId),
- };
- } else if (action instanceof UpdateConnectionStateMountedNetworkElement) {
- const index = state.elements.findIndex(el => el.mountId === action.mountId);
- if (index > -1) {
- state = {
- ...state,
- elements: [
- ...state.elements.slice(0, index),
- { ...state.elements[index], connectionStatus: action.mountId },
- ...state.elements.slice(index + 1)
- ]
- }
- }
- } else if (action instanceof UpdateRequiredMountedNetworkElement) {
- const index = state.elements.findIndex(el => el.mountId === action.mountId);
- if (index > -1 && (state.elements[index].required !== action.required)) {
- state = {
- ...state,
- elements: [
- ...state.elements.slice(0, index),
- { ...state.elements[index], required: action.required },
- ...state.elements.slice(index + 1)
- ]
- }
- }
- };
- return state;
-}; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/handlers/networkElementsHandler.ts b/sdnr/wt/odlux/apps/connectApp/src/handlers/networkElementsHandler.ts
new file mode 100644
index 000000000..78c7000d2
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/handlers/networkElementsHandler.ts
@@ -0,0 +1,58 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
+import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
+
+import { NetworkElementConnection } from '../models/networkElementConnection';
+import connectService from '../services/connectService';
+import { requestRest } from '../../../../framework/src/services/restService';
+export interface INetworkElementsState extends IExternalTableState<NetworkElementConnection> { }
+
+// create eleactic search material data fetch handler
+const networkElementsSearchHandler = createSearchDataHandler<NetworkElementConnection>('network-element-connection');
+
+export const {
+ actionHandler: networkElementsActionHandler,
+ createActions: createNetworkElementsActions,
+ createProperties: createNetworkElementsProperties,
+ reloadAction: networkElementsReloadAction,
+
+ // set value action, to change a value
+} = createExternal<NetworkElementConnection>(networkElementsSearchHandler, appState => {
+
+ const webUris = appState.connect.guiCutThrough.availableWebUris;
+ if (appState.connect.networkElements.rows && webUris.length > 0) {
+
+ appState.connect.networkElements.rows.forEach(element => {
+
+ if (element.status === "Connected") {
+ const webUri = webUris.find(item => item.nodeId === element.id as string);
+ if (webUri) {
+ element.webUri = webUri.webUri;
+ element.isWebUriUnreachable = false;
+ }
+ else {
+ element.isWebUriUnreachable = true
+ }
+ }
+ });
+ }
+
+ return appState.connect.networkElements
+});
+
diff --git a/sdnr/wt/odlux/apps/connectApp/src/index.html b/sdnr/wt/odlux/apps/connectApp/src/index.html
index 0f95005de..9c8a2063e 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/index.html
+++ b/sdnr/wt/odlux/apps/connectApp/src/index.html
@@ -5,7 +5,7 @@
<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" >
+ <link rel="stylesheet" href="./vendor.css">
<title>connectApp</title>
</head>
@@ -15,9 +15,10 @@
<script type="text/javascript" src="./config.js"></script>
<script>
// run the application
- require(["app","connectApp", "faultApp"], function (app, connectApp, faultApp) {
+ require(["app", "connectApp", "faultApp", "inventoryApp", "configurationApp"], function (app, connectApp, faultApp, inventoryApp, configurationApp) {
connectApp.register();
faultApp.register();
+ inventoryApp.register();
app("./app.tsx").runApplication();
});
</script>
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/guiCutTrough.ts b/sdnr/wt/odlux/apps/connectApp/src/models/guiCutTrough.ts
new file mode 100644
index 000000000..4b443bac8
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/models/guiCutTrough.ts
@@ -0,0 +1 @@
+export type guiCutThrough = { webUri: string, nodeId: string } \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnection.ts b/sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnection.ts
new file mode 100644
index 000000000..4c2dc9b09
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnection.ts
@@ -0,0 +1,36 @@
+export type NetworkElementConnection = {
+ id?: string;
+ nodeId: string;
+ isRequired: boolean;
+ host: string;
+ port: number;
+ username?: string;
+ password?: string;
+ webUri?: string;
+ isWebUriUnreachable?: boolean;
+ status?: "Connected" | "mounted" | "unmounted" | "Connecting" | "Disconnected" | "idle";
+ coreModelCapability?: string;
+ deviceType?: string;
+ nodeDetails?: {
+ availableCapabilites: {
+ capabilityOrigin: string;
+ capability: string;
+ }[];
+ unavailableCapabilities: {
+ failureReason: string;
+ capability: string;
+ }[];
+ }
+}
+
+
+export type UpdateNetworkElement = {
+ id: string;
+ isRequired?: boolean;
+ username?: string;
+ password?: string;
+}
+
+export type ConnectionStatus = {
+ status: string
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/mountedNetworkElements.ts b/sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnectionLog.ts
index 0be38a615..a1535cbe5 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/models/mountedNetworkElements.ts
+++ b/sdnr/wt/odlux/apps/connectApp/src/models/networkElementConnectionLog.ts
@@ -15,14 +15,11 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-import { NetworkElementBaseType } from "./networkElementBase";
-/**
-* Represents data of an mounted network elements.
-*/
-export type MountedNetworkElementType = NetworkElementBaseType & {
- connectionStatus: string;
- required: boolean;
- capabilities: { module: string, revision: string }[];
-};
+export type NetworkElementConnectionLog = {
+ id: string;
+ nodeId: string;
+ status: "connected" | "mounted" | "unmounted" | "connecting" | "disconnected" | "idle";
+ timestamp: string;
+}
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/panelId.ts b/sdnr/wt/odlux/apps/connectApp/src/models/panelId.ts
new file mode 100644
index 000000000..b51412055
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/models/panelId.ts
@@ -0,0 +1 @@
+export type PanelId = null | "NetworkElements" | "ConnectionStatusLog"; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/topologyNetconf.ts b/sdnr/wt/odlux/apps/connectApp/src/models/topologyNetconf.ts
index 357245d46..694009d1b 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/models/topologyNetconf.ts
+++ b/sdnr/wt/odlux/apps/connectApp/src/models/topologyNetconf.ts
@@ -15,14 +15,6 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-export interface UnavailableCapability {
- capability: string;
- "failure-reason": string;
-}
-
-export interface NetconfNodeTopologyUnavailableCapabilities {
- "unavailable-capability": UnavailableCapability[];
-}
export interface AvailableCapability {
"capability-origin": string;
@@ -33,18 +25,9 @@ export interface NetconfNodeTopologyAvailableCapabilities {
"available-capability": AvailableCapability[];
}
-export interface NetconfNodeTopologyClusteredConnectionStatus {
- "netconf-master-node": string
-}
-
export interface TopologyNode {
"node-id": string;
- "netconf-node-topology:clustered-connection-status": NetconfNodeTopologyClusteredConnectionStatus;
- "netconf-node-topology:unavailable-capabilities": NetconfNodeTopologyUnavailableCapabilities;
"netconf-node-topology:available-capabilities": NetconfNodeTopologyAvailableCapabilities;
- "netconf-node-topology:host": string;
- "netconf-node-topology:connection-status": string;
- "netconf-node-topology:port": number;
}
export interface Topology {
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/yangCapabilitiesType.ts b/sdnr/wt/odlux/apps/connectApp/src/models/yangCapabilitiesType.ts
new file mode 100644
index 000000000..230468287
--- /dev/null
+++ b/sdnr/wt/odlux/apps/connectApp/src/models/yangCapabilitiesType.ts
@@ -0,0 +1,22 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+export type AvailableCapabilities = {
+ module: string,
+ revision: string
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/plugin.tsx b/sdnr/wt/odlux/apps/connectApp/src/pluginConnect.tsx
index aa08e7b15..f711c440c 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/plugin.tsx
+++ b/sdnr/wt/odlux/apps/connectApp/src/pluginConnect.tsx
@@ -22,15 +22,10 @@ import applicationManager from '../../../framework/src/services/applicationManag
import { subscribe, IFormatedMessage } from '../../../framework/src/services/notificationService';
import connectAppRootHandler from './handlers/connectAppRootHandler';
-import ConnectApplication from './views/connectView';
-
-import {
- addMountedNetworkElementAsyncActionCreator,
- updateMountedNetworkElementAsyncActionCreator,
- loadAllMountedNetworkElementsAsync
-} from './actions/mountedNetworkElementsActions';
+import ConnectApplication from './views/connectView';
import { AddSnackbarNotification } from '../../../framework/src/actions/snackbarActions';
+import { updateCurrentViewAsyncAction } from './actions/commonNetworkElementsActions';
type ObjectNotification = {
counter: string;
@@ -48,22 +43,14 @@ export function register() {
menuEntry: "Connect"
});
- const updateAllMountedNetworkElements = () => {
- applicationApi.applicationStoreInitialized.then(applicationStore => { applicationStore.dispatch(loadAllMountedNetworkElementsAsync); })
- };
-
- applicationApi.loginEvent.addHandler(updateAllMountedNetworkElements);
- updateAllMountedNetworkElements();
-
// subscribe to the websocket notifications
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" || msg.notifType === "AttributeValueChangedNotification") && store) {
store.dispatch(new AddSnackbarNotification({ message: `Updating network element [${msg.objectId}]`, options: { variant: 'info' } }));
- store.dispatch(updateMountedNetworkElementAsyncActionCreator(msg.objectId));
}
+ store && store.dispatch(updateCurrentViewAsyncAction());
}));
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts b/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts
index b50a06ee1..7a410f4ae 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts
+++ b/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts
@@ -15,150 +15,66 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-import { RequiredNetworkElementType } from '../models/requiredNetworkElements';
-import { MountedNetworkElementType } from '../models/mountedNetworkElements';
-import { Topology, TopologyNode } from '../models/topologyNetconf';
import { requestRest } from '../../../../framework/src/services/restService';
-import { Result, HitEntry } from '../../../../framework/src/models/elasticSearch';
+import { NetworkElementConnection, ConnectionStatus, UpdateNetworkElement } from '../models/networkElementConnection';
+import { convertPropertyNames, replaceUpperCase } from '../../../../framework/src/utilities/yangHelper';
+import { Result } from '../../../../framework/src/models/elasticSearch';
+import { Topology, TopologyNode } from '../models/topologyNetconf';
+import { guiCutThrough } from '../models/guiCutTrough';
/**
- * Represents a web api accessor service for all Network Elements actions.
- */
+* Represents a web api accessor service for all Network Elements actions.
+*/
class ConnectService {
- /**
- * Gets all known required network elements from the backend.
- */
- public async getAllRequiredNetworkElements(): Promise<(RequiredNetworkElementType & { _id: string })[] | null> {
- const path = 'database/mwtn/required-networkelement/_search';
- const query = { "query": { "match_all": {} } };
-
- const result = await requestRest<Result<RequiredNetworkElementType>>(path, { method: "POST", body: JSON.stringify(query) });
- return result && result.hits && result.hits.hits && result.hits.hits.map(ne => ({
- _id: ne._id,
- mountId: ne._source && ne._source.mountId,
- host: ne._source && ne._source.host,
- port: ne._source && ne._source.port,
- username: ne._source && ne._source.username,
- password: ne._source && ne._source.password,
- })) || null;
- }
- public async getRequiredNetworkElementByMountId(mountId:string): Promise<(RequiredNetworkElementType & { _id: string }) | null> {
- const path = `database/mwtn/required-networkelement/${mountId}`;
-
- const result = await requestRest<HitEntry<RequiredNetworkElementType> & { found: boolean }>(path, { method: "GET" });
- return result && result.found && result._source && {
- _id: result._id,
- mountId: result._source.mountId,
- host: result._source.host,
- port: result._source.port,
- username: result._source.username,
- password: result._source.password,
- } || null;
+ /**
+ * Inserts a network elements.
+ */
+ public async createNetworkElement(element: NetworkElementConnection): Promise<NetworkElementConnection | null> {
+ const path = `/restconf/operations/data-provider:create-network-element-connection`;
+ const result = await requestRest<NetworkElementConnection>(path, {
+ method: "POST", body: JSON.stringify(convertPropertyNames({ input: element }, replaceUpperCase))
+ });
+ return result || null;
}
/**
- * Inserts data into the required network elements table.
- */
- public async insertRequiredNetworkElement(element: RequiredNetworkElementType): Promise<RequiredNetworkElementType | null> {
- const path = `database/mwtn/required-networkelement/${ element.mountId }`;
- const result = await requestRest<RequiredNetworkElementType>(path, { method: "POST", body: JSON.stringify(element) });
+ * Updates a network element.
+ */
+ public async updateNetworkElement(element: UpdateNetworkElement): Promise<NetworkElementConnection | null> {
+ const path = `/restconf/operations/data-provider:update-network-element-connection`;
+ const result = await requestRest<NetworkElementConnection>(path, {
+ method: "POST", body: JSON.stringify(convertPropertyNames({ input: element }, replaceUpperCase))
+ });
return result || null;
}
/**
- * Deletes data from the Required Network Elements backend.
+ * Deletes a network element.
*/
- public async deleteRequiredNetworkElement(element: RequiredNetworkElementType): Promise<RequiredNetworkElementType | null> {
- const path = `database/mwtn/required-networkelement/${ element.mountId }`;
- const result = await requestRest<RequiredNetworkElementType>(path, { method: "DELETE", body: JSON.stringify(element) });
+ public async deleteNetworkElement(element: UpdateNetworkElement): Promise<NetworkElementConnection | null> {
+ const query = {
+ "id": element.id
+ };
+ const path = `/restconf/operations/data-provider:delete-network-element-connection`;
+ const result = await requestRest<NetworkElementConnection>(path, {
+ method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase))
+ });
return result || null;
}
- private static mapTopologyNode = (mountPoint: TopologyNode, required: boolean ) => {
- // handle onfCapabilities
- let onfCapabilities: { module: string, revision: string }[] | undefined = undefined;
-
- const capId = 'netconf-node-topology:available-capabilities';
- if (mountPoint[capId] && mountPoint[capId]['available-capability']) {
- onfCapabilities = mountPoint[capId]['available-capability'].filter((cap) => {
- return cap.capability.includes('?revision=');
- }).map((cap) => {
- return {
- module: cap.capability.split(')')[1],
- revision: cap.capability.split('?revision=')[1].substring(0, 10)
- };
- }).sort((a, b) => {
- if (a.module < b.module) return -1;
- if (a.module > b.module) return 1;
- return 0;
- });
- }
-
- // handle clustered-connection-status
- const statusId = 'netconf-node-topology:clustered-connection-status';
- let client = 'localhost';
-
- if (mountPoint[statusId] && mountPoint[statusId]['netconf-master-node']) {
- let node = mountPoint[statusId]['netconf-master-node'];
- node = node.substring(node.indexOf('@'));
- client = node.substring(1, node.indexOf(':'));
- }
- const mountId = mountPoint["node-id"];
- return {
- mountId: mountId,
- host: mountPoint["netconf-node-topology:host"],
- port: mountPoint["netconf-node-topology:port"],
- connectionStatus: mountPoint['netconf-node-topology:connection-status'],
- capabilities: onfCapabilities || [],
- required: required,
- client
- }
- }
-
- /** Get all mounted network elements and fills the property required according to the database contents. */
- public async getMountedNetworkElementsList(): Promise<MountedNetworkElementType[] | null> {
- const path = 'restconf/operational/network-topology:network-topology/topology/topology-netconf';
-
- const topologyRequestPomise = requestRest<{ topology: Topology[] | null }>(path, { method: "GET" });
- const requiredNetworkElementsPromise = this.getAllRequiredNetworkElements();
-
- const [netconfResponse, requiredNetworkElements] = await Promise.all([topologyRequestPomise, requiredNetworkElementsPromise]);
-
- // process topologyNetconf (get all known network elements)
- const topologyNetconf = netconfResponse && netconfResponse.topology && netconfResponse.topology.find(topology => topology["topology-id"] === 'topology-netconf');
- let mountPoints = topologyNetconf && topologyNetconf.node && topologyNetconf.node.filter(
- mountPoint => mountPoint['node-id'] !== 'controller-config').map(mountedElement => {
- const required = requiredNetworkElements && requiredNetworkElements.some(
- requiredElement => requiredElement.mountId === mountedElement["node-id"]);
- return ConnectService.mapTopologyNode(mountedElement, !!required);
- });
-
- return mountPoints || [];
- }
-
- /** Get one mounted network element. */
- public async getMountedNetworkElementByMountId(mountId: string): Promise<MountedNetworkElementType | null> {
- const path = 'restconf/operational/network-topology:network-topology/topology/topology-netconf/node/' + mountId;
- const getMountedNetworkElementByMountIdPromise = requestRest<{ node: TopologyNode[] | null }>(path, { method: "GET" });
- const getRequiredNetworkElementByMountIdPromise = this.getRequiredNetworkElementByMountId(mountId);
-
- const [mountedNetworkElement, requiredNetworkElement] = await Promise.all([getMountedNetworkElementByMountIdPromise, getRequiredNetworkElementByMountIdPromise]);
- return mountedNetworkElement && mountedNetworkElement.node && ConnectService.mapTopologyNode(mountedNetworkElement.node[0], requiredNetworkElement && requiredNetworkElement.mountId === mountedNetworkElement.node[0]["node-id"] || false) || null;
- }
-
- /** Mounts an required network element. */
- public async mountNetworkElement(networkElement: RequiredNetworkElementType): Promise<boolean> {
- const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + networkElement.mountId;
+ /** Mounts network element. */
+ public async mountNetworkElement(networkElement: NetworkElementConnection): Promise<boolean> {
+ const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + networkElement.nodeId;
const mountXml = [
'<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">',
- `<node-id>${ networkElement.mountId }</node-id>`,
- `<host xmlns="urn:opendaylight:netconf-node-topology">${ networkElement.host }</host>`,
- `<port xmlns="urn:opendaylight:netconf-node-topology">${ networkElement.port }</port>`,
- `<username xmlns="urn:opendaylight:netconf-node-topology">${ networkElement.username }</username>`,
- `<password xmlns="urn:opendaylight:netconf-node-topology">${ networkElement.password }</password>`,
+ `<node-id>${networkElement.nodeId}</node-id>`,
+ `<host xmlns="urn:opendaylight:netconf-node-topology">${networkElement.host}</host>`,
+ `<port xmlns="urn:opendaylight:netconf-node-topology">${networkElement.port}</port>`,
+ `<username xmlns="urn:opendaylight:netconf-node-topology">${networkElement.username}</username>`,
+ `<password xmlns="urn:opendaylight:netconf-node-topology">${networkElement.password}</password>`,
' <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>',
' <!-- non-mandatory fields with default values, you can safely remove these if you do not wish to override any of these values-->',
@@ -189,8 +105,8 @@ class ConnectService {
};
/** Unmounts a network element by its id. */
- public async unmountNetworkElement(mountId: string): Promise<boolean> {
- const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + mountId;
+ public async unmountNetworkElement(nodeId: string): Promise<boolean> {
+ const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + nodeId;
try {
const result = await requestRest<string>(path, {
@@ -208,6 +124,84 @@ class ConnectService {
}
};
+ /** Yang capabilities of the selected network elements. */
+ public async infoNetworkElement(nodeId: string): Promise<TopologyNode | null> {
+ const path = 'restconf/operational/network-topology:network-topology/topology/topology-netconf/node/' + nodeId;
+ const topologyRequestPomise = requestRest<Topology>(path, { method: "GET" });
+
+ return topologyRequestPomise && topologyRequestPomise.then(result => {
+ return result && result.node && result.node[0] || null;
+ });
+ }
+
+ /**
+ * Get the connection state of the network element.
+ */
+ public async getNetworkElementConnectionStatus(element: string): Promise<(ConnectionStatus)[] | null> {
+ const path = `/restconf/operations/data-provider:read-network-element-connection-list`;
+ const query = {
+ "input": {
+ "filter": [{
+ "property": "node-id",
+ "filtervalue": element
+ }],
+ "pagination": {
+ "size": 20,
+ "page": 1
+ }
+ }
+ }
+ const result = await requestRest<Result<ConnectionStatus>>(path, { method: "POST", body: JSON.stringify(query) });
+ return result && result.output && result.output.data && result.output.data.map(ne => ({
+ status: ne.status
+ })) || null;
+ }
+
+ public async getWebUriExtensionForNetworkElementAsync(ne: string) {
+ const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + ne + '/yang-ext:mount/core-model:network-element';
+ try {
+ const result = await requestRest<any>(path, { method: "GET" });
+
+ if (result['network-element'].extension) {
+ const webUri = result['network-element'].extension.find((item: any) => item['value-name'] === "webUri")
+ if (webUri) {
+ return webUri.value as string;
+ }
+ }
+ } catch (error) {
+ console.log(ne + ' unrechable: ' + error)
+ }
+
+ return undefined;
+
+ }
+
+ public getAllWebUriExtensionsForNetworkElementListAsync(ne: string[]) {
+
+ let promises: any[] = [];
+ let webUris: guiCutThrough[] = []
+
+ ne.forEach(nodeId => {
+ const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + nodeId + '/yang-ext:mount/core-model:network-element';
+
+ // add search request to array
+ promises.push(requestRest<any>(path, { method: "GET" })
+ .then(result => {
+
+ if (result['network-element'] && result['network-element'].extension) {
+ const webUri = result['network-element'].extension.find((item: any) => item['value-name'] === "webUri")
+ if (webUri) {
+ webUris.push({ webUri: webUri.value, nodeId: nodeId });
+ }
+ }
+ })
+ .catch(error => console.log("network element is unreachable: " + error)))
+
+ })
+
+ // wait until all promises are done and return weburis
+ return Promise.all(promises).then(result => { return webUris });
+ }
}
export const connectService = new ConnectService();
diff --git a/sdnr/wt/odlux/apps/connectApp/src/views/connectView.tsx b/sdnr/wt/odlux/apps/connectApp/src/views/connectView.tsx
index c86b384e1..aa3391c47 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/views/connectView.tsx
+++ b/sdnr/wt/odlux/apps/connectApp/src/views/connectView.tsx
@@ -18,99 +18,94 @@
import * as React from 'react';
import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect';
+import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import { Panel } from '../../../../framework/src/components/material-ui';
-
-import { requiredNetworkElementsReloadAction, createRequiredNetworkElementsActions } from '../handlers/requiredNetworkElementsHandler';
-import { loadAllMountedNetworkElementsAsync } from '../actions/mountedNetworkElementsActions';
+import { networkElementsReloadAction, createNetworkElementsActions } from '../handlers/networkElementsHandler';
import { connectionStatusLogReloadAction, createConnectionStatusLogActions } from '../handlers/connectionStatusLogHandler';
-import { RequiredNetworkElementsList } from '../components/requiredNetworkElements';
+import { NetworkElementsList } from '../components/networkElements';
import { ConnectionStatusLog } from '../components/connectionStatusLog';
-import { UnknownNetworkElementsList } from '../components/unknownNetworkElements';
+import { setPanelAction, findWebUrisForGuiCutThroughAsyncAction } from '../actions/commonNetworkElementsActions';
+import { PanelId } from '../models/panelId';
+import { NetworkElementConnection } from 'models/networkElementConnection';
+
+const mapProps = (state: IApplicationStoreState) => ({
+ panelId: state.connect.currentOpenPanel,
+ user: state.framework.authenticationState.user,
+ netWorkElements: state.connect.networkElements,
+ availableGuiCutroughs: state.connect.guiCutThrough
+});
const mapDispatcher = (dispatcher: IDispatcher) => ({
- requiredNetworkElementsActions: createRequiredNetworkElementsActions(dispatcher.dispatch),
+ networkElementsActions: createNetworkElementsActions(dispatcher.dispatch),
connectionStatusLogActions: createConnectionStatusLogActions(dispatcher.dispatch),
- onLoadUnknownNetworkElements: () => {
- dispatcher.dispatch(loadAllMountedNetworkElementsAsync);
- },
- onLoadRequiredNetworkElements: () => {
- dispatcher.dispatch(requiredNetworkElementsReloadAction);
+ onLoadNetworkElements: () => {
+ dispatcher.dispatch(networkElementsReloadAction);
},
+ loadWebUris: findWebUrisForGuiCutThroughAsyncAction(dispatcher.dispatch),
onLoadConnectionStatusLog: () => {
dispatcher.dispatch(connectionStatusLogReloadAction);
+ },
+ switchActivePanel: (panelId: PanelId) => {
+ dispatcher.dispatch(setPanelAction(panelId));
}
});
-type PanelId = null | "RequiredNetworkElements" | "UnknownNetworkElements" | "ConnectionStatusLog";
+type ConnectApplicationComponentProps = Connect<typeof mapProps, typeof mapDispatcher>;
-type ConnectApplicationComponentProps = Connect<undefined, typeof mapDispatcher> ;
+class ConnectApplicationComponent extends React.Component<ConnectApplicationComponentProps>{
-type ConnectApplicationComponentState = {
- activePanel: PanelId;
-};
+ componentDidUpdate = () => {
+ // search for guicutthroughs after networkelements were found
+ const networkElements = this.props.netWorkElements;
+ const guiCuttrough = this.props.availableGuiCutroughs;
-class ConnectApplicationComponent extends React.Component<ConnectApplicationComponentProps, ConnectApplicationComponentState>{
- /**
- * Initialises this instance
- */
- constructor(props: ConnectApplicationComponentProps) {
- super(props);
-
- this.state = {
- activePanel: null
- };
+ if (networkElements.rows.length > 0 && networkElements.total !== guiCuttrough.knownElements.length) {
+ this.props.loadWebUris(networkElements.rows, guiCuttrough.knownElements);
+ }
}
private onTogglePanel = (panelId: PanelId) => {
- const nextActivePanel = panelId === this.state.activePanel ? null : panelId;
- this.setState({
- activePanel: nextActivePanel
- }, () => {
- switch (nextActivePanel) {
- case 'RequiredNetworkElements':
- this.props.onLoadRequiredNetworkElements();
- break;
- case 'UnknownNetworkElements':
- // todo: should we update the application state ?
- break;
- case 'ConnectionStatusLog':
- this.props.onLoadConnectionStatusLog();
- break;
- case null:
- // do nothing if all panels are closed
- break;
- default:
- console.warn("Unknown nextActivePanel [" + nextActivePanel + "] in connectView");
- break;
- }
- });
+ const nextActivePanel = panelId === this.props.panelId ? null : panelId;
+ this.props.switchActivePanel(nextActivePanel);
+
+ switch (nextActivePanel) {
+ case 'NetworkElements':
+ this.props.onLoadNetworkElements();
+ break;
+ case 'ConnectionStatusLog':
+ this.props.onLoadConnectionStatusLog();
+ break;
+ case null:
+ // do nothing if all panels are closed
+ break;
+ default:
+ console.warn("Unknown nextActivePanel [" + nextActivePanel + "] in connectView");
+ break;
+ }
+
};
render(): JSX.Element {
- const { activePanel } = this.state;
+ const { panelId } = this.props;
return (
<>
- <Panel activePanel={ activePanel } panelId={ 'RequiredNetworkElements' } onToggle={ this.onTogglePanel } title={ "Required Network Elements" }>
- <RequiredNetworkElementsList />
- </Panel>
- <Panel activePanel={ activePanel } panelId={ 'UnknownNetworkElements' } onToggle={ this.onTogglePanel } title={ "Unknown Network Elements" }>
- <UnknownNetworkElementsList />
+ <Panel activePanel={panelId} panelId={'NetworkElements'} onToggle={this.onTogglePanel} title={"Network Elements"}>
+ <NetworkElementsList />
</Panel>
- <Panel activePanel={ activePanel } panelId={ 'ConnectionStatusLog' } onToggle={ this.onTogglePanel } title={ "Connection Status Log" }>
+ <Panel activePanel={panelId} panelId={'ConnectionStatusLog'} onToggle={this.onTogglePanel} title={"Connection Status Log"}>
<ConnectionStatusLog />
</Panel>
</>
);
};
public componentDidMount() {
- this.onTogglePanel("RequiredNetworkElements");
- this.props.onLoadUnknownNetworkElements();
- this.props.requiredNetworkElementsActions.onToggleFilter();
+ this.onTogglePanel("NetworkElements");
+ this.props.networkElementsActions.onToggleFilter();
this.props.connectionStatusLogActions.onToggleFilter();
}
}
-export const ConnectApplication = (connect(undefined, mapDispatcher)(ConnectApplicationComponent));
+export const ConnectApplication = (connect(mapProps, mapDispatcher)(ConnectApplicationComponent));
export default ConnectApplication; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/connectApp/webpack.config.js b/sdnr/wt/odlux/apps/connectApp/webpack.config.js
index a70e62976..6d70b04b0 100644
--- a/sdnr/wt/odlux/apps/connectApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/connectApp/webpack.config.js
@@ -26,7 +26,7 @@ module.exports = (env) => {
context: path.resolve(__dirname, "src"),
entry: {
- connectApp: ["./plugin.tsx"]
+ connectApp: ["./pluginConnect.tsx"]
},
devtool: env === "release" ? false : "source-map",
@@ -125,12 +125,26 @@ module.exports = (env) => {
colors: true
},
proxy: {
- "/restconf": {
- target: "http://localhost:8181",
+ "/oauth2/": {
+ target: "http://10.20.6.29:28181",
secure: false
},
- "/database": {
- target: "http://localhost:8181",
+ "/database/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/restconf/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/help/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/websocket": {
+ target: "http://10.20.6.29:28181",
+ ws: true,
+ changeOrigin: true,
secure: false
}
}
diff --git a/sdnr/wt/odlux/apps/demoApp/package.json b/sdnr/wt/odlux/apps/demoApp/package.json
index 4cf46b9e1..f692d69ed 100644
--- a/sdnr/wt/odlux/apps/demoApp/package.json
+++ b/sdnr/wt/odlux/apps/demoApp/package.json
@@ -20,21 +20,21 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/demoApp/pom.xml b/sdnr/wt/odlux/apps/demoApp/pom.xml
index 60016b7a1..535549ae3 100644
--- a/sdnr/wt/odlux/apps/demoApp/pom.xml
+++ b/sdnr/wt/odlux/apps/demoApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-demoApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-demoApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/demoApp/src/models/author.ts b/sdnr/wt/odlux/apps/demoApp/src/models/author.ts
index 7e28ae8aa..0aaa308a2 100644
--- a/sdnr/wt/odlux/apps/demoApp/src/models/author.ts
+++ b/sdnr/wt/odlux/apps/demoApp/src/models/author.ts
@@ -1,4 +1,22 @@
/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+/**
* Represents an author.
*/
export interface IAuthor {
diff --git a/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx b/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx
index b461aa7bd..3d0651b49 100644
--- a/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx
+++ b/sdnr/wt/odlux/apps/demoApp/src/views/authorsList.tsx
@@ -45,19 +45,19 @@ class AuthorsListComponent extends React.Component<RouteComponentProps & IAuthor
<Table >
<TableHead>
<TableRow>
- <TableCell numeric>Id</TableCell>
+ <TableCell align="right">Id</TableCell>
<TableCell >First Name</TableCell>
<TableCell >Last Name</TableCell>
</TableRow>
</TableHead>
<TableBody>
- { authors.map(author => (
- <TableRow key={ author.id } onClick={ (e) => this.editAuthor(author) }>
- <TableCell>{ author.id }</TableCell>
- <TableCell>{ author.firstName }</TableCell>
- <TableCell>{ author.lastName }</TableCell>
+ {authors.map(author => (
+ <TableRow key={author.id} onClick={(e) => this.editAuthor(author)}>
+ <TableCell>{author.id}</TableCell>
+ <TableCell>{author.firstName}</TableCell>
+ <TableCell>{author.lastName}</TableCell>
</TableRow>
- )) }
+ ))}
</TableBody>
</Table>
</Paper>
diff --git a/sdnr/wt/odlux/apps/eventLogApp/.babelrc b/sdnr/wt/odlux/apps/eventLogApp/.babelrc
new file mode 100644
index 000000000..3d8cd1260
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/.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/eventLogApp/package.json b/sdnr/wt/odlux/apps/eventLogApp/package.json
new file mode 100644
index 000000000..2594debc1
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@odlux/eventlog-app",
+ "version": "0.1.0",
+ "description": "A react based modular UI to display event log 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": "Apache-2.0",
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
+ "peerDependencies": {
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
+ "@types/react-router-dom": "4.3.1",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
+ "@types/classnames": "2.2.6",
+ "@types/flux": "3.1.8",
+ "@types/jquery": "3.3.10",
+ "jquery": "3.3.1",
+ "react": "16.11.0",
+ "react-dom": "16.11.0",
+ "react-router-dom": "4.3.1"
+ }
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/eventLogApp/pom.xml b/sdnr/wt/odlux/apps/eventLogApp/pom.xml
new file mode 100644
index 000000000..ed67399ec
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/pom.xml
@@ -0,0 +1,150 @@
+<?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>
+
+ <parent>
+ <groupId>org.onap.ccsdk.parent</groupId>
+ <artifactId>odlparent</artifactId>
+ <version>1.5.1-SNAPSHOT</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+ <artifactId>sdnr-wt-odlux-app-eventLogApp</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>bundle</packaging>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
+ <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.jacks-it-lab</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>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</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/>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogAppRootHandler.ts b/sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogAppRootHandler.ts
new file mode 100644
index 000000000..6e2d40efd
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogAppRootHandler.ts
@@ -0,0 +1,45 @@
+/**
+* ============LICENSE_START========================================================================
+* ONAP : ccsdk feature sdnr wt odlux
+* =================================================================================================
+* 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==========================================================================
+*/
+// 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 { IEventLogState, eventLogActionHandler } from './eventLogHandler';
+
+
+export interface IEventLogAppStateState {
+ logEntries: IEventLogState
+}
+
+
+declare module '../../../../framework/src/store/applicationStore' {
+ interface IApplicationStoreState {
+ eventLog: IEventLogAppStateState;
+ }
+}
+
+const actionHandlers = {
+ logEntries: eventLogActionHandler
+};
+
+export const EventLogAppRootHandler = combineActionHandler<IEventLogAppStateState>(actionHandlers);
+export default EventLogAppRootHandler;
+
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogHandler.tsx b/sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogHandler.tsx
new file mode 100644
index 000000000..300a8f7b3
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src/handlers/eventLogHandler.tsx
@@ -0,0 +1,36 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
+import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
+
+import { EventLogType } from '../models/eventLogType';
+
+export interface IEventLogState extends IExternalTableState<EventLogType> { }
+
+// create eleactic search material data fetch handler
+const eventLogSearchHandler = createSearchDataHandler<EventLogType>("eventlog");
+
+export const {
+ actionHandler: eventLogActionHandler,
+ createActions: createEventLogActions,
+ createProperties: createEventLogProperties,
+ reloadAction: eventLogReloadAction,
+
+ // set value action, to change a value
+} = createExternal<EventLogType>(eventLogSearchHandler, appState => appState.eventLog.logEntries);
+
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src/index.html b/sdnr/wt/odlux/apps/eventLogApp/src/index.html
new file mode 100644
index 000000000..8027509e6
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src/index.html
@@ -0,0 +1,26 @@
+<!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>EventLog 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", "eventLogApp"], function (app, connectApp, eventLogApp) {
+ connectApp.register();
+ eventLogApp.register();
+ app("./app.tsx").runApplication();
+ });
+ </script>
+</body>
+
+</html> \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src/models/eventLogType.ts b/sdnr/wt/odlux/apps/eventLogApp/src/models/eventLogType.ts
new file mode 100644
index 000000000..7c68e6497
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src/models/eventLogType.ts
@@ -0,0 +1,27 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+export { HitEntry, Result } from '../../../../framework/src/models';
+export type EventLogType = {
+ nodeId: string;
+ counter: number;
+ timestamp: string;
+ objectId: string;
+ attributeName: string;
+ newValue: string;
+ sourceType: string;
+}
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src/pluginEventLog.tsx b/sdnr/wt/odlux/apps/eventLogApp/src/pluginEventLog.tsx
new file mode 100644
index 000000000..a2edb436f
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src/pluginEventLog.tsx
@@ -0,0 +1,40 @@
+/**
+* ============LICENSE_START========================================================================
+* ONAP : ccsdk feature sdnr wt odlux
+* =================================================================================================
+* 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==========================================================================
+*/
+// app configuration and main entry point for the app
+
+import * as React from "react";
+import { faBookOpen } from '@fortawesome/free-solid-svg-icons'; // select app icon
+import applicationManager from '../../../framework/src/services/applicationManager';
+
+import { EventLog } from './views/eventLog';
+import eventLogAppRootHandler from './handlers/eventLogAppRootHandler';
+
+const App : React.SFC = (props) => {
+ return <EventLog />
+};
+
+export function register() {
+ applicationManager.registerApplication({
+ name: "eventLog",
+ icon: faBookOpen,
+ rootActionHandler: eventLogAppRootHandler,
+ rootComponent: App,
+ menuEntry: "EventLog"
+ });
+}
+
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src/views/eventLog.tsx b/sdnr/wt/odlux/apps/eventLogApp/src/views/eventLog.tsx
new file mode 100644
index 000000000..535de1f1d
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src/views/eventLog.tsx
@@ -0,0 +1,59 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+import * as React from "react";
+
+import { Connect, connect, IDispatcher } from '../../../../framework/src/flux/connect';
+import { MaterialTable, MaterialTableCtorType } from '../../../../framework/src/components/material-table';
+
+import { EventLogType } from '../models/eventLogType';
+import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore";
+import { createEventLogProperties, createEventLogActions } from "../handlers/eventLogHandler";
+
+const EventLogTable = MaterialTable as MaterialTableCtorType<EventLogType & {_id: string}>;
+
+const mapProps = (state: IApplicationStoreState) => ({
+ eventLogProperties: createEventLogProperties(state),
+ eventLog: state.eventLog.logEntries
+});
+
+const mapDispatch = (dispatcher: IDispatcher) => ({
+ eventLogActions: createEventLogActions(dispatcher.dispatch)
+});
+
+class EventLogComponent extends React.Component<Connect<typeof mapProps, typeof mapDispatch>> {
+ render() {
+ return <EventLogTable title="Event Log" idProperty="_id" columns={[
+ { property: "nodeId", title: "Node Name" },
+ { property: "counter", title: "Counter" },
+ { property: "timestamp", title: "Timestamp" },
+ { property: "objectId", title: "Object ID" },
+ { property: "attributeName", title: "Attribute Name" },
+ { property: "newValue", title: "Message" },
+ { property: "sourceType", title: "Source" }
+ ]} {...this.props.eventLogActions} {...this.props.eventLogProperties} >
+ </EventLogTable>
+ }
+
+ componentDidMount() {
+ this.props.eventLogActions.onToggleFilter();
+ this.props.eventLogActions.onHandleRequestSort("node-id");
+ }
+}
+
+export const EventLog = connect(mapProps, mapDispatch)(EventLogComponent);
+export default EventLog; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src2/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/MyOdluxBundle.java b/sdnr/wt/odlux/apps/eventLogApp/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/eventLogApp/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/eventLogApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wt/odlux/apps/eventLogApp/src2/main/resources/OSGI-INF/blueprint/blueprint.xml
new file mode 100644
index 000000000..cb2d0626a
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/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="eventLogApp"/>
+ <property name="index" value="75"/>
+ </bean>
+</blueprint> \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/eventLogApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java b/sdnr/wt/odlux/apps/eventLogApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java
new file mode 100644
index 000000000..e2ffb596b
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/src2/test/java/org/onap/ccsdk/features/sdnr/wt/odlux/bundles/test/TestBundleRes.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * ============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;
+import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader;
+
+public class TestBundleRes {
+
+ @Test
+ public void test() {
+ OdluxBundleLoader 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/eventLogApp/src2/test/resources/test.js b/sdnr/wt/odlux/apps/eventLogApp/src2/test/resources/test.js
new file mode 100644
index 000000000..b47fdc39f
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/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/eventLogApp/tsconfig.json b/sdnr/wt/odlux/apps/eventLogApp/tsconfig.json
new file mode 100644
index 000000000..a66b5d828
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/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/eventLogApp/webpack.config.js b/sdnr/wt/odlux/apps/eventLogApp/webpack.config.js
new file mode 100644
index 000000000..a67a34074
--- /dev/null
+++ b/sdnr/wt/odlux/apps/eventLogApp/webpack.config.js
@@ -0,0 +1,155 @@
+/**
+ * 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: {
+ eventLogApp: ["./pluginEventLog.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: {
+ "/oauth2/": {
+ target: "http://localhost:28181",
+ secure: false
+ },
+ "/database/": {
+ target: "http://localhost:28181",
+ secure: false
+ },
+ "/restconf/": {
+ target: "http://localhost:28181",
+ secure: false
+ },
+ "/help/": {
+ target: "http://localhost:28181",
+ secure: false
+ },
+ "/websocket/": {
+ target: "http://localhost:28181",
+ ws: true,
+ changeOrigin: true,
+ secure: false
+ }
+ }
+
+ }
+ }];
+}
diff --git a/sdnr/wt/odlux/apps/faultApp/package.json b/sdnr/wt/odlux/apps/faultApp/package.json
index be7bf6d02..909626303 100644
--- a/sdnr/wt/odlux/apps/faultApp/package.json
+++ b/sdnr/wt/odlux/apps/faultApp/package.json
@@ -20,21 +20,21 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/pom.xml b/sdnr/wt/odlux/apps/faultApp/pom.xml
index b748b7d19..1c616a40b 100644
--- a/sdnr/wt/odlux/apps/faultApp/pom.xml
+++ b/sdnr/wt/odlux/apps/faultApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -8,18 +9,19 @@
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-faultApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-faultApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -38,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -62,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -88,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -100,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -131,27 +146,5 @@
</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/faultApp/src/actions/clearStuckAlarmsAction.ts b/sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts
new file mode 100644
index 000000000..ba1a24822
--- /dev/null
+++ b/sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts
@@ -0,0 +1,36 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+
+import { clearStuckAlarms } from "../services/faultStatusService"
+import { Dispatch } from "../../../../framework/src/flux/store";
+import { FaultApplicationBaseAction } from "./notificationActions";
+
+export class AreStuckAlarmsCleared extends FaultApplicationBaseAction {
+ constructor(public isBusy: boolean) {
+ super();
+ }
+}
+
+
+export const clearStuckAlarmAsyncAction = (dispatcher: Dispatch) => async (nodeNames: string[]) => {
+ dispatcher(new AreStuckAlarmsCleared(true))
+ const result = await clearStuckAlarms(nodeNames).catch(error => { console.error(error); return undefined });
+ dispatcher(new AreStuckAlarmsCleared(false))
+ return result;
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/src/actions/notificationActions.ts b/sdnr/wt/odlux/apps/faultApp/src/actions/notificationActions.ts
index b990536e4..584e7cd8b 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/actions/notificationActions.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/actions/notificationActions.ts
@@ -17,13 +17,13 @@
*/
import { Action } from '../../../../framework/src/flux/action';
-import { Fault } from '../models/fault';
+import { FaultAlarmNotification } from '../models/fault';
export class FaultApplicationBaseAction extends Action { }
export class AddFaultNotificationAction extends FaultApplicationBaseAction {
- constructor(public fault:Fault) {
+ constructor(public fault:FaultAlarmNotification) {
super();
}
}
diff --git a/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx b/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx
new file mode 100644
index 000000000..3b8b9b684
--- /dev/null
+++ b/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx
@@ -0,0 +1,136 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+import * as React from 'react'
+import { DialogContent, DialogActions, Button, Dialog, DialogTitle, DialogContentText } from '@material-ui/core';
+import { currentProblemsReloadAction } from '../handlers/currentProblemsHandler';
+import { clearStuckAlarmAsyncAction } from '../actions/clearStuckAlarmsAction';
+import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect';
+
+export enum ClearStuckAlarmsDialogMode {
+ None = "none",
+ Show = "show"
+}
+
+const mapDispatch = (dispatcher: IDispatcher) => ({
+ clearStuckAlarmsAsync: clearStuckAlarmAsyncAction(dispatcher.dispatch),
+ reloadCurrentProblemsAction: () => dispatcher.dispatch(currentProblemsReloadAction)
+})
+
+type clearStuckAlarmsProps = Connect<typeof undefined, typeof mapDispatch> & {
+ numberDevices: Number,
+ mode: ClearStuckAlarmsDialogMode,
+ stuckAlarms: string[]
+ onClose: () => void
+}
+
+type ClearStuckAlarmsState = {
+ clearAlarmsSuccessful: boolean,
+ errormessage: string,
+ unclearedAlarms: string[]
+}
+
+class ClearStuckAlarmsDialogComponent extends React.Component<clearStuckAlarmsProps, ClearStuckAlarmsState>{
+ constructor(props: clearStuckAlarmsProps) {
+ super(props);
+ this.state = { clearAlarmsSuccessful: true, errormessage: '', unclearedAlarms: [] }
+ }
+
+ onClose = (event: React.MouseEvent) => {
+ event.stopPropagation();
+ event.preventDefault();
+ this.props.onClose();
+ }
+
+ onRefresh = async (event: React.MouseEvent) => {
+ event.stopPropagation();
+ event.preventDefault();
+ const result = await this.props.clearStuckAlarmsAsync(this.props.stuckAlarms);
+
+ if (result) {
+ if (result.output.nodenames) {
+ if (result.output.nodenames.length !== this.props.stuckAlarms.length) { //show errormessage if not all devices were cleared
+ const undeletedAlarm = this.props.stuckAlarms.filter(item => !result.output.nodenames.includes(item))
+ const error = "The alarms of the following devices couldn't be refreshed: ";
+ this.setState({ clearAlarmsSuccessful: false, errormessage: error, unclearedAlarms: undeletedAlarm })
+ return;
+ }
+ }
+ }
+ else { //show errormessage if no devices were cleared
+ this.setState({ clearAlarmsSuccessful: false, errormessage: "Alarms couldn't be refreshed.", unclearedAlarms: [] })
+ return;
+ }
+
+ this.props.reloadCurrentProblemsAction();
+ this.props.onClose();
+ }
+
+ onOk = (event: React.MouseEvent) => {
+
+ event.stopPropagation();
+ event.preventDefault();
+ if (this.state.unclearedAlarms.length > 0)
+ this.props.reloadCurrentProblemsAction();
+ this.props.onClose();
+ }
+
+ render() {
+ console.log(this.props.stuckAlarms);
+ const device = this.props.numberDevices > 1 ? 'devices' : 'device'
+ const defaultMessage = "Are you sure you want to refresh all alarms for " + this.props.numberDevices + " " + device + "?"
+ const message = this.state.clearAlarmsSuccessful ? defaultMessage : this.state.errormessage;
+
+ const defaultTitle = "Refresh Confirmation"
+ const title = this.state.clearAlarmsSuccessful ? defaultTitle : 'Refresh Result';
+
+ return (
+ <Dialog open={this.props.mode !== ClearStuckAlarmsDialogMode.None}>
+ <DialogTitle>{title}</DialogTitle>
+ <DialogContent>
+ <DialogContentText>
+ {message}
+ </DialogContentText>
+ {
+ this.state.unclearedAlarms.map(item =>
+ <DialogContentText>
+ {item}
+ </DialogContentText>
+ )
+ }
+ </DialogContent>
+ <DialogActions>
+ {
+ this.state.clearAlarmsSuccessful &&
+ <>
+ <Button onClick={this.onRefresh}>Yes</Button>
+ <Button onClick={this.onClose}>No</Button>
+ </>
+ }
+
+ {
+ !this.state.clearAlarmsSuccessful && <Button onClick={this.onOk}>Ok</Button>
+ }
+ </DialogActions>
+ </Dialog>
+ )
+ }
+}
+
+const ClearStuckAlarmsDialog = connect(undefined, mapDispatch)(ClearStuckAlarmsDialogComponent)
+export default ClearStuckAlarmsDialog;
diff --git a/sdnr/wt/odlux/apps/faultApp/src/components/faultStatus.tsx b/sdnr/wt/odlux/apps/faultApp/src/components/faultStatus.tsx
index 780e61d7a..1ec463f47 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/components/faultStatus.tsx
+++ b/sdnr/wt/odlux/apps/faultApp/src/components/faultStatus.tsx
@@ -58,7 +58,7 @@ class FaultStatusComponent extends React.Component<FaultStatusComponentProps> {
return (
<Typography variant="body1" color="inherit" >
- Alarm status: <FontAwesomeIcon className={`${classes.icon} ${classes.critical}`} icon={faExclamationTriangle} /> { faultStatus.critical } |
+ Alarm Status: <FontAwesomeIcon className={`${classes.icon} ${classes.critical}`} icon={faExclamationTriangle} /> { faultStatus.critical } |
<FontAwesomeIcon className={`${classes.icon} ${classes.major}`} icon={faExclamationTriangle} /> { faultStatus.major } |
<FontAwesomeIcon className={`${classes.icon} ${classes.minor}`} icon={faExclamationTriangle} /> { faultStatus.minor } |
<FontAwesomeIcon className={`${classes.icon} ${classes.warning}`} icon={faExclamationTriangle} /> { faultStatus.warning } |
diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts
index be41a51b2..31b8259b2 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/alarmLogEntriesHandler.ts
@@ -18,17 +18,12 @@
import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { Fault, FaultLog } from '../models/fault';
+import { Fault } from '../models/fault';
export interface IAlarmLogEntriesState extends IExternalTableState<Fault> { }
-// create eleactic search material data fetch handler
-const alarmLogEntriesSearchHandler = createSearchDataHandler<FaultLog, Fault>(
- 'sdnevents/faultlog',
- null,
- (hit) => ({ _id: hit._id, ...hit._source.fault }),
- (name) => `fault.${ name }`
-);
+// create eleactic search data fetch handler
+const alarmLogEntriesSearchHandler = createSearchDataHandler< Fault>('faultlog');
export const {
actionHandler: alarmLogEntriesActionHandler,
diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx b/sdnr/wt/odlux/apps/faultApp/src/handlers/clearStuckAlarmsHandler.ts
index 2a53203c8..14634b4c4 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/src/plugin.tsx
+++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/clearStuckAlarmsHandler.ts
@@ -15,22 +15,22 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-// app configuration and main entry point for the app
+import { IActionHandler } from "../../../../framework/src/flux/action"
+import { AreStuckAlarmsCleared } from "../actions/clearStuckAlarmsAction";
-import { faShoppingBag } from '@fortawesome/free-solid-svg-icons'; // select app icon
+export interface IStuckAlarms {
+ areAlarmsCleared: boolean
+}
-import applicationManager from '../../../framework/src/services/applicationManager';
+const initialState: IStuckAlarms = {
+ areAlarmsCleared: false
+}
-import { Dashboard } from './views/dashboard';
-import faultAppRootHandler from './handlers/inventoryAppRootHandler';
+export const stuckAlarmHandler: IActionHandler<IStuckAlarms> = (state = initialState, action) => {
+ if (action instanceof AreStuckAlarmsCleared) {
+ state = { ...state, areAlarmsCleared: action.isBusy }
+ }
-export function register() {
- applicationManager.registerApplication({
- name: "inventory",
- icon: faShoppingBag,
- rootActionHandler: faultAppRootHandler,
- rootComponent: Dashboard,
- menuEntry: "Inventory"
- });
-}
+ return state;
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts
index 760dbeadc..3698a2798 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/currentProblemsHandler.ts
@@ -18,17 +18,12 @@
import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { FaultResult, Fault } from '../models/fault';
+import { Fault } from '../models/fault';
export interface ICurrentProblemsState extends IExternalTableState<Fault> { }
-// create eleactic search material data fetch handler
-const currentProblemsSearchHandler = createSearchDataHandler<FaultResult, Fault>(
- 'sdnevents/faultcurrent',
- null,
- (hit) => ({ _id: hit._id, ...hit._source.faultCurrent }),
- (name) => `faultCurrent.${name}`
- );
+// create eleactic search data fetch handler
+const currentProblemsSearchHandler = createSearchDataHandler<Fault>('faultcurrent');
export const {
actionHandler: currentProblemsActionHandler,
diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts
index 22a9a58a2..dddb4a247 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts
@@ -28,12 +28,13 @@ import { ICurrentProblemsState, currentProblemsActionHandler } from './currentPr
import { IAlarmLogEntriesState, alarmLogEntriesActionHandler } from './alarmLogEntriesHandler';
import { SetPanelAction } from '../actions/panelChangeActions';
import { IFaultStatus, faultStatusHandler } from './faultStatusHandler';
+import { stuckAlarmHandler } from './clearStuckAlarmsHandler';
export interface IFaultAppStoreState {
currentProblems: ICurrentProblemsState;
faultNotifications: IFaultNotifications;
alarmLogEntries: IAlarmLogEntriesState;
- currentOpenPanel: string|null;
+ currentOpenPanel: string | null;
faultStatus: IFaultStatus;
}
@@ -55,7 +56,8 @@ const actionHandlers = {
faultNotifications: faultNotificationsHandler,
alarmLogEntries: alarmLogEntriesActionHandler,
currentOpenPanel: currentOpenPanelHandler,
- faultStatus: faultStatusHandler
+ faultStatus: faultStatusHandler,
+ stuckAlarms: stuckAlarmHandler
};
export const faultAppRootHandler = combineActionHandler<IFaultAppStoreState>(actionHandlers);
diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/notificationsHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/notificationsHandler.ts
index 4377a1b0a..aa92d2a1c 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/handlers/notificationsHandler.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/notificationsHandler.ts
@@ -17,10 +17,10 @@
*/
import { IActionHandler } from '../../../../framework/src/flux/action';
import { AddFaultNotificationAction, ResetFaultNotificationsAction } from '../actions/notificationActions';
-import { Fault } from '../models/fault';
+import { FaultAlarmNotification } from '../models/fault';
export interface IFaultNotifications {
- faults: Fault[];
+ faults: FaultAlarmNotification[];
since: Date;
}
diff --git a/sdnr/wt/odlux/apps/faultApp/src/index.html b/sdnr/wt/odlux/apps/faultApp/src/index.html
index a2a0830b3..cd315f0b7 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/index.html
+++ b/sdnr/wt/odlux/apps/faultApp/src/index.html
@@ -15,12 +15,8 @@
<script type="text/javascript" src="./config.js"></script>
<script>
// run the application
- require(["app", "connectApp", "faultApp", "maintenanceApp", "configurationApp", "helpApp"], function (app, connectApp, faultApp, maintenanceApp, configurationApp, helpApp) {
- connectApp.register();
+ require(["app", "faultApp" ], function (app, faultApp) {
faultApp.register();
- configurationApp.register();
- maintenanceApp.register();
- helpApp.register();
app("./app.tsx").runApplication();
});
</script>
diff --git a/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts b/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts
index 153e8def3..c65734437 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts
@@ -15,17 +15,53 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-export type FaultType = {
+export type Fault = {
+ id: string;
+ nodeId: string;
+ counter: number;
+ timestamp: string;
+ objectId: string;
+ problem: string;
+ severity: null | 'Warning' | 'Minor' | 'Major' | 'Critical';
+ type: string;
+ sourceType: string;
+}
+
+export type FaultAlarmNotification = {
+ id: string;
nodeName: string;
- counter: string;
+ counter: number;
timeStamp: string;
objectId: string;
problem: string;
- severity: null | 'Warning' | 'Minor' | 'Major' | 'Critical' ;
+ severity: null | 'Warning' | 'Minor' | 'Major' | 'Critical';
type: string;
+ sourceType: string;
}
-export type FaultResult = { faultCurrent: FaultType };
-export type FaultLog = { fault: FaultType };
+/**
+ * Fault status return type
+ */
+export type FaultsReturnType = {
+ criticals: number,
+ majors: number,
+ minors: number,
+ warnings: number
+};
+
+export type FaultType = {
+ Critical: number,
+ Major: number,
+ Minor: number,
+ Warning: number
+};
+
+export type Faults = {
+ faults: FaultsReturnType
+};
-export type Fault = FaultType & { _id: string };
+export type DeletedStuckAlarms = {
+ output: {
+ nodenames: string[]
+ }
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/src/plugin.tsx b/sdnr/wt/odlux/apps/faultApp/src/pluginFault.tsx
index eec8c0821..02dde90f7 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/plugin.tsx
+++ b/sdnr/wt/odlux/apps/faultApp/src/pluginFault.tsx
@@ -31,7 +31,7 @@ import { IApplicationStoreState } from "../../../framework/src/store/application
import { faultAppRootHandler } from './handlers/faultAppRootHandler';
import { FaultApplication } from "./views/faultApplication";
-import { Fault } from "./models/fault";
+import { FaultAlarmNotification } from "./models/fault";
import { PanelId } from "./models/panelId";
import { SetPanelAction } from "./actions/panelChangeActions";
@@ -60,8 +60,8 @@ const FaultApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteCom
window.setTimeout(() => {
if (currentMountId) {
props.setCurrentPanel("CurrentProblem");
- props.currentProblemsActions.onFilterChanged("objectId", currentMountId);
- props.currentProblemsProperties.showFilter || (props.currentProblemsActions.onToggleFilter());
+ props.currentProblemsActions.onFilterChanged("nodeId", currentMountId);
+ props.currentProblemsProperties.showFilter; // || (props.currentProblemsActions.onToggleFilter());
props.currentProblemsActions.onRefresh();
}
});
@@ -89,7 +89,7 @@ export function register() {
});
// subscribe to the websocket notifications
- subscribe<Fault & IFormatedMessage>("ProblemNotification", (fault => {
+ subscribe<FaultAlarmNotification & IFormatedMessage>("ProblemNotification", (fault => {
const store = applicationApi && applicationApi.applicationStore;
if (fault && store) {
store.dispatch(new AddFaultNotificationAction(fault));
diff --git a/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts b/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts
index ed1f3f919..d3409e095 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts
@@ -16,24 +16,38 @@
* ============LICENSE_END==========================================================================
*/
import { requestRest } from "../../../../framework/src/services/restService";
-import { Result } from "../../../../framework/src/models/elasticSearch";
+import { Result, PostResponse } from "../../../../framework/src/models/elasticSearch";
+import { FaultType, Faults, DeletedStuckAlarms } from "../models/fault";
-export const getFaultStateFromDatabase = async (): Promise < { [key: string]: number } | null > => {
- const path = 'database/sdnevents/faultcurrent/_search';
- const query = {
- "size": 0,
- "aggregations": {
- "severity": {
- "terms": {
- "field": "faultCurrent.severity"
- }
- }
+
+export const getFaultStateFromDatabase = async (): Promise<FaultType | null> => {
+ const path = 'restconf/operations/data-provider:read-status';
+ const result = await requestRest<Result<Faults>>(path, { method: "POST" });
+
+ let faultType: FaultType = {
+ Critical: 0,
+ Major: 0,
+ Minor: 0,
+ Warning: 0
+ }
+ let faults: Faults[] | null = null;
+
+ if (result && result.output && result.output.data) {
+ faults = result.output.data;
+ faultType = {
+ Critical: faults[0].faults.criticals,
+ Major: faults[0].faults.majors,
+ Minor: faults[0].faults.minors,
+ Warning: faults[0].faults.warnings
}
- };
+ }
+
+ return faultType;
+}
+
+export const clearStuckAlarms = async (nodeNames: string[]) => {
+ const path = 'restconf/operations/devicemanager:clear-current-fault-by-nodename'
+ const result = await requestRest<DeletedStuckAlarms>(path, { method: 'Post', body: JSON.stringify({ input: { nodenames: nodeNames } }) })
+ return result;
- const result = await requestRest<Result<{ severity: { buckets: { key: string, doc_count: number }[] } }>>(path, { method: "POST", body: JSON.stringify(query) });
- return result && result.aggregations && result.aggregations["severity"].buckets.reduce<{ [key: string]: number }>((acc, cur) => {
- acc[cur.key] = cur.doc_count;
- return acc;
- }, {}) || null;
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx b/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx
index 9faa3566b..fd1c48ac5 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx
+++ b/sdnr/wt/odlux/apps/faultApp/src/views/faultApplication.tsx
@@ -28,12 +28,15 @@ import { Panel } from '../../../../framework/src/components/material-ui';
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { Fault } from '../models/fault';
+import { Fault, FaultAlarmNotification } from '../models/fault';
import { PanelId } from '../models/panelId';
import { createCurrentProblemsProperties, createCurrentProblemsActions, currentProblemsReloadAction } from '../handlers/currentProblemsHandler';
import { createAlarmLogEntriesProperties, createAlarmLogEntriesActions, alarmLogEntriesReloadAction } from '../handlers/alarmLogEntriesHandler';
import { SetPanelAction } from '../actions/panelChangeActions';
+import { Tooltip, IconButton } from '@material-ui/core';
+import RefreshIcon from '@material-ui/icons/Refresh';
+import ClearStuckAlarmsDialog, { ClearStuckAlarmsDialogMode } from '../components/clearStuckAlarmsDialog';
const mapProps = (state: IApplicationStoreState) => ({
activePanel: state.fault.currentOpenPanel,
@@ -47,18 +50,50 @@ const mapDisp = (dispatcher: IDispatcher) => ({
alarmLogEntriesActions: createAlarmLogEntriesActions(dispatcher.dispatch),
reloadCurrentProblems: () => dispatcher.dispatch(currentProblemsReloadAction),
reloadAlarmLogEntries: () => dispatcher.dispatch(alarmLogEntriesReloadAction),
- setCurrentPanel: (panelId: PanelId) => dispatcher.dispatch(new SetPanelAction(panelId))
+ setCurrentPanel: (panelId: PanelId) => dispatcher.dispatch(new SetPanelAction(panelId)),
});
type FaultApplicationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp>;
+type FaultApplicationState = {
+ clearAlarmDialogMode: ClearStuckAlarmsDialogMode,
+ stuckAlarms: string[]
+}
+
const FaultTable = MaterialTable as MaterialTableCtorType<Fault>;
+const FaultAlarmNotificationTable = MaterialTable as MaterialTableCtorType<FaultAlarmNotification>;
+
+
+class FaultApplicationComponent extends React.Component<FaultApplicationComponentProps, FaultApplicationState>{
+
+ /**
+ *
+ */
+ constructor(props: FaultApplicationComponentProps) {
+ super(props);
+ this.state = { clearAlarmDialogMode: ClearStuckAlarmsDialogMode.None, stuckAlarms: [] }
+ }
+
+ onDialogClose = () => {
+ this.setState({ clearAlarmDialogMode: ClearStuckAlarmsDialogMode.None, stuckAlarms: [] })
+ }
+
+ onDialogOpen = () => {
+ const stuckAlarms = [...new Set(this.props.currentProblemsProperties.rows.map(item => item.nodeId))];
+ this.setState({ clearAlarmDialogMode: ClearStuckAlarmsDialogMode.Show, stuckAlarms: stuckAlarms })
+ }
+
-class FaultApplicationComponent extends React.Component<FaultApplicationComponentProps>{
render(): JSX.Element {
+ const refreshButton = {
+ icon: RefreshIcon, tooltip: 'Clear stuck alarms', onClick: this.onDialogOpen
+ };
+ const areFaultsAvailable = this.props.currentProblemsProperties.rows && this.props.currentProblemsProperties.rows.length > 0
+ const customAction = areFaultsAvailable ? [refreshButton] : [];
+
const { activePanel } = this.props;
const onTogglePanel = (panelId: PanelId) => {
@@ -82,19 +117,19 @@ class FaultApplicationComponent extends React.Component<FaultApplicationComponen
return (
<>
- <Panel activePanel={ activePanel } panelId={ 'CurrentProblem' } onToggle={ onTogglePanel } title={ 'Current Problem List' }>
- <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 },
- { property: "counter", title: "Count", type: ColumnType.numeric, width: "100px" },
- { property: "objectId", title: "Object Id", type: ColumnType.text } ,
- { property: "problem", title: "Alarm Type", type: ColumnType.text },
- { property: "severity", title: "Severity", type: ColumnType.text, width: "140px" },
- ] } { ...this.props.currentProblemsProperties } { ...this.props.currentProblemsActions } />
+ <Panel activePanel={activePanel} panelId={'CurrentProblem'} onToggle={onTogglePanel} title={'Current Problem List'}>
+ <FaultTable idProperty={'id'} customActionButtons={customAction} columns={[
+ { property: "icon", title: "", type: ColumnType.custom, customControl: this.renderIcon },
+ { property: "timestamp", type: ColumnType.text, title: "Time Stamp" },
+ { property: "nodeId", title: "Node Name", type: ColumnType.text },
+ { property: "counter", title: "Count", type: ColumnType.numeric, width: "100px" },
+ { property: "objectId", title: "Object Id", type: ColumnType.text },
+ { property: "problem", title: "Alarm Type", type: ColumnType.text },
+ { 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} since ${this.props.faultNotifications.since}` }>
- <FaultTable rows={ this.props.faultNotifications.faults } asynchronus columns={ [
+ <Panel activePanel={activePanel} panelId={'AlarmNotifications'} onToggle={onTogglePanel} title={`Alarm Notifications ${this.props.faultNotifications.faults.length} since ${this.props.faultNotifications.since}`}>
+ <FaultAlarmNotificationTable rows={this.props.faultNotifications.faults} asynchronus columns={[
{ property: "icon", title: "", type: ColumnType.custom, customControl: this.renderIcon },
{ property: "timeStamp", title: "Time Stamp" },
{ property: "nodeName", title: "Node Name" },
@@ -102,19 +137,25 @@ class FaultApplicationComponent extends React.Component<FaultApplicationComponen
{ property: "objectId", title: "Object Id" },
{ property: "problem", title: "Alarm Type" },
{ property: "severity", title: "Severity", width: "140px" },
- ] } idProperty={ '_id' } />
+ ]} idProperty={'id'} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ 'AlarmLog' } onToggle={ onTogglePanel } title={ 'Alarm Log' }>
- <FaultTable idProperty={ '_id' } columns={ [
+ <Panel activePanel={activePanel} panelId={'AlarmLog'} onToggle={onTogglePanel} title={'Alarm Log'}>
+ <FaultTable idProperty={'id'} columns={[
{ property: "icon", title: "", type: ColumnType.custom, customControl: this.renderIcon },
- { property: "timeStamp", title: "Time Stamp" },
- { property: "nodeName", title: "Node Name" },
+ { property: "timestamp", title: "Time Stamp" },
+ { property: "nodeId", title: "Node Name" },
{ property: "counter", title: "Count", type: ColumnType.numeric, width: "100px" },
{ property: "objectId", title: "Object Id" },
{ property: "problem", title: "Alarm Type" },
{ property: "severity", title: "Severity", width: "140px" },
- ] } { ...this.props.alarmLogEntriesProperties } { ...this.props.alarmLogEntriesActions }/>
- </Panel>
+ { property: "sourceType", title: "Source", width: "140px" },
+ ]} {...this.props.alarmLogEntriesProperties} {...this.props.alarmLogEntriesActions} />
+ </Panel>
+ {
+ this.state.clearAlarmDialogMode !== ClearStuckAlarmsDialogMode.None && <ClearStuckAlarmsDialog mode={this.state.clearAlarmDialogMode} numberDevices={this.state.stuckAlarms.length} stuckAlarms={this.state.stuckAlarms} onClose={this.onDialogClose} />
+
+ }
+
</>
);
};
@@ -123,9 +164,9 @@ class FaultApplicationComponent extends React.Component<FaultApplicationComponen
this.props.alarmLogEntriesActions.onToggleFilter();
this.props.currentProblemsActions.onToggleFilter();
}
- private renderIcon = (props: { rowData: Fault }) => {
+ private renderIcon = (props: { rowData: Fault | FaultAlarmNotification }) => {
return (
- <FontAwesomeIcon icon={ faExclamationTriangle } />
+ <FontAwesomeIcon icon={faExclamationTriangle} />
);
};
diff --git a/sdnr/wt/odlux/apps/faultApp/webpack.config.js b/sdnr/wt/odlux/apps/faultApp/webpack.config.js
index bbf33ea2f..66926edfb 100644
--- a/sdnr/wt/odlux/apps/faultApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/faultApp/webpack.config.js
@@ -26,7 +26,7 @@ module.exports = (env) => {
context: path.resolve(__dirname, "src"),
entry: {
- faultApp: ["./plugin.tsx"]
+ faultApp: ["./pluginFault.tsx"]
},
devtool: env === "release" ? false : "source-map",
@@ -125,23 +125,23 @@ module.exports = (env) => {
},
proxy: {
"/oauth2/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181/",
secure: false
},
"/database/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181/",
secure: false
},
"/restconf/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181/",
secure: false
},
"/help/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181/",
secure: false
},
"/websocket/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181/",
ws: true,
changeOrigin: true,
secure: false
diff --git a/sdnr/wt/odlux/apps/helpApp/package.json b/sdnr/wt/odlux/apps/helpApp/package.json
index 0445046a8..1f106ab65 100644
--- a/sdnr/wt/odlux/apps/helpApp/package.json
+++ b/sdnr/wt/odlux/apps/helpApp/package.json
@@ -20,26 +20,26 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*",
- "marked" : "0.6.0",
- "@types/marked": "0.6.0",
- "highlight.js" : "9.13.1",
- "@types/highlight.js": "9.12.3",
- "github-markdown-css": "2.10.0"
- },
+ "dependencies": {
+ "@odlux/framework": "*",
+ "marked": "0.6.0",
+ "@types/marked": "0.6.0",
+ "highlight.js": "9.13.1",
+ "@types/highlight.js": "9.12.3",
+ "github-markdown-css": "2.10.0"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/helpApp/pom.xml b/sdnr/wt/odlux/apps/helpApp/pom.xml
index b88c233c3..8f8b59a9a 100644
--- a/sdnr/wt/odlux/apps/helpApp/pom.xml
+++ b/sdnr/wt/odlux/apps/helpApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-helpApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-helpApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/helpApp/src/components/helpStatus.tsx b/sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx
index c4a531837..140935715 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx
+++ b/sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx
@@ -57,7 +57,7 @@ class HelpStatusComponent extends React.Component<HelpStatusComponentProps> {
const { classes, history, toc, appId } = this.props;
const rootNode = toc && toc.find(t => t.id === "sdnr");
const helpNode = appId
- ? rootNode && rootNode.nodes && rootNode.nodes.find(n => n.id === appId || n.id === appId+"App")
+ ? rootNode && rootNode.nodes && rootNode.nodes.find(n => n.id === appId || n.id === appId + "App")
: rootNode;
return helpNode
? (
@@ -76,5 +76,5 @@ class HelpStatusComponent extends React.Component<HelpStatusComponentProps> {
}
-export const HelpStatus = withRouter(withStyles(styles)(connect(mapProps)(HelpStatusComponent)));
+export const HelpStatus = withRouter(withStyles(styles)(connect(mapProps)(HelpStatusComponent) as any) as any);
export default HelpStatus; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx b/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx
deleted file mode 100644
index e4e37290c..000000000
--- a/sdnr/wt/odlux/apps/helpApp/src/components/subMenuEntry.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
-import * as React from 'react';
-
-import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore";
-import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { TreeView, TreeViewCtorType } from '../../../../framework/src/components/material-ui/treeView';
-
-import { ListItemText } from '@material-ui/core';
-
-import { NavigateToApplication } from '../../../../framework/src/actions/navigationActions';
-
-import { TocTreeNode } from '../models/tocNode';
-
-const TocTree = TreeView as any as TreeViewCtorType<TocTreeNode>;
-
-const mapProps = (state: IApplicationStoreState) => ({
- helpToc: state.help.toc,
- helpBusy: state.help.busy
-});
-
-const mapDisp = (dispatcher: IDispatcher) => ({
- 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 }
- useFolderIcons={ false } enableSearchBar={ false } onItemClick={ props.requestDocument } />
- )
- : (
- <ListItemText >Loading ...</ListItemText>
- )
-};
-
-export const SubMenuEntry = connect(mapProps, mapDisp)(SubMenuEntryComponent);
-export default SubMenuEntry;
-
diff --git a/sdnr/wt/odlux/apps/helpApp/src/components/tocEntry.tsx b/sdnr/wt/odlux/apps/helpApp/src/components/tocEntry.tsx
new file mode 100644
index 000000000..fc7b8dff5
--- /dev/null
+++ b/sdnr/wt/odlux/apps/helpApp/src/components/tocEntry.tsx
@@ -0,0 +1,82 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+import * as React from "react"
+import { TocTreeNode } from "../models/tocNode"
+import { Typography, Link, makeStyles, Theme, createStyles } from "@material-ui/core"
+
+const useStyles = makeStyles((theme: Theme) =>
+ createStyles({
+ link: {
+ color: "blue",
+ },
+ sublink: {
+ margin: theme.spacing(1),
+ color: "blue",
+ },
+ container: {
+ display: "flex",
+ flexDirection: "row",
+ flexWrap: "wrap",
+ }
+ }),
+);
+
+type tocEntryProps = {
+ label: string,
+ overviewUri: string,
+ nodes?: TocTreeNode[],
+ loadDocument(uri: string): any
+}
+
+const TocEntry: React.FunctionComponent<tocEntryProps> = (props) => {
+ const classes = useStyles();
+ const areNodesEmpty = !props.nodes || props.nodes.length === 0
+
+ const navigate = (event: React.SyntheticEvent, uri: string) => {
+ event.preventDefault();
+ event.stopPropagation();
+ props.loadDocument(uri);
+ }
+
+ return (<div>
+ {
+ areNodesEmpty ? <Typography variant="h6">
+ <Link onClick={(event: any) => navigate(event, props.overviewUri)} className={classes.link}> {props.label}</Link>
+ </Typography> :
+ <>
+ <Typography variant="h6">
+ {props.label}
+ </Typography>
+ <div className={classes.container}>
+ <Typography variant="body1">
+ <Link onClick={(event: any) => navigate(event, props.overviewUri)} className={classes.sublink}>Overview</Link>
+ </Typography>
+ {props.nodes !== undefined && props.nodes.map((item, index) =>
+ <Typography variant="body1" key={index + 'x' + item.id}>
+ <Link onClick={(event: any) => navigate(event, item.uri)} className={classes.sublink}>{item.label}</Link>
+ </Typography>
+ )}
+ </div>
+ </>
+ }
+ </div >)
+}
+
+
+export default TocEntry; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts b/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts
index 9c58238f8..cc6a98488 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts
+++ b/sdnr/wt/odlux/apps/helpApp/src/handlers/helpAppRootHandler.ts
@@ -35,14 +35,14 @@ declare module '../../../../framework/src/store/applicationStore' {
}
}
-const helpAppStoreStateInit: IHelpAppStoreState = {
+const helpAppStoreStatcurrentPatheInit: IHelpAppStoreState = {
busy: false,
toc: undefined,
content: undefined,
currentPath: undefined
};
-export const helpAppRootHandler: IActionHandler<IHelpAppStoreState> = (state = helpAppStoreStateInit, action) => {
+export const helpAppRootHandler: IActionHandler<IHelpAppStoreState> = (state = helpAppStoreStatcurrentPatheInit, action) => {
if (action instanceof LoadTocAction) {
state = {
...state,
diff --git a/sdnr/wt/odlux/apps/helpApp/src/index.html b/sdnr/wt/odlux/apps/helpApp/src/index.html
index e76109fd8..2344708c8 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/index.html
+++ b/sdnr/wt/odlux/apps/helpApp/src/index.html
@@ -14,15 +14,15 @@
<script type="text/javascript" src="./require.js"></script>
<script type="text/javascript" src="./config.js"></script>
<script>
- // run the application
- require(["app", "connectApp", "faultApp", "maintenanceApp", "configurationApp", "helpApp"], function (app, connectApp, faultApp, maintenanceApp, configurationApp, helpApp) {
- connectApp.register();
- faultApp.register();
- configurationApp.register();
- maintenanceApp.register();
- helpApp.register();
- app("./app.tsx").runApplication();
- });
+ // run the application
+ require(["app", "helpApp"], function (app, helpApp) {
+ //connectApp.register();
+ //faultApp.register();
+ //configurationApp.register();
+ //maintenanceApp.register();
+ helpApp.register();
+ 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 77c2992c4..50a264b15 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx
+++ b/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx
@@ -30,10 +30,10 @@ import { requestTocAsyncAction, requestDocumentAsyncActionCreator } from "./acti
import { helpAppRootHandler } from './handlers/helpAppRootHandler';
import { HelpApplication } from './views/helpApplication';
-import { SubMenuEntry } from "./components/subMenuEntry";
import { HelpStatus } from "./components/helpStatus";
import '!style-loader!css-loader!highlight.js/styles/default.css';
+import HelpTocApp from "./views/helpTocApp";
const mapProps = (state: IApplicationStoreState) => ({
@@ -48,6 +48,7 @@ const mapDisp = (dispatcher: IDispatcher) => ({
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
currentHelpPath = props.match.params["0"] || undefined;
@@ -58,6 +59,7 @@ const HelpApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComp
}
});
}
+
return (
<HelpApplication />
)
@@ -65,8 +67,9 @@ const HelpApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComp
const App = withRouter((props: RouteComponentProps) => (
<Switch>
- <Route path={ `${ props.match.path }/*` } component={ HelpApplicationRouteAdapter } />
- <Redirect to={ `${ props.match.path }` } />
+ <Route exact path={`${props.match.path}/`} component={HelpTocApp} />
+ <Route path={`${props.match.path}/*`} component={HelpApplicationRouteAdapter} />
+ <Route path={`${props.match.path}`} component={HelpTocApp} />
</Switch>
));
@@ -78,7 +81,7 @@ export async function register() {
rootActionHandler: helpAppRootHandler,
statusBarElement: HelpStatus,
menuEntry: "Help",
- subMenuEntry: SubMenuEntry
+ //subMenuEntry: SubMenuEntry
});
// start the initial toc request after the application store is initalized
diff --git a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts
index 43c483fe8..c8b247832 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts
+++ b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts
@@ -28,7 +28,7 @@ class HelpService {
if (this.documents[path]) return Promise.resolve(this.documents[path]);
// request the document
- const result = await requestRest<string>(`/help/${ path }`.replace(/\/{2,}/i, '/'));
+ const result = await requestRest<string>(`/help/${path}`.replace(/\/{2,}/i, '/'));
if (result) {
this.documents[path] = result;
}
@@ -41,9 +41,9 @@ class HelpService {
// request the table of contents
const result = await requestRest<TocNodeCollection>('/help/?meta', undefined, false);
- if (result !== false) {
+ if (result !== null) {
const mapNodesCollection = (col: TocNodeCollection): TocTreeNode[] => {
- return Object.keys(col).reduce <TocTreeNode[]>((acc, key) => {
+ return Object.keys(col).reduce<TocTreeNode[]>((acc, key) => {
const current = col[key];
acc.push({
id: key,
@@ -57,7 +57,7 @@ class HelpService {
this.tocNodeCollection = result && mapNodesCollection(result);
}
- return this.tocNodeCollection || null;
+ return this.tocNodeCollection || null;
}
}
diff --git a/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx b/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx
index 6cc89fb85..b4de26d50 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx
+++ b/sdnr/wt/odlux/apps/helpApp/src/views/helpApplication.tsx
@@ -39,7 +39,7 @@ class HelpApplicationComponent extends React.Component<HelpApplicationComponentP
/**
* Initializes a new instance.
*/
- constructor (props: HelpApplicationComponentProps) {
+ constructor(props: HelpApplicationComponentProps) {
super(props);
this.renderer = new marked.Renderer();
diff --git a/sdnr/wt/odlux/apps/helpApp/src/views/helpTocApp.tsx b/sdnr/wt/odlux/apps/helpApp/src/views/helpTocApp.tsx
new file mode 100644
index 000000000..65d4609e2
--- /dev/null
+++ b/sdnr/wt/odlux/apps/helpApp/src/views/helpTocApp.tsx
@@ -0,0 +1,55 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+import connect, { Connect, IDispatcher } from "../../../../framework/src/flux/connect";
+
+import { NavigateToApplication } from "../../../../framework/src/actions/navigationActions";
+import * as React from 'react'
+import { FunctionComponent } from "react";
+import { IApplicationStoreState } from "../../../../framework/src/store/applicationStore";
+import TocEntry from "../components/tocEntry";
+import { Typography } from "@material-ui/core";
+
+const mapProps = (state: IApplicationStoreState) => ({
+ helpToc: state.help.toc,
+})
+
+const mapDisp = (dispatcher: IDispatcher) => ({
+ requestDocument: (uri: string) => dispatcher.dispatch(new NavigateToApplication("help", uri))
+});
+
+const HelpTocComponent: FunctionComponent<Connect<typeof mapProps, typeof mapDisp>> = (props) => {
+
+ return (
+ <div>
+ <Typography style={{ marginBottom: '30px' }} variant="h5">
+ Help &amp; FAQ
+ </Typography>
+ <Typography style={{ marginBottom: '30px' }} variant="body1">
+ On our Help site, you can find general information about SDN-R, detailed information about our applications, frequently asked questions and a list of used abbreviations.
+ </Typography>
+ {
+ props.helpToc && props.helpToc.map((item, index) => <TocEntry key={index} overviewUri={item.uri} nodes={item.nodes} label={item.label} loadDocument={props.requestDocument} />)
+ }
+ </div>
+ )
+}
+
+export const HelpTocApp = connect(mapProps, mapDisp)(HelpTocComponent)
+
+export default HelpTocApp; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/helpApp/webpack.config.js b/sdnr/wt/odlux/apps/helpApp/webpack.config.js
index 3a56d8bea..14ab528a7 100644
--- a/sdnr/wt/odlux/apps/helpApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/helpApp/webpack.config.js
@@ -143,23 +143,23 @@ module.exports = (env) => {
},
proxy: {
"/oauth2/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/database/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/restconf/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/help/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/websocket/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:48181",
ws: true,
changeOrigin: true,
secure: false
diff --git a/sdnr/wt/odlux/apps/inventoryApp/package.json b/sdnr/wt/odlux/apps/inventoryApp/package.json
index 79308234e..9e004c112 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/package.json
+++ b/sdnr/wt/odlux/apps/inventoryApp/package.json
@@ -20,21 +20,21 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/inventoryApp/pom.xml b/sdnr/wt/odlux/apps/inventoryApp/pom.xml
index a958542e3..86c5e8381 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/pom.xml
+++ b/sdnr/wt/odlux/apps/inventoryApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-inventoryApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-inventoryApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/inventoryApp/src/handlers/inventoryAppRootHandler.ts b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts
index 2ab0cebe4..786f6d0c5 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts
+++ b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryAppRootHandler.ts
@@ -1,20 +1,20 @@
/**
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt odlux
- * =================================================================================================
- * 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==========================================================================
- */
+* ============LICENSE_START========================================================================
+* ONAP : ccsdk feature sdnr wt odlux
+* =================================================================================================
+* 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==========================================================================
+*/
// main state handler
import { combineActionHandler } from '../../../../framework/src/flux/middleware';
@@ -40,5 +40,6 @@ const actionHandlers = {
inventoryElements: inventoryElementsActionHandler
};
-export const faultAppRootHandler = combineActionHandler<IInventoryAppStateState>(actionHandlers);
-export default faultAppRootHandler;
+export const inventoryAppRootHandler = combineActionHandler<IInventoryAppStateState>(actionHandlers);
+export default inventoryAppRootHandler;
+
diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx
index 7766634fb..a65319efa 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx
+++ b/sdnr/wt/odlux/apps/inventoryApp/src/handlers/inventoryElementsHandler.tsx
@@ -23,7 +23,7 @@ import { InventoryType } from '../models/inventory';
export interface IInventoryElementsState extends IExternalTableState<InventoryType> { }
// create eleactic search material data fetch handler
-const inventoryElementsSearchHandler = createSearchDataHandler<InventoryType>("sdnevents/inventoryequipment");
+const inventoryElementsSearchHandler = createSearchDataHandler<InventoryType>("inventory");
export const {
actionHandler: inventoryElementsActionHandler,
diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/models/inventory.ts b/sdnr/wt/odlux/apps/inventoryApp/src/models/inventory.ts
index 8c70acbf3..9d747415f 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/src/models/inventory.ts
+++ b/sdnr/wt/odlux/apps/inventoryApp/src/models/inventory.ts
@@ -19,7 +19,7 @@ export { HitEntry, Result } from '../../../../framework/src/models';
export type InventoryType = {
treeLevel: number;
parentUuid: string;
- mountpoint: string;
+ nodeId: string;
uuid: string;
containedHolder?: (string)[] | null;
manufacturerName?: string ;
diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/pluginInventory.tsx b/sdnr/wt/odlux/apps/inventoryApp/src/pluginInventory.tsx
new file mode 100644
index 000000000..ad53285cb
--- /dev/null
+++ b/sdnr/wt/odlux/apps/inventoryApp/src/pluginInventory.tsx
@@ -0,0 +1,75 @@
+/**
+* ============LICENSE_START========================================================================
+* ONAP : ccsdk feature sdnr wt odlux
+* =================================================================================================
+* 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==========================================================================
+*/
+// 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 { faShoppingBag } from '@fortawesome/free-solid-svg-icons'; // select app icon
+import applicationManager from '../../../framework/src/services/applicationManager';
+
+import connect, { Connect, IDispatcher } from '../../../framework/src/flux/connect';
+import { IApplicationStoreState } from "../../../framework/src/store/applicationStore";
+
+import { Dashboard } from './views/dashboard';
+import inventoryAppRootHandler from './handlers/inventoryAppRootHandler';
+
+import { createInventoryElementsProperties, createInventoryElementsActions, inventoryElementsReloadAction } from "./handlers/inventoryElementsHandler";
+
+let currentMountId: string | undefined = undefined;
+
+const mapProps = (state: IApplicationStoreState) => ({
+ inventoryProperties: createInventoryElementsProperties(state),
+});
+
+const mapDisp = (dispatcher: IDispatcher) => ({
+ inventoryActions: createInventoryElementsActions(dispatcher.dispatch, true)
+});
+
+const InventoryApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComponentProps<{ mountId?: string }> & Connect<typeof mapProps, typeof mapDisp>) => {
+ if (currentMountId !== props.match.params.mountId) {
+ currentMountId = props.match.params.mountId || undefined;
+ window.setTimeout(() => {
+ if (currentMountId) {
+ props.inventoryActions.onFilterChanged("nodeId", currentMountId);
+ props.inventoryProperties.showFilter;
+ props.inventoryActions.onRefresh();
+ }
+ });
+ }
+ return (
+ <Dashboard />
+ )
+});
+
+const App = withRouter((props: RouteComponentProps) => (
+ <Switch>
+ <Route path={`${props.match.path}/:mountId?`} component={InventoryApplicationRouteAdapter} />
+ <Redirect to={`${props.match.path}`} />
+ </Switch>
+));
+
+export function register() {
+ applicationManager.registerApplication({
+ name: "inventory",
+ icon: faShoppingBag,
+ rootActionHandler: inventoryAppRootHandler,
+ rootComponent: 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 0d7244e4d..bd182ed5d 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx
+++ b/sdnr/wt/odlux/apps/inventoryApp/src/views/dashboard.tsx
@@ -38,7 +38,7 @@ const mapDispatch = (dispatcher: IDispatcher) => ({
class DashboardComponent extends React.Component<Connect<typeof mapProps, typeof mapDispatch>> {
render() {
return <InventoryTable title="Inventory" idProperty="_id" columns={[
- { property: "mountpoint", title: "Mountpoint" },
+ { property: "nodeId", title: "Node Name" },
{ property: "manufacturerIdentifier", title: "Manufacturer" },
{ property: "parentUuid", title: "Parent" },
{ property: "uuid", title: "Name" },
@@ -56,7 +56,7 @@ class DashboardComponent extends React.Component<Connect<typeof mapProps, typeof
componentDidMount() {
this.props.inventoryElementsActions.onToggleFilter();
- this.props.inventoryElementsActions.onHandleRequestSort("mountpoint");
+ this.props.inventoryElementsActions.onHandleRequestSort("node-id");
}
}
diff --git a/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js b/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
index 2af2bdb95..426763803 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
@@ -26,7 +26,7 @@ module.exports = (env) => {
context: path.resolve(__dirname, "src"),
entry: {
- inventoryApp: ["./plugin.tsx"]
+ inventoryApp: ["./pluginInventory.tsx"]
},
devtool: env === "release" ? false : "source-map",
@@ -128,23 +128,23 @@ module.exports = (env) => {
proxy: {
"/oauth2/": {
- target: "http://localhost:3000",
+ target: "http://localhost:48181",
secure: false
},
"/database/": {
- target: "http://localhost:3000",
+ target: "http://localhost:48181",
secure: false
},
"/restconf/": {
- target: "http://localhost:3000",
+ target: "http://localhost:48181",
secure: false
},
"/help/": {
- target: "http://localhost:3000",
+ target: "http://localhost:48181",
secure: false
},
"/websocket/": {
- target: "http://localhost:3000",
+ target: "http://localhost:48181",
ws: true,
changeOrigin: true,
secure: false
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/package.json b/sdnr/wt/odlux/apps/maintenanceApp/package.json
index 175fce4d5..96f9f7d2b 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/package.json
+++ b/sdnr/wt/odlux/apps/maintenanceApp/package.json
@@ -20,22 +20,22 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*",
- "@odlux/connect-app": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*",
+ "@odlux/connect-app": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
-}
+} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/pom.xml b/sdnr/wt/odlux/apps/maintenanceApp/pom.xml
index aa574cf91..ccd0dbf09 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/pom.xml
+++ b/sdnr/wt/odlux/apps/maintenanceApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-maintenanceApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-maintenanceApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/maintenanceApp/src/actions/maintenenceActions.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts
index 15ac64721..162d94367 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/actions/maintenenceActions.ts
@@ -22,7 +22,9 @@ import { MaintenenceEntry, spoofSymbol } from '../models/maintenenceEntryType';
import { AddSnackbarNotification } from '../../../../framework/src/actions/snackbarActions';
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
+
import { maintenenceService } from '../services/maintenenceService';
+import { maintenanceEntriesReloadAction } from '../handlers/maintenenceEntriesHandler';
export class BaseAction extends Action { }
@@ -37,42 +39,6 @@ export class AllMainteneceEntriesLoadedAction extends BaseAction {
}
-export const loadAllMainteneceEntriesAsyncAction = (dispatch: Dispatch , getState: () => IApplicationStoreState) => {
- dispatch(new LoadAllMainteneceEntriesAction());
- // frist get all entries from the maintenance index
- maintenenceService.getAllMaintenenceEntries().then(entries => {
- if (!entries) {
- dispatch(new AddSnackbarNotification({ message: `Error reading maintenece sessings.`, options: { variant: 'error' } }));
- return;
- }
-
- // combine ell entries from the maintenance index with all networkelements
- const networkElements = getState().connect.mountedNetworkElements;
- const maintenenceEntries = networkElements.elements.reduce((acc, cur) => {
- const entry = entries.find(e => e.mountId === cur.mountId);
- acc.push(entry || {
- [spoofSymbol]: true,
- _id: cur.mountId,
- mountId: cur.mountId,
- description : "",
- start: "",
- end: "",
- active: false
- });
- return acc;
- }, [] as MaintenenceEntry[]);
-
- // all all entries from the maintenance index which are not in all networkelements
- entries.forEach(entry => {
- if (maintenenceEntries.findIndex(e => e.mountId === entry.mountId) < 0) {
- maintenenceEntries.push(entry);
- };
- });
-
- dispatch(new AllMainteneceEntriesLoadedAction(maintenenceEntries));
- }).catch(error => dispatch(new AllMainteneceEntriesLoadedAction(null, error)));
-}
-
export class UpdateMaintenanceEntry extends BaseAction {
constructor(public maintenenceEntry: MaintenenceEntry) {
super();
@@ -85,8 +51,9 @@ export const addOrUpdateMaintenenceEntryAsyncActionCreator = (entry: Maintenence
result && window.setTimeout(() => {
// dispatch(loadAllMountedNetworkElementsAsync);
dispatch(new UpdateMaintenanceEntry(entry));
- dispatch(new AddSnackbarNotification({ message: `Successfully ${result && result.created ? "created" : "updated"} maintenece sessings for [${entry.mountId}]`, options: { variant: 'success' } }));
+ dispatch(new AddSnackbarNotification({ message: `Successfully ${result && result.created ? "created" : "updated"} maintenance settings for [${entry.nodeId}]`, options: { variant: 'success' } }));
}, 900);
+ dispatch(maintenanceEntriesReloadAction)
});
};
@@ -94,18 +61,18 @@ export const addOrUpdateMaintenenceEntryAsyncActionCreator = (entry: Maintenence
export const removeFromMaintenenceEntrysAsyncActionCreator = (entry: MaintenenceEntry) => (dispatch: Dispatch) => {
maintenenceService.deleteMaintenenceEntry(entry).then(result => {
result && window.setTimeout(() => {
- //dispatch(loadAllMountedNetworkElementsAsync);
dispatch(new UpdateMaintenanceEntry({
[spoofSymbol]: true,
_id: entry._id,
- mountId: entry.mountId,
- description : "",
+ nodeId: entry.nodeId,
+ description: "",
start: "",
end: "",
active: false
}));
- dispatch(new AddSnackbarNotification({ message: `Successfully removed [${entry.mountId}]`, options: { variant: 'success' } }));
+ dispatch(new AddSnackbarNotification({ message: `Successfully removed [${entry.nodeId}]`, options: { variant: 'success' } }));
}, 900);
+ dispatch(maintenanceEntriesReloadAction)
});
};
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/components/editMaintenenceEntryDialog.tsx b/sdnr/wt/odlux/apps/maintenanceApp/src/components/editMaintenenceEntryDialog.tsx
index 55953f497..e0cd51493 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/components/editMaintenenceEntryDialog.tsx
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/components/editMaintenenceEntryDialog.tsx
@@ -121,9 +121,9 @@ class EditMaintenenceEntryDIalogComponent extends React.Component<EditMaintenenc
<DialogContentText>
{setting.dialogDescription}
</DialogContentText>
- <TextField disabled={!setting.enableMountIdEditor} spellCheck={false} autoFocus margin="dense" id="name" label="Name" type="text" fullWidth value={this.state.mountId} onChange={(event) => { this.setState({ mountId: event.target.value }); }} />
- <TextField disabled={!setting.enableTimeEditor} spellCheck={false} autoFocus margin="dense" id="start" label="Start" type="datetime-local" fullWidth value={this.state.start} onChange={(event) => { this.setState({ start: event.target.value }); }} />
- <TextField disabled={!setting.enableTimeEditor} spellCheck={false} autoFocus margin="dense" id="end" label="End" type="datetime-local" fullWidth value={this.state.end} onChange={(event) => { this.setState({ end: event.target.value }); }} />
+ <TextField disabled={!setting.enableMountIdEditor} spellCheck={false} autoFocus margin="dense" id="name" label="Name" type="text" fullWidth value={this.state.nodeId} onChange={(event) => { this.setState({ nodeId: event.target.value }); }} />
+ <TextField disabled={!setting.enableTimeEditor} spellCheck={false} autoFocus margin="dense" id="start" label="Start (Local DateTime)" type="datetime-local" fullWidth value={this.state.start} onChange={(event) => { this.setState({ start: event.target.value }); }} />
+ <TextField disabled={!setting.enableTimeEditor} spellCheck={false} autoFocus margin="dense" id="end" label="End (Local DateTime)" type="datetime-local" fullWidth value={this.state.end} onChange={(event) => { this.setState({ end: event.target.value }); }} />
<FormControl fullWidth disabled={!setting.enableTimeEditor}>
<InputLabel htmlFor="active">Active</InputLabel>
<Select value={ this.state.active || false } onChange={(event) => {
@@ -137,8 +137,8 @@ class EditMaintenenceEntryDIalogComponent extends React.Component<EditMaintenenc
<DialogActions>
<Button onClick={(event) => {
this.onApply({
- _id: this.state._id || this.state.mountId,
- mountId: this.state.mountId,
+ _id: this.state._id || this.state.nodeId,
+ nodeId: this.state.nodeId,
description: this.state.description,
start: this.state.start,
end: this.state.end,
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts
index aa0fb758b..71b4bf70d 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenanceAppRootHandler.ts
@@ -21,23 +21,20 @@ import { combineActionHandler } from '../../../../framework/src/flux/middleware'
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
-import { IConnectAppStoreState } from '../../../connectApp/src/handlers/connectAppRootHandler';
-
-import { IMaintenenceEntriesState, maintenenceEntriesActionHandler } from './maintenenceEntriesHandler';
+import { IMaintenanceEntriesState, maintenanceEntriesActionHandler } from './maintenenceEntriesHandler';
export interface IMaintenanceAppStoreState {
- maintenenceEntries : IMaintenenceEntriesState
+ maintenenceEntries : IMaintenanceEntriesState
}
declare module '../../../../framework/src/store/applicationStore' {
interface IApplicationStoreState {
- maintenance: IMaintenanceAppStoreState,
- connect: IConnectAppStoreState
+ maintenance: IMaintenanceAppStoreState
}
}
const actionHandlers = {
- maintenenceEntries: maintenenceEntriesActionHandler
+ maintenenceEntries: maintenanceEntriesActionHandler
};
export const maintenanceAppRootHandler = combineActionHandler<IMaintenanceAppStoreState>(actionHandlers);
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts
index 4ae8baa38..445541889 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/handlers/maintenenceEntriesHandler.ts
@@ -15,43 +15,21 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-import { IActionHandler } from '../../../../framework/src/flux/action';
+import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
+import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
import { MaintenenceEntry } from '../models/maintenenceEntryType';
-import { LoadAllMainteneceEntriesAction, AllMainteneceEntriesLoadedAction, UpdateMaintenanceEntry } from '../actions/maintenenceActions';
+export interface IMaintenanceEntriesState extends IExternalTableState<MaintenenceEntry> { }
-export interface IMaintenenceEntriesState {
- entries: MaintenenceEntry[];
- busy: boolean;
-}
+// create eleactic search material data fetch handler
+const maintenanceEntriesSearchHandler = createSearchDataHandler<MaintenenceEntry>('maintenance');
-const maintenanceEntriesStateInit: IMaintenenceEntriesState = {
- entries: [],
- busy: false
-};
+export const {
+ actionHandler: maintenanceEntriesActionHandler,
+ createActions: createmaintenanceEntriesActions,
+ createProperties: createmaintenanceEntriesProperties,
+ reloadAction: maintenanceEntriesReloadAction,
+
+ // set value action, to change a value
+} = createExternal<MaintenenceEntry>(maintenanceEntriesSearchHandler, appState => appState.maintenance.maintenenceEntries);
-export const maintenenceEntriesActionHandler: IActionHandler<IMaintenenceEntriesState> = (state = maintenanceEntriesStateInit, action) => {
- if (action instanceof LoadAllMainteneceEntriesAction){
- state = {
- ...state,
- busy: true,
- }
- } else if (action instanceof AllMainteneceEntriesLoadedAction){
- state = {
- ...state,
- entries: action.maintenenceEntries || [],
- busy: false,
- }
- } else if (action instanceof UpdateMaintenanceEntry) {
- const index = state.entries.findIndex(e => action.maintenenceEntry.mountId === e.mountId);
- state = {
- ...state,
- entries: index > -1 ? [
- ...state.entries.slice(0, index),
- action.maintenenceEntry,
- ...state.entries.slice(index+1),
- ] : [...state.entries, action.maintenenceEntry]
- }
- }
- return state;
-} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/models/maintenenceEntryType.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/models/maintenenceEntryType.ts
index f90d300be..989bfbdc3 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/models/maintenenceEntryType.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/models/maintenenceEntryType.ts
@@ -16,30 +16,18 @@
* ============LICENSE_END==========================================================================
*/
/** Represents the elestic search db type for maintenence enrties */
-export type MaintenenceEntryType = {
- node: string;
- // According to the arrangement from 2019.02.15 there will be currently only one element in the filters array.
- filter: [{
- definition: { "object-id-ref": string ,problem: string},
- description: string,
- /** The end date for the maintenence mode formated as ISO date string in UTC. */
- end: string,
- /** The start date for the maintenence mode formated as ISO date string in UTC. */
- start: string
- }],
- /** Determines if the filter set is activated or not. */
- active: boolean;
-}
+
export const spoofSymbol = Symbol("Spoof");
/** Represents the type for an maintenence entry. */
export type MaintenenceEntry = {
- [spoofSymbol]?: boolean;
_id: string;
- mountId: string;
- description: string;
- start: string;
- end: string;
- active: boolean;
-} \ No newline at end of file
+ nodeId: string;
+ description?: string,
+ end: string,
+ start: string
+ active: boolean
+ [spoofSymbol]?: boolean;
+}
+
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx b/sdnr/wt/odlux/apps/maintenanceApp/src/pluginMaintenance.tsx
index e6ab977b3..e6ab977b3 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/plugin.tsx
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/pluginMaintenance.tsx
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts
index 7da5e912b..daa6082d7 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts
@@ -18,8 +18,10 @@
import { requestRest } from '../../../../framework/src/services/restService';
import { Result, HitEntry, PostResponse, DeleteResponse } from '../../../../framework/src/models/elasticSearch';
-import { MaintenenceEntryType, MaintenenceEntry } from '../models/maintenenceEntryType';
-import { convertToLocaleString, convertToGMTString } from '../utils/timeUtils';
+import { MaintenenceEntry } from '../models/maintenenceEntryType';
+import { convertToLocaleString, convertToGMTString, convertToISODateString } from '../utils/timeUtils';
+import { convertPropertyNames, replaceUpperCase } from '../../../../framework/src/utilities/yangHelper';
+
export const maintenenceEntryDatabasePath = "mwtn/maintenancemode";
@@ -27,60 +29,23 @@ export const maintenenceEntryDatabasePath = "mwtn/maintenancemode";
* Represents a web api accessor service for all maintenence entries related actions.
*/
class MaintenenceService {
- /**
- * Gets all maintenence entries from the backend.
- */
- public async getAllMaintenenceEntries(): Promise<(MaintenenceEntry[]) | null> {
- const path = `database/${maintenenceEntryDatabasePath}/_search`;
- const query = { "query": { "match_all": {} } };
-
- const result = await requestRest<Result<MaintenenceEntryType>>(path, { method: "POST", body: JSON.stringify(query) });
- return result && result.hits && result.hits.hits && result.hits.hits.map(me => me._source && me._source.filter[0] && ({
- _id: me._id,
- mountId: me._source.node,
- description: me._source.filter[0].description,
- start: me._source.filter[0].start && convertToLocaleString(me._source.filter[0].start),
- end: me._source.filter[0].end && convertToLocaleString(me._source.filter[0].end),
- active: me._source.active
- })) || null;
- }
-
- /**
- * Gets one maintenence entry by its mountId from the backend.
- */
- public async getMaintenenceEntryByMountId(mountId: string): Promise<(MaintenenceEntry) | null> {
- const path = `database/${maintenenceEntryDatabasePath}/${mountId}`;
-
- const result = await requestRest<HitEntry<MaintenenceEntryType> & { found: boolean }>(path, { method: "GET" });
- return result && result.found && result._source && result._source.filter[0] && {
- _id: result._id,
- mountId: result._source.node,
- description: result._source.filter[0].description,
- start: result._source.filter[0].start && convertToLocaleString(result._source.filter[0].start),
- end: result._source.filter[0].end && convertToLocaleString(result._source.filter[0].end),
- active: result._source.active
- } || null;
- }
/**
* Adds or updates one maintenence entry to the backend.
*/
public async writeMaintenenceEntry(maintenenceEntry: MaintenenceEntry): Promise<PostResponse | null> {
- const path = `database/${maintenenceEntryDatabasePath}/${maintenenceEntry._id}`;
- const data: MaintenenceEntryType = {
- node: maintenenceEntry.mountId,
- filter: [
- {
- definition: { "object-id-ref": "", problem: "" },
- description: "",
- start: convertToGMTString(maintenenceEntry.start),
- end: convertToGMTString(maintenenceEntry.end)
- }
- ],
- active: maintenenceEntry.active
+ const path = `/restconf/operations/data-provider:create-maintenance`;
+
+ const query = {
+ "id": maintenenceEntry._id,
+ "node-id": maintenenceEntry.nodeId,
+ "active": maintenenceEntry.active,
+ "description": maintenenceEntry.description,
+ "end": convertToISODateString(maintenenceEntry.end),
+ "start": convertToISODateString(maintenenceEntry.start)
};
- const result = await requestRest<PostResponse>(path, { method: "POST", body: JSON.stringify(data) });
+ const result = await requestRest<PostResponse>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) });
return result || null;
}
@@ -88,9 +53,17 @@ class MaintenenceService {
* Deletes one maintenence entry by its mountId from the backend.
*/
public async deleteMaintenenceEntry(maintenenceEntry: MaintenenceEntry): Promise<(DeleteResponse) | null> {
- const path = `database/${maintenenceEntryDatabasePath}/${maintenenceEntry._id}`;
+ const path = `/restconf/operations/data-provider:delete-maintenance`;
- const result = await requestRest<DeleteResponse>(path, { method: "DELETE" });
+ const query = {
+ "id": maintenenceEntry._id,
+ "node-id": maintenenceEntry.nodeId,
+ "active": maintenenceEntry.active,
+ "description": maintenenceEntry.description,
+ "end": convertToISODateString(maintenenceEntry.end),
+ "start": convertToISODateString(maintenenceEntry.start)
+ };
+ const result = await requestRest<DeleteResponse>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) });
return result || null;
}
}
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/utils/timeUtils.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/utils/timeUtils.ts
index cdb31e698..676be1a38 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/utils/timeUtils.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/utils/timeUtils.ts
@@ -36,4 +36,10 @@ export function convertToLocaleString(rawDate: string| number): string {
'-' + pad(date.getDate()) +
'T' + pad(date.getHours()) +
':' + pad(date.getMinutes());
+}
+
+export function convertToISODateString(rawDate: string| number): string {
+ const date = new Date(rawDate);
+ const displayDate = date.toISOString();
+ return displayDate.replace(/\.[0-9]{2}/, '.');
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx b/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx
index d68205cd8..3b7879351 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/views/maintenenceView.tsx
@@ -33,13 +33,11 @@ import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/co
import MaterialTable, { MaterialTableCtorType, ColumnType } from '../../../../framework/src/components/material-table';
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
-import { loadAllMountedNetworkElementsAsync } from '../../../connectApp/src/actions/mountedNetworkElementsActions';
-
-import { loadAllMainteneceEntriesAsyncAction } from '../actions/maintenenceActions';
import { MaintenenceEntry, spoofSymbol } from '../models/maintenenceEntryType';
import EditMaintenenceEntryDialog, { EditMaintenenceEntryDialogMode } from '../components/editMaintenenceEntryDialog';
import { convertToLocaleString } from '../utils/timeUtils';
+import { createmaintenanceEntriesActions, createmaintenanceEntriesProperties, maintenanceEntriesReloadAction } from '../handlers/maintenenceEntriesHandler';
const styles = (theme: Theme) => createStyles({
button: {
@@ -48,8 +46,8 @@ const styles = (theme: Theme) => createStyles({
minWidth: 'unset'
},
spacer: {
- marginLeft: theme.spacing.unit,
- marginRight: theme.spacing.unit,
+ marginLeft: theme.spacing(1),
+ marginRight: theme.spacing(1),
display: "inline"
}
});
@@ -57,20 +55,19 @@ const styles = (theme: Theme) => createStyles({
const MaintenenceEntriesTable = MaterialTable as MaterialTableCtorType<MaintenenceEntry>;
const mapProps = (state: IApplicationStoreState) => ({
- maintenenceEntries: state.maintenance.maintenenceEntries.entries,
- busy: state.maintenance.maintenenceEntries.busy
+ maintenanceEntriesProperties: createmaintenanceEntriesProperties(state)
});
const mapDispatcher = (dispatcher: IDispatcher) => ({
- onLoadMenteneceEntries: async () => {
- await dispatcher.dispatch(loadAllMountedNetworkElementsAsync)
- dispatcher.dispatch(loadAllMainteneceEntriesAsyncAction);
+ maintenanceEntriesActions: createmaintenanceEntriesActions(dispatcher.dispatch),
+ onLoadMaintenanceEntries: async () => {
+ await dispatcher.dispatch(maintenanceEntriesReloadAction)
}
});
const emptyMaintenenceEntry: MaintenenceEntry = {
_id: '',
- mountId: '',
+ nodeId: '',
description: '',
start: convertToLocaleString(new Date().valueOf()),
end: convertToLocaleString(new Date().valueOf()),
@@ -88,7 +85,7 @@ type MaintenenceViewComponentState = {
class MaintenenceViewComponent extends React.Component<MaintenenceViewComponentProps, MaintenenceViewComponentState> {
- constructor (props: MaintenenceViewComponentProps) {
+ constructor(props: MaintenenceViewComponentProps) {
super(props);
this.state = {
@@ -117,39 +114,42 @@ 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 },
+ <MaintenenceEntriesTable title={"Maintenance"} customActionButtons={[addMaintenenceEntryAction]} columns={
+ [
+ { property: "nodeId", title: "Node Name", 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 })=>(
- <>
- <div className={classes.spacer}>
- <Tooltip title={"1h from now"} ><Button className={classes.button} onClick={ (event) => this.onOpenPlus1hEditMaintenenceEntryDialog(event, rowData)} >+1h</Button></Tooltip>
- <Tooltip title={"8h from now"} ><Button className={classes.button} onClick={(event) => this.onOpenPlus8hEditMaintenenceEntryDialog(event, rowData)} >+8h</Button></Tooltip>
- </div>
- <div className={classes.spacer}>
- <Tooltip title={"Edit"} ><IconButton className={classes.button} onClick={(event) => this.onOpenEditMaintenenceEntryDialog(event, rowData)} ><EditIcon /></IconButton></Tooltip>
- <Tooltip title={"Remove"} ><IconButton disabled={ !!rowData[spoofSymbol] } className={classes.button} onClick={(event) => this.onOpenRemoveMaintenenceEntryDialog(event, rowData)} ><RemoveIcon /></IconButton></Tooltip>
- </div>
- </>
- ) },
- ]
- } idProperty={'_id'}> </MaintenenceEntriesTable>
+ { property: "active", title: "Activation State", type: ColumnType.boolean, labels: { "true": "active", "false": "not active" }, },
+ { property: "start", title: "Start Date (UTC)", type: ColumnType.text },
+ { property: "end", title: "End Date (UTC)", type: ColumnType.text },
+ {
+ property: "actions", title: "Actions", type: ColumnType.custom, customControl: ({ rowData }) => (
+ <>
+ <div className={classes.spacer}>
+ <Tooltip title={"1h from now"} ><Button className={classes.button} onClick={(event) => this.onOpenPlus1hEditMaintenenceEntryDialog(event, rowData)} >+1h</Button></Tooltip>
+ <Tooltip title={"8h from now"} ><Button className={classes.button} onClick={(event) => this.onOpenPlus8hEditMaintenenceEntryDialog(event, rowData)} >+8h</Button></Tooltip>
+ </div>
+ <div className={classes.spacer}>
+ <Tooltip title={"Edit"} ><IconButton className={classes.button} onClick={(event) => this.onOpenEditMaintenenceEntryDialog(event, rowData)} ><EditIcon /></IconButton></Tooltip>
+ <Tooltip title={"Remove"} ><IconButton disabled={!!rowData[spoofSymbol]} className={classes.button} onClick={(event) => this.onOpenRemoveMaintenenceEntryDialog(event, rowData)} ><RemoveIcon /></IconButton></Tooltip>
+ </div>
+ </>
+ )
+ },
+ ]
+ } idProperty={'_id'}{...this.props.maintenanceEntriesActions} {...this.props.maintenanceEntriesProperties} asynchronus > </MaintenenceEntriesTable>
<EditMaintenenceEntryDialog initialMaintenenceEntry={this.state.maintenenceEntryToEdit} mode={this.state.maintenenceEntryEditorMode}
- onClose={ this.onCloseEditMaintenenceEntryDialog } />
- </>
+ onClose={this.onCloseEditMaintenenceEntryDialog} />
+ </>
);
}
- componentDidMount(){
- this.props.onLoadMenteneceEntries();
+ public componentDidMount() {
+ this.props.maintenanceEntriesActions.onRefresh();
+ this.props.onLoadMaintenanceEntries();
}
private onOpenPlus1hEditMaintenenceEntryDialog = (event: React.MouseEvent<HTMLElement>, entry: MaintenenceEntry) => {
@@ -186,13 +186,13 @@ class MaintenenceViewComponent extends React.Component<MaintenenceViewComponentP
event.preventDefault();
event.stopPropagation();
const startTime = (new Date().valueOf());
- const endTime = startTime ;
+ const endTime = startTime;
this.setState({
maintenenceEntryToEdit: {
...entry,
...(entry.start && endTime)
- ? { start: entry.start, end: entry.end }
- : { start: convertToLocaleString(startTime), end: convertToLocaleString(endTime)}
+ ? { start: convertToLocaleString(entry.start), end: convertToLocaleString(entry.end) }
+ : { start: convertToLocaleString(startTime), end: convertToLocaleString(endTime) }
},
maintenenceEntryEditorMode: EditMaintenenceEntryDialogMode.EditMaintenenceEntry
});
@@ -207,7 +207,7 @@ class MaintenenceViewComponent extends React.Component<MaintenenceViewComponentP
maintenenceEntryToEdit: {
...entry,
...(entry.start && endTime)
- ? { start: entry.start, end: entry.end }
+ ? { start: convertToLocaleString(entry.start), end: convertToLocaleString(entry.end) }
: { start: convertToLocaleString(startTime), end: convertToLocaleString(endTime) }
},
maintenenceEntryEditorMode: EditMaintenenceEntryDialogMode.RemoveMaintenenceEntry
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js b/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js
index 325e70380..e6d968564 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js
@@ -26,7 +26,7 @@ module.exports = (env) => {
context: path.resolve(__dirname, "src"),
entry: {
- maintenanceApp: ["./plugin.tsx"]
+ maintenanceApp: ["./pluginMaintenance.tsx"]
},
devtool: env === "release" ? false : "source-map",
@@ -126,12 +126,26 @@ module.exports = (env) => {
colors: true
},
proxy: {
- "/restconf": {
- target: "http://localhost:3000",
+ "/oauth2/": {
+ target: "http://10.20.6.29:28181",
secure: false
},
- "/database": {
- target: "http://localhost:3000",
+ "/database/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/restconf/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/help/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/websocket/": {
+ target: "http://10.20.6.29:28181",
+ ws: true,
+ changeOrigin: true,
secure: false
}
}
diff --git a/sdnr/wt/odlux/apps/mediatorApp/package.json b/sdnr/wt/odlux/apps/mediatorApp/package.json
index cf9cb040d..718d2fd03 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/package.json
+++ b/sdnr/wt/odlux/apps/mediatorApp/package.json
@@ -20,22 +20,22 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
"@fortawesome/free-solid-svg-icons": "5.6.3",
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/mediatorApp/pom.xml b/sdnr/wt/odlux/apps/mediatorApp/pom.xml
index e1ff2d5fc..80fdbf569 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/pom.xml
+++ b/sdnr/wt/odlux/apps/mediatorApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -8,18 +9,19 @@
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-mediatorApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-mediatorApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -38,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -62,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -88,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -100,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -131,27 +146,5 @@
</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/mediatorApp/src/actions/mediatorServerActions.ts b/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts
index 143dd7d4a..79e46df0e 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/actions/mediatorServerActions.ts
@@ -73,6 +73,12 @@ export class SetMediatorServerSupportedDevices extends BaseAction {
}
}
+export class SetMediatorServerReachable extends BaseAction {
+ constructor(public isReachable: boolean) {
+ super();
+ }
+}
+
export const initializeMediatorServerAsyncActionCreator = (serverId: string) => (dispatch: Dispatch) => {
dispatch(new SetMediatorServerBusy(true));
mediatorService.getMediatorServerById(serverId).then(mediatorServer => {
@@ -82,18 +88,25 @@ export const initializeMediatorServerAsyncActionCreator = (serverId: string) =>
dispatch(new NavigateToApplication("mediator"));
return;
}
- dispatch(new SetMediatorServerInfo(mediatorServer._id, mediatorServer.name, mediatorServer.url));
- mediatorService.getMediatorServerVersion(mediatorServer._id).then(versionInfo => {
- dispatch(new SetMediatorServerVersion(versionInfo));
- });
+ dispatch(new SetMediatorServerInfo(mediatorServer.id, mediatorServer.name, mediatorServer.url));
Promise.all([
- mediatorService.getMediatorServerAllConfigs(mediatorServer._id),
- mediatorService.getMediatorServerSupportedDevices(mediatorServer._id)
- ]).then(([configurations, supportedDevices]) => {
+ mediatorService.getMediatorServerAllConfigs(mediatorServer.id),
+ mediatorService.getMediatorServerSupportedDevices(mediatorServer.id),
+ mediatorService.getMediatorServerVersion(mediatorServer.id)
+ ]).then(([configurations, supportedDevices, versionInfo]) => {
+ if (configurations === null && supportedDevices === null && versionInfo === null) {
+ dispatch(new SetMediatorServerReachable(false));
+ } else {
+ dispatch(new SetMediatorServerReachable(true));
+ }
dispatch(new SetAllMediatorServerConfigurations(configurations));
dispatch(new SetMediatorServerSupportedDevices(supportedDevices));
+ dispatch(new SetMediatorServerVersion(versionInfo));
+ dispatch(new SetMediatorServerBusy(false));
+ }).catch(error => {
+ dispatch(new SetMediatorServerReachable(false));
dispatch(new SetMediatorServerBusy(false));
});
});
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx
index 20ece4c22..bcbccccd7 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorConfigDialog.tsx
@@ -55,8 +55,8 @@ const styles = (theme: Theme) => createStyles({
},
fab: {
position: 'absolute',
- bottom: theme.spacing.unit,
- right: theme.spacing.unit,
+ bottom: theme.spacing(1),
+ right: theme.spacing(1),
},
title: {
fontSize: 14,
@@ -72,7 +72,7 @@ const styles = (theme: Theme) => createStyles({
flexDirection: 'row'
},
left: {
- marginRight: theme.spacing.unit,
+ marginRight: theme.spacing(1),
},
right: {
marginLeft: 0,
@@ -160,16 +160,18 @@ type EditMediatorConfigDialogComponentProps = WithStyles<typeof styles> & Connec
onClose: () => void;
};
-type EditMediatorConfigDialogComponentState = MediatorConfig & { activeTab: number; activeOdlConfig: string };
+type EditMediatorConfigDialogComponentState = MediatorConfig & { activeTab: number; activeOdlConfig: string, forceAddOdlConfig: boolean, isOdlConfigHostnameEmpty: boolean };
class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConfigDialogComponentProps, EditMediatorConfigDialogComponentState> {
- constructor (props: EditMediatorConfigDialogComponentProps) {
+ constructor(props: EditMediatorConfigDialogComponentProps) {
super(props);
this.state = {
...this.props.mediatorConfig,
activeTab: 0,
- activeOdlConfig: ""
+ activeOdlConfig: "",
+ forceAddOdlConfig: false,
+ isOdlConfigHostnameEmpty: false
};
}
@@ -195,7 +197,7 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf
<DialogContentText>
{setting.dialogDescription}
</DialogContentText>
- <Tabs value={this.state.activeTab} indicatorColor="primary" textColor="primary" onChange={(event, value) => this.setState({ activeTab: value })} >
+ <Tabs value={this.state.activeTab} indicatorColor="secondary" textColor="secondary" onChange={(event, value) => this.setState({ activeTab: value })} >
<Tab label="Config" />
<Tab label="ODL AutoConnect" />
</Tabs>
@@ -203,8 +205,8 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf
<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>
- <Select value={this.state.DeviceType} onChange={(event) => {
- const device = this.props.supportedDevices.find(device => device.id === +event.target.value);
+ <Select value={this.state.DeviceType} onChange={(event, value) => {
+ const device = this.props.supportedDevices.find(device => device.id === event.target.value);
if (device) {
this.setState({
DeviceType: device.id,
@@ -242,11 +244,11 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf
}} ><DeleteIcon /></IconButton>)
return (
<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 || "") })} >
+ onToggle={(id) => { this.setState({ activeOdlConfig: (this.state.activeOdlConfig === id) ? "" : (id || "") }); console.log("activeOdlConfig " + id); this.hideHostnameErrormessage(id) }} >
<div className={classes.alignInOneLine}>
<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={(e, v) => this.odlConfigValueChangeHandlerCreator(ind, "Protocol", e => v)} inputProps={{ name: `protocol-${ind}`, id: `protocol-${ind}` }} fullWidth >
<MenuItem value={"http"}>http</MenuItem>
<MenuItem value={"https"}>https</MenuItem>
</Select>
@@ -254,6 +256,10 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf
<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)} />
</div>
+ {
+ this.state.isOdlConfigHostnameEmpty &&
+ <Typography component={"div"} className={classes.left} color="error" gutterBottom>Please add a hostname.</Typography>
+ }
<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)} />
<TextField className={classes.right} spellCheck={false} margin="dense" id="password" label="Password" type="password" value={cfg.Password} onChange={this.odlConfigValueChangeHandlerCreator(ind, "Password", e => e.target.value)} />
@@ -264,9 +270,15 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf
</Panel>
);
})
- : <div className={classes.center} >
- <Typography component={"div"} className={classes.title} color="textSecondary" gutterBottom>Please add an ODL auto connect configuration.</Typography>
- </div>
+ : (this.state.forceAddOdlConfig ?
+ <div className={classes.center} >
+ <Typography component={"div"} className={classes.title} color="error" gutterBottom>Please add at least one ODL auto connect configuration.</Typography>
+ </div>
+ :
+ <div className={classes.center} >
+ <Typography component={"div"} className={classes.title} color="textSecondary" gutterBottom>Please add an ODL auto connect configuration.</Typography>
+ </div>
+ )
}
<Fab className={classes.fab} color="primary" aria-label="Add" onClick={() => this.setState({
ODLConfig: [...this.state.ODLConfig, { Server: '', Port: 8181, Protocol: 'https', User: 'admin', Password: 'admin', Trustall: false }]
@@ -276,25 +288,76 @@ class EditMediatorConfigDialogComponent extends React.Component<EditMediatorConf
</DialogContent>
<DialogActions>
- <Button onClick={(event) => {
- this.onApply(Object.keys(this.state).reduce<MediatorConfig & { [kex: string]: any }>((acc, key) => {
- // do not copy activeTab and activeOdlConfig
- if (key !== "activeTab" && key !== "activeOdlConfig" && key !== "_initialMediatorConfig") acc[key] = (this.state as any)[key];
- return acc;
- }, {} as MediatorConfig));
- event.preventDefault();
- event.stopPropagation();
- }} > {setting.applyButtonText} </Button>
+ <Button onClick={(event) => { this.addConfig(event) }} > {setting.applyButtonText} </Button>
<Button onClick={(event) => {
this.onCancel();
event.preventDefault();
event.stopPropagation();
+ this.resetPanel();
}} color="secondary"> {setting.cancelButtonText} </Button>
</DialogActions>
</Dialog>
)
}
+ private addConfig = (event: any) => {
+ event.preventDefault();
+ event.stopPropagation();
+
+ if (this.state.ODLConfig.length === 0) {
+ this.setState({ activeTab: 1, forceAddOdlConfig: true });
+ }
+ else
+ if (this.state.ODLConfig.length > 0) {
+ for (let i = 0; i <= this.state.ODLConfig.length; i++) {
+ if (this.isHostnameEmpty(i)) {
+ this.setState({ activeOdlConfig: 'panel-' + i })
+ this.setState({ isOdlConfigHostnameEmpty: true })
+ return;
+ }
+ }
+
+ this.onApply(Object.keys(this.state).reduce<MediatorConfig & { [kex: string]: any }>((acc, key) => {
+ // do not copy additional state properties
+ if (key !== "activeTab" && key !== "activeOdlConfig" && key !== "isOdlConfigHostnameEmpty"
+ && key !== "forceAddOdlConfig" && key !== "_initialMediatorConfig") acc[key] = (this.state as any)[key];
+ return acc;
+ }, {} as MediatorConfig));
+ this.resetPanel();
+ }
+ }
+
+ private resetPanel = () => {
+ this.setState({ forceAddOdlConfig: false, isOdlConfigHostnameEmpty: false, activeTab: 0 });
+ }
+
+
+ private hideHostnameErrormessage = (panelId: string | null) => {
+
+ if (panelId) {
+ let id = Number(panelId.split('-')[1]);
+ if (!this.isHostnameEmpty(id)) {
+ this.setState({ isOdlConfigHostnameEmpty: false })
+ }
+ }
+ }
+
+ private isHostnameEmpty = (id: number) => {
+
+ const element = this.state.ODLConfig[id];
+ if (element) {
+ if (!element.Server) {
+ return true;
+ }
+ else {
+ return false
+ }
+
+ } else {
+ return null;
+ }
+ }
+
private onApply = (config: MediatorConfig) => {
this.props.onClose && this.props.onClose();
switch (this.props.mode) {
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx
index d38fb0b6e..882a6b37e 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/components/editMediatorServerDialog.tsx
@@ -29,6 +29,7 @@ import { IDispatcher, connect, Connect } from '../../../../framework/src/flux/co
import { addAvaliableMediatorServerAsyncActionCreator, removeAvaliableMediatorServerAsyncActionCreator, updateAvaliableMediatorServerAsyncActionCreator } from '../actions/avaliableMediatorServersActions';
import { MediatorServer } from '../models/mediatorServer';
+import { Typography } from '@material-ui/core';
export enum EditMediatorServerDialogMode {
None = "none",
@@ -94,19 +95,54 @@ type EditMediatorServerDialogComponentProps = Connect<undefined, typeof mapDispa
onClose: () => void;
};
-type EditMediatorServerDialogComponentState = MediatorServer;
+const urlRegex = RegExp("^https?://");
+
+type EditMediatorServerDialogComponentState = MediatorServer & { errorMessage: string[] };
class EditMediatorServerDialogComponent extends React.Component<EditMediatorServerDialogComponentProps, EditMediatorServerDialogComponentState> {
- constructor (props: EditMediatorServerDialogComponentProps) {
+ constructor(props: EditMediatorServerDialogComponentProps) {
super(props);
this.state = {
- ...this.props.mediatorServer
+ ...this.props.mediatorServer,
+ errorMessage: []
};
}
+ areFieldsValid = () => {
+ return this.state.name.trim().length > 0 && this.state.url.trim().length > 0 && urlRegex.test(this.state.url);
+ }
+
+ createErrorMessages = () => {
+
+ let messages = [];
+ if (this.state.name.trim().length === 0 && this.state.url.trim().length === 0) {
+ messages.push("The server name and the url must not be empty.")
+ }
+ else
+ if (this.state.url.trim().length === 0) {
+ messages.push("The server url must not be empty.")
+
+ } else if (this.state.name.trim().length === 0) {
+ messages.push("The server name must not be empty.")
+ }
+
+ if (!urlRegex.test(this.state.url)) {
+ if (messages.length > 0) {
+ return messages.concat(["The server url must start with 'http(s)://'."])
+ } else {
+ return ["The server url must start with 'http(s)://'."]
+ }
+ }
+
+ return messages;
+ }
+
+
+
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>
@@ -117,14 +153,25 @@ class EditMediatorServerDialogComponent extends React.Component<EditMediatorServ
{/* <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 }); }} />
+
+ <Typography id="errorMessage" component={"div"} color="error">{this.state.errorMessage.map((error, index) => <div key={index}>{error}</div>)}</Typography>
+
</DialogContent>
<DialogActions>
<Button onClick={(event) => {
- this.onApply({
- _id: this.state._id,
- name: this.state.name,
- url: this.state.url,
- });
+
+ if (this.areFieldsValid()) {
+ this.setState({ errorMessage: [] })
+ this.onApply({
+ id: this.state.id,
+ name: this.state.name,
+ url: this.state.url
+ });
+ } else {
+ const errorMessage = this.createErrorMessages()
+ this.setState({ errorMessage: errorMessage })
+ }
+
event.preventDefault();
event.stopPropagation();
}} > {setting.applyButtonText} </Button>
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/components/showMeditaorInfoDialog.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/components/showMeditaorInfoDialog.tsx
new file mode 100644
index 000000000..fd8a2496a
--- /dev/null
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/components/showMeditaorInfoDialog.tsx
@@ -0,0 +1,107 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+import * as React from 'react'
+import { Dialog, DialogTitle, DialogContent, DialogActions, TextField, DialogContentText, Checkbox, Button, FormControlLabel, FormGroup } from '@material-ui/core';
+import { IApplicationState } from '../../../../framework/src/handlers/applicationStateHandler';
+import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
+import connect, { Connect } from '../../../../framework/src/flux/connect';
+import { MediatorConfigResponse } from 'models/mediatorServer';
+import { Panel } from '../../../../framework/src/components/material-ui/panel';
+
+export enum MediatorInfoDialogMode {
+ None = "none",
+ ShowDetails = "showDetails"
+}
+
+const mapProps = (state: IApplicationStoreState) => ({ supportedDevices: state.mediator.mediatorServerState.supportedDevices })
+
+type ShowMediatorInfoDialogComponentProps = Connect<typeof mapProps, undefined> &
+{
+ config: MediatorConfigResponse,
+ mode: MediatorInfoDialogMode,
+ onClose: () => void
+}
+
+type ShowMediatorInfoDialogComponentState = {
+ status: string,
+ devicetype: string,
+ activeOdlConfig: string
+}
+
+/*
+Displays all values of a mediator server
+*/
+class ShowMediatorInfoDialogComponent extends React.Component<ShowMediatorInfoDialogComponentProps, ShowMediatorInfoDialogComponentState> {
+
+ constructor(props: ShowMediatorInfoDialogComponentProps) {
+ super(props);
+ if (this.props.config) {
+ let deviceType = props.supportedDevices.find(element => element.id === this.props.config.DeviceType)
+
+ this.state = {
+ status: props.config.pid > 0 ? "Running" : "Stopped",
+ devicetype: deviceType != undefined ? deviceType.device : 'none',
+ activeOdlConfig: ''
+ }
+ }
+ }
+
+ onClose = (event: React.MouseEvent) => {
+ event.preventDefault();
+ event.stopPropagation();
+ this.props.onClose();
+ }
+
+ render() {
+ return (
+ <Dialog open={this.props.mode !== MediatorInfoDialogMode.None} onBackdropClick={this.props.onClose} >
+ <DialogTitle>{this.props.config.Name}</DialogTitle>
+ <DialogContent>
+ <TextField disabled margin="dense" id="deviceIp" label="Device IP" fullWidth defaultValue={this.props.config.DeviceIp} />
+ <TextField disabled margin="dense" id="deviceport" label="Device Port" fullWidth defaultValue={this.props.config.DevicePort} />
+ <TextField disabled margin="dense" id="status" label="Status" fullWidth defaultValue={this.state.status} />
+ <TextField disabled margin="dense" id="deviceType" label="Device Type" fullWidth defaultValue={this.state.devicetype} />
+ <TextField disabled margin="dense" id="ncPort" label="Netconf Port" fullWidth defaultValue={this.props.config.NcPort} />
+ <FormGroup>
+ <FormControlLabel control={<Checkbox disabled defaultChecked={this.props.config.IsNCConnected}></Checkbox>} label="Netconf Connection" />
+ <FormControlLabel control={<Checkbox disabled defaultChecked={this.props.config.IsNeConnected}></Checkbox>} label="Network Element Connection" />
+ <FormControlLabel control={<Checkbox disabled defaultChecked={this.props.config.fwactive}></Checkbox>} label="Firewall active" />
+ </FormGroup>
+ {
+ this.props.config.ODLConfig.map((element, index) =>
+ <Panel title={"ODL config " + (this.props.config.ODLConfig.length > 1 ? index + 1 : '')} key={index} panelId={'panel-' + index} activePanel={this.state.activeOdlConfig} onToggle={(id: string) => { this.setState({ activeOdlConfig: (this.state.activeOdlConfig === id) ? "" : (id || "") }); }}>
+ <TextField disabled margin="dense" defaultValue={element.Protocol + '://' + element.Server} label="Server" />
+ <TextField disabled margin="dense" defaultValue={element.Port} label="Port" />
+ <FormControlLabel control={<Checkbox disabled checked={element.Trustall} />} label="Trustall" />
+ </Panel>
+ )
+ }
+
+ </DialogContent>
+ <DialogActions>
+ <Button onClick={this.onClose}>Close</Button>
+ </DialogActions>
+ </Dialog>
+ )
+ }
+
+}
+
+export const ShowMediatorInfoDialog = connect(mapProps)(ShowMediatorInfoDialogComponent)
+export default ShowMediatorInfoDialog; \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorServerHandler.ts b/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorServerHandler.ts
index 0d137b396..246634cbe 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorServerHandler.ts
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/handlers/mediatorServerHandler.ts
@@ -17,7 +17,7 @@
*/
import { XmlFileInfo, MediatorConfig, BusySymbol, MediatorConfigResponse, MediatorServerDevice } from "../models/mediatorServer";
import { IActionHandler } from "../../../../framework/src/flux/action";
-import { SetMediatorServerVersion, SetMediatorServerInfo, SetAllMediatorServerConfigurations, SetMediatorServerBusy, SetMediatorServerSupportedDevices } from "../actions/mediatorServerActions";
+import { SetMediatorServerVersion, SetMediatorServerInfo, SetAllMediatorServerConfigurations, SetMediatorServerBusy, SetMediatorServerSupportedDevices, SetMediatorServerReachable } from "../actions/mediatorServerActions";
import { SetMediatorBusyByName, UpdateMediatorConfig, AddMediatorConfig, RemoveMediatorConfig } from "../actions/mediatorConfigActions";
export type MediatorServerState = {
@@ -30,6 +30,7 @@ export type MediatorServerState = {
nexmls: XmlFileInfo[];
configurations: MediatorConfigResponse[];
supportedDevices: MediatorServerDevice[];
+ isReachable: boolean;
}
const mediatorServerInit: MediatorServerState = {
@@ -41,7 +42,8 @@ const mediatorServerInit: MediatorServerState = {
mediatorVersion: null,
nexmls: [],
configurations: [],
- supportedDevices: []
+ supportedDevices: [],
+ isReachable: true
}
export const mediatorServerHandler: IActionHandler<MediatorServerState> = (state = mediatorServerInit, action) => {
@@ -111,6 +113,8 @@ export const mediatorServerHandler: IActionHandler<MediatorServerState> = (state
...state.configurations.slice(index + 1)
]
};
+ } else if( action instanceof SetMediatorServerReachable){
+ state = {...state, isReachable: action.isReachable}
}
return state;
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/models/mediatorServer.ts b/sdnr/wt/odlux/apps/mediatorApp/src/models/mediatorServer.ts
index a2b54599c..6ab6db8b3 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/models/mediatorServer.ts
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/models/mediatorServer.ts
@@ -16,7 +16,7 @@
* ============LICENSE_END==========================================================================
*/
export type MediatorServer = {
- _id: string;
+ id: string;
name: string;
url: string;
}
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts b/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts
index b257fa92c..aee086689 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts
@@ -19,9 +19,9 @@ import * as $ from 'jquery';
import { requestRest, formEncode } from '../../../../framework/src/services/restService';
import { MediatorServer, MediatorServerVersionInfo, MediatorConfig, MediatorServerDevice, MediatorConfigResponse } from '../models/mediatorServer';
-import { HitEntry } from '../../../../framework/src/models';
+import { PostResponse, DeleteResponse, Result } from '../../../../framework/src/models';
-export const mediatorServerResourcePath = "mwtn/mediator-server";
+export const mediatorServerResourcePath = "mediator-server";
type MediatorServerResponse<TData> = { code: number, data: TData };
type IndexableMediatorServer = MediatorServer & { [key: string]: any; };
@@ -33,46 +33,68 @@ class MediatorService {
/**
* Inserts data into the mediator servers table.
*/
- public async insertMediatorServer(server: IndexableMediatorServer): Promise<MediatorServer | null> {
- const path = `database/${mediatorServerResourcePath}`;
- const data = Object.keys(server).reduce((acc, cur) => {
- if (cur !== "_id") acc[cur] = server[cur];
- return acc;
- }, {} as IndexableMediatorServer);
- const result = await requestRest<MediatorServer>(path, { method: "POST", body: JSON.stringify(data) });
+ public async insertMediatorServer(server: IndexableMediatorServer): Promise<PostResponse | null> {
+ const path = `/restconf/operations/data-provider:create-mediator-server`;
+
+ const data = {
+ "url": server.url,
+ "name": server.name
+ }
+
+ const result = await requestRest<PostResponse>(path, { method: "POST", body: JSON.stringify({ input: data }) });
return result || null;
}
/**
* Updates data into the mediator servers table.
*/
- public async updateMediatorServer(server: IndexableMediatorServer): Promise<MediatorServer | null> {
- const path = `database/${mediatorServerResourcePath}/${server._id}`;
- const data = Object.keys(server).reduce((acc, cur) => {
- if (cur !== "_id") { acc[cur] = server[cur] } else { acc["id"] = 0 };
- return acc;
- }, {} as IndexableMediatorServer);
- const result = await requestRest<MediatorServer>(path, { method: "PUT", body: JSON.stringify(data) });
+ public async updateMediatorServer(server: IndexableMediatorServer): Promise<PostResponse | null> {
+ const path = `/restconf/operations/data-provider:update-mediator-server`;
+
+ const data = {
+ "id": server.id,
+ "url": server.url,
+ "name": server.name
+ }
+
+ const result = await requestRest<PostResponse>(path, { method: "POST", body: JSON.stringify({ input: data }) });
return result || null;
}
/**
* Deletes data from the mediator servers table.
*/
- public async deleteMediatorServer(server: MediatorServer): Promise<MediatorServer | null> {
- const path = `database/${mediatorServerResourcePath}/${server._id}`;
- const result = await requestRest<MediatorServer>(path, { method: "DELETE" });
+ public async deleteMediatorServer(server: MediatorServer): Promise<DeleteResponse | null> {
+ const path = `/restconf/operations/data-provider:delete-mediator-server`;
+
+ const data = {
+ "id": server.id,
+ }
+
+ const result = await requestRest<DeleteResponse>(path, { method: "POST", body: JSON.stringify({ input: data }) });
return result || null;
}
public async getMediatorServerById(serverId: string): Promise<MediatorServer | null> {
- const path = `database/${mediatorServerResourcePath}/${serverId}`;
- const result = await requestRest<HitEntry<MediatorServer> & { found: boolean }>(path, { method: "GET" });
- return result && result.found && result._source && {
- _id: result._id,
- name: result._source.name,
- url: result._source.url,
- } || null;
+ const path = `/restconf/operations/data-provider:read-mediator-server-list`;
+
+ const data = { "filter": [{ "property": "id", "filtervalue": serverId }] }
+
+
+ const result = await requestRest<Result<MediatorServer>>(path, { method: "POST", body: JSON.stringify({ input: data }) });
+
+ if (result && result.output.data[0]) {
+ const firstResult = result.output.data[0];
+
+ return {
+ id: firstResult.id,
+ name: firstResult.name,
+ url: firstResult.url
+ }
+ }
+ else {
+ return null;
+ }
}
// https://cloud-highstreet-technologies.com/wiki/doku.php?id=att:ms:api
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx
index fcb3fe46f..945e13507 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorApplication.tsx
@@ -36,6 +36,7 @@ import { MediatorConfig, BusySymbol, MediatorConfigResponse } from '../models/me
import EditMediatorConfigDialog, { EditMediatorConfigDialogMode } from '../components/editMediatorConfigDialog';
import { startMediatorByNameAsyncActionCreator, stopMediatorByNameAsyncActionCreator } from '../actions/mediatorConfigActions';
import mediatorService from '../services/mediatorService';
+import { ShowMediatorInfoDialog, MediatorInfoDialogMode } from '../components/showMeditaorInfoDialog'
const styles = (theme: Theme) => createStyles({
root: {
@@ -44,7 +45,7 @@ const styles = (theme: Theme) => createStyles({
flex: '1',
},
formControl: {
- margin: theme.spacing.unit,
+ margin: theme.spacing(1),
minWidth: 300,
},
button: {
@@ -53,8 +54,8 @@ const styles = (theme: Theme) => createStyles({
minWidth: 'unset'
},
spacer: {
- marginLeft: theme.spacing.unit,
- marginRight: theme.spacing.unit,
+ marginLeft: theme.spacing(1),
+ marginRight: theme.spacing(1),
display: "inline"
},
progress: {
@@ -75,6 +76,7 @@ const mapProps = (state: IApplicationStoreState) => ({
configurations: state.mediator.mediatorServerState.configurations,
supportedDevices: state.mediator.mediatorServerState.supportedDevices,
busy: state.mediator.mediatorServerState.busy,
+ isReachable: state.mediator.mediatorServerState.isReachable
});
const mapDispatch = (dispatcher: IDispatcher) => ({
@@ -96,13 +98,16 @@ const emptyMediatorConfig: MediatorConfig = {
};
const MediatorServerConfigurationsTable = MaterialTable as MaterialTableCtorType<MediatorConfigResponse>;
+const MediatorServerUnreachableTable = MaterialTable as MaterialTableCtorType<{ Name: string, status: string, ipAdress: string, device: string, actions: string }>
type MediatorApplicationComponentProps = Connect<typeof mapProps, typeof mapDispatch> & WithStyles<typeof styles>;
type MediatorServerSelectionComponentState = {
busy: boolean,
mediatorConfigToEdit: MediatorConfig,
- mediatorConfigEditorMode: EditMediatorConfigDialogMode
+ mediatorConfigEditorMode: EditMediatorConfigDialogMode,
+ mediatorShowInfoMode: MediatorInfoDialogMode,
+ mediatorConfigToDisplay: MediatorConfigResponse | null
}
class MediatorApplicationComponent extends React.Component<MediatorApplicationComponentProps, MediatorServerSelectionComponentState> {
@@ -114,6 +119,8 @@ class MediatorApplicationComponent extends React.Component<MediatorApplicationCo
busy: false,
mediatorConfigToEdit: emptyMediatorConfig,
mediatorConfigEditorMode: EditMediatorConfigDialogMode.None,
+ mediatorShowInfoMode: MediatorInfoDialogMode.None,
+ mediatorConfigToDisplay: null
}
}
@@ -135,7 +142,7 @@ class MediatorApplicationComponent extends React.Component<MediatorApplicationCo
</Tooltip>
</div>
<div className={classes.spacer}>
- <Tooltip title={"Info"} ><IconButton className={classes.button}><InfoIcon /></IconButton></Tooltip>
+ <Tooltip title={"Info"} ><IconButton className={classes.button} onClick={(event) => { this.onOpenInfoDialog(event, rowData) }}><InfoIcon /></IconButton></Tooltip>
</div>
<div className={classes.spacer}>
{process.env.NODE_ENV === "development" ? <Tooltip title={"Edit"} ><IconButton disabled={rowData[BusySymbol]} className={classes.button} onClick={event => this.onOpenEditConfigurationDialog(event, rowData)}><EditIcon /></IconButton></Tooltip> : null}
@@ -145,24 +152,38 @@ class MediatorApplicationComponent extends React.Component<MediatorApplicationCo
);
const addMediatorConfigAction = { icon: AddIcon, tooltip: 'Add', onClick: this.onOpenAddConfigurationDialog };
+
return (
<div className={classes.root}>
{this.props.busy || this.state.busy
? <div className={classes.progress}> <CircularProgress color={"secondary"} size={48} /> </div>
- : <MediatorServerConfigurationsTable title={this.props.serverName || ''} customActionButtons={[addMediatorConfigAction]} idProperty={"Name"} rows={this.props.configurations} asynchronus columns={[
- { property: "Name", title: "Mediator", type: ColumnType.text },
- { property: "Status", title: "Status", type: ColumnType.custom, customControl: ({ rowData }) => rowData.pid ? (<span>Running</span>) : (<span>Stopped</span>) },
- { property: "DeviceIp", title: "IP Adress", type: ColumnType.text },
- {
- property: "Device", title: "Device", type: ColumnType.custom, customControl: ({ rowData }) => {
- const dev = this.props.supportedDevices && this.props.supportedDevices.find(dev => dev.id === rowData.DeviceType);
- return (
- <span> {dev && `${dev.vendor} - ${dev.device} (${dev.version || '0.0.0'})`} </span>
- )
- }
- },
- { property: "actions", title: "Actions", type: ColumnType.custom, customControl: ({ rowData }) => renderActions(rowData) },
- ]} />
+ :
+
+ this.props.isReachable ?
+
+ <MediatorServerConfigurationsTable title={this.props.serverName || ''} customActionButtons={[addMediatorConfigAction]} idProperty={"Name"} rows={this.props.configurations} asynchronus columns={[
+ { property: "Name", title: "Mediator", type: ColumnType.text },
+ { property: "Status", title: "Status", type: ColumnType.custom, customControl: ({ rowData }) => rowData.pid ? (<span>Running</span>) : (<span>Stopped</span>) },
+ { property: "DeviceIp", title: "IP Adress", type: ColumnType.text },
+ {
+ property: "Device", title: "Device", type: ColumnType.custom, customControl: ({ rowData }) => {
+ const dev = this.props.supportedDevices && this.props.supportedDevices.find(dev => dev.id === rowData.DeviceType);
+ return (
+ <span> {dev && `${dev.vendor} - ${dev.device} (${dev.version || '0.0.0'})`} </span>
+ )
+ }
+ },
+ { property: "actions", title: "Actions", type: ColumnType.custom, customControl: ({ rowData }) => renderActions(rowData) },
+ ]} />
+ :
+ <MediatorServerUnreachableTable title={this.props.serverName || ''} idProperty={"Name"} disableFilter={true} disableSorting={true} enableSelection={false} rows={[{ Name: '', status: "Mediator server not found.", ipAdress: '', device: '', actions: '' }]} columns={[
+ { property: "Name", title: "Mediator", type: ColumnType.text },
+ { property: "status", title: "Status", type: ColumnType.text },
+ { property: "ipAdress", title: "IP Adress", type: ColumnType.text },
+ { property: "device", title: "Device", type: ColumnType.text },
+ { property: "actions", title: "Actions", type: ColumnType.text },
+
+ ]} />
}
<EditMediatorConfigDialog
@@ -170,17 +191,34 @@ class MediatorApplicationComponent extends React.Component<MediatorApplicationCo
mode={this.state.mediatorConfigEditorMode}
onClose={this.onCloseEditMediatorConfigDialog} />
+ {
+
+ this.state.mediatorShowInfoMode != MediatorInfoDialogMode.None &&
+ <ShowMediatorInfoDialog
+ config={this.state.mediatorConfigToDisplay as MediatorConfigResponse}
+ mode={this.state.mediatorShowInfoMode}
+ onClose={this.onCloseInfoDialog} />
+ }
</div>
);
}
+ private onOpenInfoDialog = (event: React.MouseEvent<HTMLElement>, configEntry: MediatorConfigResponse) => {
+ event.stopPropagation();
+ event.preventDefault();
+ this.setState({ mediatorShowInfoMode: MediatorInfoDialogMode.ShowDetails, mediatorConfigToDisplay: configEntry })
+ }
+
+ private onCloseInfoDialog = () => {
+ this.setState({ mediatorShowInfoMode: MediatorInfoDialogMode.None, mediatorConfigToDisplay: null })
+ }
+
private onOpenAddConfigurationDialog = () => {
// Tries to determine a free port for netconf listener and snpm listener
// it it could not determine free ports the dialog will open any way
// those ports should not be configured from the fontend, furthermore
// the backend should auto configure them and tell the user the result
// after the creation process.
-
this.setState({
busy: true,
});
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx
index a23afb5f6..a5b34a2dc 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/views/mediatorServerSelection.tsx
@@ -42,8 +42,8 @@ const styles = (theme: Theme) => createStyles({
minWidth: 'unset',
},
spacer: {
- marginLeft: theme.spacing.unit,
- marginRight: theme.spacing.unit,
+ marginLeft: theme.spacing(1),
+ marginRight: theme.spacing(1),
display: "inline",
},
});
@@ -58,7 +58,7 @@ const mapDispatch = (dispatcher: IDispatcher) => ({
});
const emptyMediatorServer: MediatorServer = {
- _id: "",
+ id: "",
name: "",
url: ""
};
@@ -72,7 +72,7 @@ type MediatorServerSelectionComponentState = {
class MediatorServerSelectionComponent extends React.Component<MediatorServerSelectionComponentProps, MediatorServerSelectionComponentState> {
- constructor (props: MediatorServerSelectionComponentProps) {
+ constructor(props: MediatorServerSelectionComponentProps) {
super(props);
this.state = {
@@ -94,7 +94,7 @@ class MediatorServerSelectionComponent extends React.Component<MediatorServerSel
};
return (
<>
- <MediatorServersTable customActionButtons={[addMediatorServerActionButton]} idProperty={"_id"}
+ <MediatorServersTable title={"Mediator"} 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 },
@@ -106,19 +106,23 @@ class MediatorServerSelectionComponent extends React.Component<MediatorServerSel
</div>
)
}
- ]} onHandleClick={ this.onSelectMediatorServer } />
+ ]} onHandleClick={this.onSelectMediatorServer} />
<EditMediatorServerDialog
- mediatorServer={ this.state.mediatorServerToEdit }
- mode={ this.state.mediatorServerEditorMode }
- onClose={ this.onCloseEditMediatorServerDialog } />
+ mediatorServer={this.state.mediatorServerToEdit}
+ mode={this.state.mediatorServerEditorMode}
+ onClose={this.onCloseEditMediatorServerDialog} />
</>
);
}
- private onSelectMediatorServer = (event: React.MouseEvent<HTMLElement>, server: MediatorServer) =>{
+ public componentDidMount() {
+ this.props.mediatorServersActions.onToggleFilter();
+ }
+
+ private onSelectMediatorServer = (event: React.MouseEvent<HTMLElement>, server: MediatorServer) => {
event.preventDefault();
event.stopPropagation();
- this.props.selectMediatorServer(server && server._id);
+ this.props.selectMediatorServer(server && server.id);
}
diff --git a/sdnr/wt/odlux/apps/mediatorApp/webpack.config.js b/sdnr/wt/odlux/apps/mediatorApp/webpack.config.js
index 94943ecd5..3efe2d015 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/mediatorApp/webpack.config.js
@@ -127,19 +127,29 @@ module.exports = (env) => {
},
proxy: {
"/oauth2/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181",
secure: false
},
"/database/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181",
secure: false
},
"/restconf/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181",
secure: false
},
"/help/": {
- target: "http://localhost:3000",
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/ms/": {
+ target: "http://10.20.6.29:28181",
+ secure: false
+ },
+ "/websocket": {
+ target: "http://10.20.6.29:28181",
+ ws: true,
+ changeOrigin: true,
secure: false
}
}
diff --git a/sdnr/wt/odlux/apps/minimumApp/.fbExcludeFilterFile b/sdnr/wt/odlux/apps/minimumApp/.fbExcludeFilterFile
deleted file mode 100644
index 3cd2303d3..000000000
--- a/sdnr/wt/odlux/apps/minimumApp/.fbExcludeFilterFile
+++ /dev/null
@@ -1,25 +0,0 @@
-<FindBugsFilter>
- <Match>
- <Or>
- <Package name="~.*protobuff\.messages.*" />
- <Package name="~org\.opendaylight\.yang\.gen\..*" />
- <Package name="~org\.opendaylight\.controller\.config\.yang\.config\..*" />
- </Or>
- </Match>
-
- <Match>
- <Or>
- <!-- Anonymous inner classes are very common in ODL. -->
- <Bug pattern="SIC_INNER_SHOULD_BE_STATIC_ANON" />
-
- <!-- We use static slf4j Logger (this rule is from KengoTODA/findbugs-slf4j jp.skypencil.findbugs.slf4:bug-pattern) -->
- <Bug pattern="SLF4J_LOGGER_SHOULD_BE_NON_STATIC" />
-
- <!-- Guava 23.6+ uses @NullableDecl which FindBugs doesn't know about; fixed in SpotBugs 3.1.2+ -->
- <Bug pattern="NP_NONNULL_PARAM_VIOLATION" />
- <Bug pattern="NP_NULL_PARAM_DEREF" />
- <Bug pattern="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE" />
- <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
- </Or>
- </Match>
-</FindBugsFilter>
diff --git a/sdnr/wt/odlux/apps/minimumApp/package.json b/sdnr/wt/odlux/apps/minimumApp/package.json
index f738c6354..d9b18a3ce 100644
--- a/sdnr/wt/odlux/apps/minimumApp/package.json
+++ b/sdnr/wt/odlux/apps/minimumApp/package.json
@@ -20,21 +20,21 @@
],
"author": "Matthias Fischer",
"license": "Apache-2.0",
- "dependencies": {
- "@odlux/framework": "*"
- },
+ "dependencies": {
+ "@odlux/framework": "*"
+ },
"peerDependencies": {
- "@types/react": "16.4.14",
- "@types/react-dom": "16.0.8",
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
"@types/react-router-dom": "4.3.1",
- "@material-ui/core": "3.8.3",
- "@material-ui/icons": "3.0.2",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
"@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": "16.11.0",
+ "react-dom": "16.11.0",
"react-router-dom": "4.3.1"
}
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/minimumApp/pom.xml b/sdnr/wt/odlux/apps/minimumApp/pom.xml
index bdc486ae3..51a8f0a6b 100644
--- a/sdnr/wt/odlux/apps/minimumApp/pom.xml
+++ b/sdnr/wt/odlux/apps/minimumApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-SNAPSHOT</version>
<relativePath/>
</parent>
- <modelVersion>4.0.0</modelVersion>
+
<groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
<artifactId>sdnr-wt-odlux-app-minimumApp</artifactId>
<version>0.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-minimumApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/package.json b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json
index 290046ef5..1e6adf7c3 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/package.json
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json
@@ -21,23 +21,23 @@
"author": "Sai Neetha Phulmali",
"license": "Apache-2.0",
"dependencies": {
- "@odlux/framework" : "*",
+ "@odlux/framework": "*",
"@odlux/connect-app": "*",
- "react-chartjs-2":"2.7.6",
- "chart.js":"2.8.0"
+ "react-chartjs-2": "2.7.6",
+ "chart.js": "2.8.0"
},
"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"
+ "@types/react": "16.9.11",
+ "@types/react-dom": "16.9.4",
+ "@types/react-router-dom": "4.3.1",
+ "@material-ui/core": "4.6.1",
+ "@material-ui/icons": "4.5.1",
+ "@types/classnames": "2.2.6",
+ "@types/flux": "3.1.8",
+ "@types/jquery": "3.3.10",
+ "jquery": "3.3.1",
+ "react": "16.11.0",
+ "react-dom": "16.11.0",
+ "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
index 647b9efdb..4fc302f05 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/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">
+ <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.onap.ccsdk.parent</groupId>
@@ -7,18 +8,20 @@
<version>1.5.1-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.7.0-SNAPSHOT</version>
<packaging>bundle</packaging>
- <name>sdnr-wt-odlux-app-performanceHistoryApp</name>
+
+ <name>ccsdk-features :: ${project.artifactId}</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>
@@ -37,8 +40,21 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<sourceDirectory>src2/main/java</sourceDirectory>
+ <resources>
+ <resource>
+ <directory>dist</directory>
+ <targetPath>odlux</targetPath>
+ </resource>
+ <resource>
+ <directory>src2/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>src2/test/resources</directory>
+ </resource>
+ </resources>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
@@ -61,10 +77,10 @@
<followSymlinks>false</followSymlinks>
</fileset>
<!-- eclipse bug build bin folder in basedir -->
- <fileset>
- <directory>bin</directory>
- <followSymlinks>false</followSymlinks>
- </fileset>
+ <fileset>
+ <directory>bin</directory>
+ <followSymlinks>false</followSymlinks>
+ </fileset>
</filesets>
</configuration>
</plugin>
@@ -87,7 +103,7 @@
</executions>
</plugin>
<plugin>
- <groupId>de.jacksitlab</groupId>
+ <groupId>de.jacks-it-lab</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.7.1</version>
<executions>
@@ -99,8 +115,8 @@
<!-- optional: default phase is "generate-resources" -->
<phase>initialize</phase>
<configuration>
- <nodeVersion>v8.10.0</nodeVersion>
- <yarnVersion>v1.12.3</yarnVersion>
+ <nodeVersion>v10.16.3</nodeVersion>
+ <yarnVersion>v1.19.0</yarnVersion>
</configuration>
</execution>
<execution>
@@ -130,27 +146,5 @@
</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/deviceListActions.ts
index 97d531608..9637fec81 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/deviceListActions.ts
@@ -19,7 +19,8 @@ import { Action } from '../../../../framework/src/flux/action';
import { Dispatch } from '../../../../framework/src/flux/store';
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
-import { ConnectedNetworkElementIds } from '../models/connectedNetworkElements';
+import { DeviceListType } from '../models/deviceListType';
+import { PerformanceHistoryService } from '../services/performanceHistoryService';
/**
* Represents the base action.
@@ -27,52 +28,44 @@ import { ConnectedNetworkElementIds } from '../models/connectedNetworkElements';
export class BaseAction extends Action { }
/**
- * Represents an action causing the store to load all connected network element Ids.
+ * Represents an action causing the store to load all devices.
*/
-export class LoadAllConnectedNetworkElementsAction extends BaseAction { }
+export class LoadAllDeviceListAction extends BaseAction { }
/**
- * Represents an action causing the store to update all connected network element Ids.
+ * Represents an action causing the store to update all devices.
*/
-export class AllConnectedNetworkElementsLoadedAction extends BaseAction {
+export class AllDeviceListLoadedAction extends BaseAction {
/**
* Initialize this instance.
*
- * @param connectedNetworkElements The connected network element Ids which are loaded from the state of connectApp.
+ * @param deviceList All the distinct devices from the performance history database.
*/
- constructor(public connectedNetworkElementIds: ConnectedNetworkElementIds[] | null, public error?: string) {
+ constructor(public deviceList: DeviceListType[] | null, public error?: string) {
super();
}
}
/**
- * Represents an asynchronous thunk action to load all connected network element Ids.
+ * Represents an asynchronous thunk action to load all devices.
*/
-export const loadAllConnectedNetworkElementsAsync = (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
- window.setTimeout(() => {
- dispatch(new LoadAllConnectedNetworkElementsAction());
- const connectedNetworkElementsIds = getState().connect.mountedNetworkElements;
- let mountIdList: ConnectedNetworkElementIds[] = [];
- connectedNetworkElementsIds.elements.forEach(element => {
- const connectedNetworkElement = {
- mountId: element.mountId
- }
- mountIdList.push(connectedNetworkElement);
- });
- mountIdList.sort((a, b) => {
- if (a.mountId < b.mountId) return -1;
- if (a.mountId > b.mountId) return 1;
- return 0;
- });
- dispatch(new AllConnectedNetworkElementsLoadedAction(mountIdList));
- }, 500);
+export const loadAllDeviceListAsync = async (dispatch: Dispatch) => {
+ dispatch(new LoadAllDeviceListAction());
+ const deviceListFromPerfHistory: DeviceListType[] = await PerformanceHistoryService.getDeviceListfromPerf15minHistory().then(ne => (ne)) || [];
+ const deviceListFromPerf24History: DeviceListType[] = await PerformanceHistoryService.getDeviceListfromPerf24hHistory().then(ne => (ne)) || [];
+ deviceListFromPerf24History.forEach(deviceList24h => {
+ if (deviceListFromPerfHistory.findIndex(deviceList15min => deviceList15min.nodeId === deviceList24h.nodeId) < 0) {
+ deviceListFromPerfHistory.push(deviceList24h);
+ };
+ });
+ return deviceListFromPerfHistory && dispatch(new AllDeviceListLoadedAction(deviceListFromPerfHistory));
};
/**
* Represents an action causing the store to update mountId.
*/
export class UpdateMountId extends BaseAction {
- constructor (public nodeId?: string) {
+ constructor(public nodeId?: string) {
super();
}
}
@@ -80,6 +73,6 @@ export class UpdateMountId extends BaseAction {
/**
* Represents an asynchronous thunk action to load updated mountId.
*/
-export const updateMountIdActionCreator = (nodeId: string ) => async (dispatch: Dispatch) => {
+export const updateMountIdActionCreator = (nodeId: string) => async (dispatch: Dispatch) => {
return dispatch(new UpdateMountId(nodeId));
}
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx
index 2564d574a..09d3accd4 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx
@@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '.
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType';
+import { AdaptiveModulationDataType, AdaptiveModulationDatabaseDataType } from '../models/adaptiveModulationDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createAdaptiveModulationProperties, createAdaptiveModulationActions } from '../handlers/adaptiveModulationHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -55,9 +55,9 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp
const adaptiveModulationColumns: ColumnModel<AdaptiveModulationDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -416,10 +416,46 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp
];
_rows.forEach(row => {
+ row.time2StatesS = row.performanceData.time2StatesS
+ row.time2States = row.performanceData.time2States;
+ row.time2StatesL = row.performanceData.time2StatesL;
+ row.time4StatesS = row.performanceData.time4StatesS
+ row.time4States = row.performanceData.time4States;
+ row.time4StatesL = row.performanceData.time4StatesL;
+ row.time16StatesS = row.performanceData.time16StatesS;
+ row.time16States = row.performanceData.time16States;
+ row.time16StatesL = row.performanceData.time16StatesL;
+ row.time32StatesS = row.performanceData.time32StatesS;
+ row.time32States = row.performanceData.time32States;
+ row.time32StatesL = row.performanceData.time32StatesL;
+ row.time64StatesS = row.performanceData.time64StatesS;
+ row.time64States = row.performanceData.time64States;
+ row.time64StatesL = row.performanceData.time64StatesL;
+ row.time128StatesS = row.performanceData.time128StatesS;
+ row.time128States = row.performanceData.time128States;
+ row.time128StatesL = row.performanceData.time128StatesL;
+ row.time256StatesS = row.performanceData.time256StatesS;
+ row.time256States = row.performanceData.time256States;
+ row.time256StatesL = row.performanceData.time256StatesL;
+ row.time512StatesS = row.performanceData.time512StatesS;
+ row.time512States = row.performanceData.time512States;
+ row.time512StatesL = row.performanceData.time512StatesL;
+ row.time1024StatesS = row.performanceData.time1024StatesS;
+ row.time1024States = row.performanceData.time1024States;
+ row.time1024StatesL = row.performanceData.time1024StatesL;
+ row.time2048StatesS = row.performanceData.time2048StatesS;
+ row.time2048States = row.performanceData.time2048States;
+ row.time2048StatesL = row.performanceData.time2048StatesL;
+ row.time4096StatesS = row.performanceData.time4096StatesS;
+ row.time4096States = row.performanceData.time4096States;
+ row.time4096StatesL = row.performanceData.time4096StatesL;
+ row.time8192StatesS = row.performanceData.time8192StatesS;
+ row.time8192States = row.performanceData.time8192States;
+ row.time8192StatesL = row.performanceData.time8192StatesL;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof AdaptiveModulationDataType] as string,
- y: row[ds.name as keyof AdaptiveModulationDataType] as string
+ x: row["timeStamp" as keyof AdaptiveModulationDataType] as string,
+ y: row.performanceData[ds.name as keyof AdaptiveModulationDatabaseDataType] as string
});
});
});
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx
index 8718171f7..267e00bbe 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx
@@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, MaterialTableCtorType, ColumnModel } from '.
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { CrossPolarDiscriminationDataType } from '../models/crossPolarDiscriminationDataType';
+import { CrossPolarDiscriminationDataType, CrossPolarDiscriminationDatabaseDataType } from '../models/crossPolarDiscriminationDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createCrossPolarDiscriminationProperties, createCrossPolarDiscriminationActions } from '../handlers/crossPolarDiscriminationHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -56,9 +56,9 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri
const cpdColumns: ColumnModel<CrossPolarDiscriminationDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -114,10 +114,13 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri
}];
_rows.forEach(row => {
+ row.xpdMin = row.performanceData.xpdMin;
+ row.xpdAvg = row.performanceData.xpdAvg;
+ row.xpdMax = row.performanceData.xpdMax;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof CrossPolarDiscriminationDataType] as string,
- y: row[ds.name as keyof CrossPolarDiscriminationDataType] as string
+ x: row["timeStamp" as keyof CrossPolarDiscriminationDataType] as string,
+ y: row.performanceData[ds.name as keyof CrossPolarDiscriminationDatabaseDataType] as string
});
});
});
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx
index fc44879dc..c58c49c9e 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx
@@ -22,7 +22,7 @@ import { withRouter, RouteComponentProps } from 'react-router-dom';
import { MaterialTable, ColumnType, ColumnModel, 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 { PerformanceDataType, PerformanceDatabaseDataType } from '../models/performanceDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createPerformanceDataProperties, createPerformanceDataActions } from '../handlers/performanceDataHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -54,9 +54,9 @@ class PerformanceDataComponent extends React.Component<PerformanceDataComponentP
const performanceColumns: ColumnModel<PerformanceDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -112,13 +112,17 @@ class PerformanceDataComponent extends React.Component<PerformanceDataComponentP
}];
_rows.forEach(row => {
+ row.es = row.performanceData.es;
+ row.ses = row.performanceData.ses;
+ row.unavailability = row.performanceData.unavailability;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof PerformanceDataType] as string,
- y: row[ds.name as keyof PerformanceDataType] as string
+ x: row["timeStamp" as keyof PerformanceDataType] as string,
+ y: row.performanceData[ds.name as keyof PerformanceDatabaseDataType] as string
});
});
});
+
return {
datasets: datasets
};
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx
index 9992f5bd8..55bc39860 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx
@@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '.
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { ReceiveLevelDataType } from '../models/receiveLevelDataType';
+import { ReceiveLevelDataType,ReceiveLevelDatabaseDataType } from '../models/receiveLevelDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createReceiveLevelProperties, createReceiveLevelActions } from '../handlers/receiveLevelHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -55,9 +55,9 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{
const receiveLevelColumns: ColumnModel<ReceiveLevelDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -114,10 +114,13 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{
}];
_rows.forEach(row => {
+ row.rxLevelMin = row.performanceData.rxLevelMin;
+ row.rxLevelAvg = row.performanceData.rxLevelAvg;
+ row.rxLevelMax = row.performanceData.rxLevelMax;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof ReceiveLevelDataType] as string,
- y: row[ds.name as keyof ReceiveLevelDataType] as string
+ x: row["timeStamp" as keyof ReceiveLevelDataType] as string,
+ y: row.performanceData[ds.name as keyof ReceiveLevelDatabaseDataType] as string
});
});
});
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx
index 98017ae2f..42aa007a9 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx
@@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '.
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { SignalToInterferenceDataType } from '../models/signalToInteferenceDataType';
+import { SignalToInterferenceDataType, SignalToInterferenceDatabaseDataType } from '../models/signalToInteferenceDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createSignalToInterferenceProperties, createSignalToInterferenceActions } from '../handlers/signalToInterferenceHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -56,9 +56,9 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference
const sinrColumns: ColumnModel<SignalToInterferenceDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -116,10 +116,13 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference
}];
_rows.forEach(row => {
+ row.snirMin = row.performanceData.snirMin;
+ row.snirAvg = row.performanceData.snirAvg;
+ row.snirMax = row.performanceData.snirMax;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof SignalToInterferenceDataType] as string,
- y: row[ds.name as keyof SignalToInterferenceDataType] as string
+ x: row["timeStamp" as keyof SignalToInterferenceDataType] as string,
+ y: row.performanceData[ds.name as keyof SignalToInterferenceDatabaseDataType] as string
});
});
});
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx
index f1e62cf33..256911c2d 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx
@@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '.
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { TemperatureDataType } from '../models/temperatureDataType';
+import { TemperatureDataType, TemperatureDatabaseDataType } from '../models/temperatureDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createTemperatureProperties, createTemperatureActions } from '../handlers/temperatureHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -55,9 +55,9 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{
const temperatureColumns: ColumnModel<TemperatureDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -114,10 +114,13 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{
}];
_rows.forEach(row => {
+ row.rfTempMin = row.performanceData.rfTempMin;
+ row.rfTempAvg = row.performanceData.rfTempAvg;
+ row.rfTempMax = row.performanceData.rfTempMax;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof TemperatureDataType] as string,
- y: row[ds.name as keyof TemperatureDataType] as string
+ x: row["timeStamp" as keyof TemperatureDataType] as string,
+ y: row.performanceData[ds.name as keyof TemperatureDatabaseDataType] as string
});
});
});
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx
index 8ec4561a4..635cbf103 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx
@@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '.
import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
-import { TransmissionPowerDataType } from '../models/transmissionPowerDataType';
+import { TransmissionPowerDataType, TransmissionPowerDatabaseDataType } from '../models/transmissionPowerDataType';
import { IDataSet, IDataSetsObject } from '../models/chartTypes';
import { createTransmissionPowerProperties, createTransmissionPowerActions } from '../handlers/transmissionPowerHandler';
import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils';
@@ -56,9 +56,9 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon
const transmissionColumns: ColumnModel<TransmissionPowerDataType>[] = [
{ property: "radioSignalId", title: "Radio signal", type: ColumnType.text },
{ property: "scannerId", title: "Scanner ID", type: ColumnType.text },
- { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true },
+ { property: "timeStamp", title: "End Time", type: ColumnType.text },
{
- property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
+ property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => {
const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString();
return <div >{suspectIntervalFlag} </div>
}
@@ -116,10 +116,13 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon
}];
_rows.forEach(row => {
+ row.txLevelMin = row.performanceData.txLevelMin;
+ row.txLevelAvg = row.performanceData.txLevelAvg;
+ row.txLevelMax = row.performanceData.txLevelMax;
datasets.forEach(ds => {
ds.data.push({
- x: row["utcTimeStamp" as keyof TransmissionPowerDataType] as string,
- y: row[ds.name as keyof TransmissionPowerDataType] as string
+ x: row["timeStamp" as keyof TransmissionPowerDataType] as string,
+ y: row.performanceData[ds.name as keyof TransmissionPowerDatabaseDataType] as string
});
});
});
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts
index ba765c8cb..3548bf4dc 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts
@@ -18,7 +18,7 @@
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { AdaptiveModulationDataType, AdaptiveModulationResult } from '../models/adaptiveModulationDataType';
+import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType';
import { getFilter } from '../utils/tableUtils';
export interface IAdaptiveModulationState extends IExternalTableState<AdaptiveModulationDataType> { }
@@ -26,66 +26,7 @@ export interface IAdaptiveModulationState extends IExternalTableState<AdaptiveMo
/**
* Creates elastic search material data fetch handler for Adaptive modulation from historicalperformance database.
*/
-const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationResult, AdaptiveModulationDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- time2StatesS: hit._source["performance-data"]["time2-states-s"],
- time2States: hit._source["performance-data"]["time2-states"],
- time2StatesL: hit._source["performance-data"]["time2-states-l"],
- time4StatesS: hit._source["performance-data"]["time4-states-s"],
- time4States: hit._source["performance-data"]["time4-states"],
- time4StatesL: hit._source["performance-data"]["time4-states-l"],
- time16StatesS: hit._source["performance-data"]["time16-states-s"],
- time16States: hit._source["performance-data"]["time16-states"],
- time16StatesL: hit._source["performance-data"]["time16-states-l"],
- time32StatesS: hit._source["performance-data"]["time32-states-s"],
- time32States: hit._source["performance-data"]["time32-states"],
- time32StatesL: hit._source["performance-data"]["time32-states-l"],
- time64StatesS: hit._source["performance-data"]["time64-states-s"],
- time64States: hit._source["performance-data"]["time64-states"],
- time64StatesL: hit._source["performance-data"]["time64-states-l"],
- time128StatesS: hit._source["performance-data"]["time128-states-s"],
- time128States: hit._source["performance-data"]["time128-states"],
- time128StatesL: hit._source["performance-data"]["time128-states-l"],
- time256StatesS: hit._source["performance-data"]["time256-states-s"],
- time256States: hit._source["performance-data"]["time256-states"],
- time256StatesL: hit._source["performance-data"]["time256-states-l"],
- time512StatesS: hit._source["performance-data"]["time512-states-s"],
- time512States: hit._source["performance-data"]["time512-states"],
- time512StatesL: hit._source["performance-data"]["time512-states-l"],
- time1024StatesS: hit._source["performance-data"]["time1024-states-s"],
- time1024States: hit._source["performance-data"]["time1024-states"],
- time1024StatesL: hit._source["performance-data"]["time1024-states-l"],
- time2048StatesS: hit._source["performance-data"]["time2048-states-s"],
- time2048States: hit._source["performance-data"]["time2048-states"],
- time2048StatesL: hit._source["performance-data"]["time2048-states-l"],
- time4096StatesS: hit._source["performance-data"]["time4096-states-s"],
- time4096States: hit._source["performance-data"]["time4096-states"],
- time4096StatesL: hit._source["performance-data"]["time4096-states-l"],
- time8192StatesS: hit._source["performance-data"]["time8192-states-s"],
- time8192States: hit._source["performance-data"]["time8192-states"],
- time8192StatesL: hit._source["performance-data"]["time8192-states-l"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
-
+const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationDataType>(getFilter, null)
export const {
actionHandler: adaptiveModulationActionHandler,
createActions: createAdaptiveModulationActions,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts
index 41aceca9f..b3b284b42 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts
@@ -29,12 +29,12 @@ export interface IAvailableLtpsState {
busy: boolean;
}
-const connectedNetworkElementsStateInit: IAvailableLtpsState = {
+const ltpListStateInit: IAvailableLtpsState = {
distinctLtps: [],
busy: false
};
-export const availableLtpsActionHandler: IActionHandler<IAvailableLtpsState> = (state = connectedNetworkElementsStateInit, action) => {
+export const availableLtpsActionHandler: IActionHandler<IAvailableLtpsState> = (state = ltpListStateInit, action) => {
if (action instanceof LoadAllAvailableLtpsAction) {
state = {
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts
index 074c97d91..1e6c6d0a6 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts
@@ -18,7 +18,7 @@
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { CrossPolarDiscriminationDataType, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType';
+import { CrossPolarDiscriminationDataType } from '../models/crossPolarDiscriminationDataType';
import { getFilter } from '../utils/tableUtils';
export interface ICrossPolarDiscriminationState extends IExternalTableState<CrossPolarDiscriminationDataType> { }
@@ -26,32 +26,7 @@ export interface ICrossPolarDiscriminationState extends IExternalTableState<Cros
/**
* Creates elastic search material data fetch handler for CPD from historicalperformance database.
*/
-const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationResult, CrossPolarDiscriminationDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- xpdMin: hit._source["performance-data"]["xpd-min"],
- xpdAvg: hit._source["performance-data"]["xpd-avg"],
- xpdMax: hit._source["performance-data"]["xpd-max"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
+const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationDataType>(getFilter, null)
export const {
actionHandler: crossPolarDiscriminationActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/deviceListActionHandler.ts
index ee14063c2..b3c0db446 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/deviceListActionHandler.ts
@@ -17,32 +17,32 @@
*/
import { IActionHandler } from '../../../../framework/src/flux/action';
-import { AllConnectedNetworkElementsLoadedAction, LoadAllConnectedNetworkElementsAction } from '../actions/connectedNetworkElementsActions';
-import { ConnectedNetworkElementIds } from '../models/connectedNetworkElements';
+import { AllDeviceListLoadedAction, LoadAllDeviceListAction } from '../actions/deviceListActions';
+import { DeviceListType } from '../models/deviceListType';
-export interface IConnectedNetworkElementsState {
- connectedNetworkElementIds: ConnectedNetworkElementIds[];
+export interface IDeviceListState {
+ deviceList: DeviceListType[];
busy: boolean;
}
-const connectedNetworkElementsStateInit: IConnectedNetworkElementsState = {
- connectedNetworkElementIds: [],
+const deviceListStateInit: IDeviceListState = {
+ deviceList: [],
busy: false
};
-export const connectedNetworkElementsActionHandler: IActionHandler<IConnectedNetworkElementsState> = (state = connectedNetworkElementsStateInit, action) => {
- if (action instanceof LoadAllConnectedNetworkElementsAction) {
+export const deviceListActionHandler: IActionHandler<IDeviceListState> = (state = deviceListStateInit, action) => {
+ if (action instanceof LoadAllDeviceListAction) {
state = {
...state,
busy: true
};
- } else if (action instanceof AllConnectedNetworkElementsLoadedAction) {
- if (!action.error && action.connectedNetworkElementIds) {
+ } else if (action instanceof AllDeviceListLoadedAction) {
+ if (!action.error && action.deviceList) {
state = {
...state,
- connectedNetworkElementIds: action.connectedNetworkElementIds,
+ deviceList: action.deviceList,
busy: false
};
} else {
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts
index 51b537fea..131566367 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts
@@ -20,7 +20,7 @@ import * as moment from 'moment';
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { PerformanceResult, PerformanceDataType } from '../models/performanceDataType';
+import { PerformanceDataType } from '../models/performanceDataType';
import { getFilter } from '../utils/tableUtils';
export interface IPerformanceDataState extends IExternalTableState<PerformanceDataType> { }
@@ -28,32 +28,7 @@ export interface IPerformanceDataState extends IExternalTableState<PerformanceDa
/**
* Creates elastic search material data fetch handler for performance data from historicalperformance15min database.
*/
-const performanceDataSearchHandler = createSearchDataHandler<PerformanceResult, PerformanceDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- es: hit._source["performance-data"]["es"],
- ses: hit._source["performance-data"]["ses"],
- unavailability: hit._source["performance-data"]["unavailability"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
+const performanceDataSearchHandler = createSearchDataHandler<PerformanceDataType>(getFilter, null);
export const {
actionHandler: performanceDataActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts
index 85ff01634..c33f10a7e 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts
@@ -32,15 +32,15 @@ import { ITemperatureState, temperatureActionHandler } from './temperatureHandle
import { ISignalToInterferenceState, signalToInterferenceActionHandler } from './signalToInterferenceHandler';
import { ICrossPolarDiscriminationState, crossPolarDiscriminationActionHandler } from './crossPolarDiscriminationHandler';
import { SetPanelAction } from '../actions/panelChangeActions';
-import { IConnectedNetworkElementsState, connectedNetworkElementsActionHandler } from './connectedNetworkElementsActionHandler';
+import { IDeviceListState, deviceListActionHandler } from './deviceListActionHandler';
import { IAvailableLtpsState, availableLtpsActionHandler } from './availableLtpsActionHandler';
import { PmDataInterval } from '../models/performanceDataType';
import { TimeChangeAction } from '../actions/timeChangeAction';
-import { UpdateMountId } from '../actions/connectedNetworkElementsActions';
+import { UpdateMountId } from '../actions/deviceListActions';
export interface IPerformanceHistoryStoreState {
- mountId: string;
- networkElements: IConnectedNetworkElementsState;
+ nodeId: string;
+ networkElements: IDeviceListState;
ltps: IAvailableLtpsState;
performanceData: IPerformanceDataState;
receiveLevel: IReceiveLevelState;
@@ -86,8 +86,8 @@ declare module '../../../../framework/src/store/applicationStore' {
}
const actionHandlers = {
- mountId: mountIdHandler,
- networkElements: connectedNetworkElementsActionHandler,
+ nodeId: mountIdHandler,
+ networkElements: deviceListActionHandler,
ltps: availableLtpsActionHandler,
performanceData: performanceDataActionHandler,
receiveLevel: receiveLevelActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts
index adb70b120..91595cc58 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts
@@ -18,7 +18,7 @@
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { ReceiveLevelDataType, ReceiveLevelResult } from '../models/receiveLevelDataType';
+import { ReceiveLevelDataType } from '../models/receiveLevelDataType';
import { getFilter } from '../utils/tableUtils';
export interface IReceiveLevelState extends IExternalTableState<ReceiveLevelDataType> { }
@@ -26,32 +26,7 @@ export interface IReceiveLevelState extends IExternalTableState<ReceiveLevelData
/**
* Creates elastic search material data fetch handler for receiveLevel from historicalperformance database.
*/
-const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelResult, ReceiveLevelDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- rxLevelMin: hit._source["performance-data"]["rx-level-min"],
- rxLevelAvg: hit._source["performance-data"]["rx-level-avg"],
- rxLevelMax: hit._source["performance-data"]["rx-level-max"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
+const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelDataType>(getFilter, null);
export const {
actionHandler: receiveLevelActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts
index aa75ba226..e0f804086 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts
@@ -18,7 +18,7 @@
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { SignalToInterferenceDataType, SignalToInterferenceResult } from '../models/signalToInteferenceDataType';
+import { SignalToInterferenceDataType } from '../models/signalToInteferenceDataType';
import { getFilter } from '../utils/tableUtils';
export interface ISignalToInterferenceState extends IExternalTableState<SignalToInterferenceDataType> { }
@@ -26,32 +26,7 @@ export interface ISignalToInterferenceState extends IExternalTableState<SignalTo
/**
* Creates elastic search material data fetch handler for SINR from historicalperformance database.
*/
-const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceResult, SignalToInterferenceDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- snirMin: hit._source["performance-data"]["snir-min"],
- snirAvg: hit._source["performance-data"]["snir-avg"],
- snirMax: hit._source["performance-data"]["snir-max"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
+const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceDataType>(getFilter, null);
export const {
actionHandler: signalToInterferenceActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts
index 8a9ae7025..0a6c73a1c 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts
@@ -18,7 +18,7 @@
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { TemperatureDataType, TemperatureResult } from '../models/temperatureDataType';
+import { TemperatureDataType } from '../models/temperatureDataType';
import { getFilter } from '../utils/tableUtils';
export interface ITemperatureState extends IExternalTableState<TemperatureDataType> { }
@@ -26,32 +26,7 @@ export interface ITemperatureState extends IExternalTableState<TemperatureDataTy
/**
* Creates elastic search material data fetch handler for Temperature from historicalperformance database.
*/
-const temperatureSearchHandler = createSearchDataHandler<TemperatureResult, TemperatureDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- rfTempMin: hit._source["performance-data"]["rf-temp-min"],
- rfTempAvg: hit._source["performance-data"]["rf-temp-avg"],
- rfTempMax: hit._source["performance-data"]["rf-temp-max"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
+const temperatureSearchHandler = createSearchDataHandler< TemperatureDataType>(getFilter, null);
export const {
actionHandler: temperatureActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts
index c2ad82183..32bef817d 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts
@@ -18,7 +18,7 @@
import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities';
import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch';
-import { TransmissionPowerDataType, TransmissionPowerResult } from '../models/transmissionPowerDataType';
+import { TransmissionPowerDataType } from '../models/transmissionPowerDataType';
import { getFilter } from '../utils/tableUtils';
export interface ITransmissionPowerState extends IExternalTableState<TransmissionPowerDataType> { }
@@ -26,32 +26,7 @@ export interface ITransmissionPowerState extends IExternalTableState<Transmissio
/**
* Creates elastic search material data fetch handler for Transmission power from historicalperformance database.
*/
-const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerResult, TransmissionPowerDataType>(
- getFilter,
- null,
- (hit) => ({
- _id: hit._id,
- radioSignalId: hit._source["radio-signal-id"],
- scannerId: hit._source["scanner-id"],
- utcTimeStamp: hit._source["time-stamp"],
- suspectIntervalFlag: hit._source["suspect-interval-flag"],
- txLevelMin: hit._source["performance-data"]["tx-level-min"],
- txLevelAvg: hit._source["performance-data"]["tx-level-avg"],
- txLevelMax: hit._source["performance-data"]["tx-level-max"],
- }),
- (pmDataEntry: string) => {
- switch (pmDataEntry) {
- case "radioSignalId":
- return "radio-signal-id";
- case "scannerId":
- return "scanner-id";
- case "utcTimeStamp":
- return "time-stamp"
- case "suspectIntervalFlag":
- return "suspect-interval-flag";
- }
- return pmDataEntry
- });
+const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerDataType>(getFilter, null)
export const {
actionHandler: transmissionPowerActionHandler,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts
index 9c1d28986..adb0bcd6f 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts
@@ -4,13 +4,13 @@
* =================================================================================================
* 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
+ * 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
+ * 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==========================================================================
@@ -21,53 +21,43 @@ export { HitEntry, Result } from '../../../../framework/src/models';
* Represents Adaptive Modulation data fields of the performance history table.
*/
export type AdaptiveModulationDatabaseDataType = {
- "time2-states-s": number;
- "time2-states": number;
- "time2-states-l": number;
- "time4-states-s": number;
- "time4-states": number;
- "time4-states-l": number;
- "time16-states-s": number;
- "time16-states": number;
- "time16-states-l": number;
- "time32-states-s": number;
- "time32-states": number;
- "time32-states-l": number;
- "time64-states-s": number;
- "time64-states": number;
- "time64-states-l": number;
- "time128-states-s": number;
- "time128-states": number;
- "time128-states-l": number;
- "time256-states-s": number;
- "time256-states": number;
- "time256-states-l": number;
- "time512-states-s": number;
- "time512-states": number;
- "time512-states-l": number;
- "time1024-states-s": number;
- "time1024-states": number;
- "time1024-states-l": number;
- "time2048-states-s": number;
- "time2048-states": number;
- "time2048-states-l": number;
- "time4096-states-s": number;
- "time4096-states": number;
- "time4096-states-l": number;
- "time8192-states-s": number;
- "time8192-states": number;
- "time8192-states-l": number;
-};
-
-/**
- * Represents Result type of database query
- */
-export type AdaptiveModulationResult = {
- "performance-data": AdaptiveModulationDatabaseDataType;
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string ;
+ time2StatesS: number;
+ time2States: number;
+ time2StatesL: number;
+ time4StatesS: number;
+ time4States: number;
+ time4StatesL: number;
+ time16StatesS: number;
+ time16States: number;
+ time16StatesL: number;
+ time32StatesS: number;
+ time32States: number;
+ time32StatesL: number;
+ time64StatesS: number;
+ time64States: number;
+ time64StatesL: number;
+ time128StatesS: number;
+ time128States: number;
+ time128StatesL: number;
+ time256StatesS: number;
+ time256States: number;
+ time256StatesL: number;
+ time512StatesS: number;
+ time512States: number;
+ time512StatesL: number;
+ time1024StatesS: number;
+ time1024States: number;
+ time1024StatesL: number;
+ time2048StatesS: number;
+ time2048States: number;
+ time2048StatesL: number;
+ time4096StatesS: number;
+ time4096States: number;
+ time4096StatesL: number;
+ time8192StatesS: number;
+ time8192States: number;
+ time8192StatesL: number;
};
@@ -75,44 +65,45 @@ export type AdaptiveModulationResult = {
* Internally used type to provide table and chart data
*/
export type AdaptiveModulationDataType = {
+ performanceData: AdaptiveModulationDatabaseDataType;
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
- "time2StatesS": number;
- "time2States": number;
- "time2StatesL": number;
- "time4StatesS": number;
- "time4States": number;
- "time4StatesL": number;
- "time16StatesS": number;
- "time16States": number;
- "time16StatesL": number;
- "time32StatesS": number;
- "time32States": number;
- "time32StatesL": number;
- "time64StatesS": number;
- "time64States": number;
- "time64StatesL": number;
- "time128StatesS": number;
- "time128States": number;
- "time128StatesL": number;
- "time256StatesS": number;
- "time256States": number;
- "time256StatesL": number;
- "time512StatesS": number;
- "time512States": number;
- "time512StatesL": number;
- "time1024StatesS": number;
- "time1024States": number;
- "time1024StatesL": number;
- "time2048StatesS": number;
- "time2048States": number;
- "time2048StatesL": number;
- "time4096StatesS": number;
- "time4096States": number;
- "time4096StatesL": number;
- "time8192StatesS": number;
- "time8192States": number;
- "time8192StatesL": number;
+ time2StatesS: number;
+ time2States: number;
+ time2StatesL: number;
+ time4StatesS: number;
+ time4States: number;
+ time4StatesL: number;
+ time16StatesS: number;
+ time16States: number;
+ time16StatesL: number;
+ time32StatesS: number;
+ time32States: number;
+ time32StatesL: number;
+ time64StatesS: number;
+ time64States: number;
+ time64StatesL: number;
+ time128StatesS: number;
+ time128States: number;
+ time128StatesL: number;
+ time256StatesS: number;
+ time256States: number;
+ time256StatesL: number;
+ time512StatesS: number;
+ time512States: number;
+ time512StatesL: number;
+ time1024StatesS: number;
+ time1024States: number;
+ time1024StatesL: number;
+ time2048StatesS: number;
+ time2048States: number;
+ time2048StatesL: number;
+ time4096StatesS: number;
+ time4096States: number;
+ time4096StatesL: number;
+ time8192StatesS: number;
+ time8192States: number;
+ time8192StatesL: number;
} & { _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
index fcf7ad5f6..dc6c7bc16 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts
@@ -16,16 +16,6 @@
* ============LICENSE_END==========================================================================
*/
export type LtpIds = {
- key: string
+ key : string
}
- export type Bucket<T>={
- buckets: T[]
- }
-
-/**
- * Represents distinct available ltps using elasticsearch aggregations structure.
- */
- export type DistinctLtp = {
- "uuid-interface": Bucket<LtpIds>
- }
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts
index 487cf029d..53039faa2 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts
@@ -45,5 +45,5 @@ export interface IDataSetsObject {
* Interface used by chart for sorting on time-stamp
*/
export interface ITimeStamp {
- "utcTimeStamp": string;
+ timeStamp: string;
}
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts
deleted file mode 100644
index b7277f777..000000000
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Represents connected network elements.
- */
-
-export type ConnectedNetworkElementIds = {
- mountId: string;
- }
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts
index ef4415393..8adb16f45 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts
@@ -22,29 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models';
* Represents Receive level data fields of the performance history table.
*/
export type CrossPolarDiscriminationDatabaseDataType = {
- "xpd-min": number;
- "xpd-avg": number;
- "xpd-max": number;
-};
-
-/**
- * Represents Result type of database query
- */
-export type CrossPolarDiscriminationResult = {
- "performance-data": CrossPolarDiscriminationDatabaseDataType
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string;
+ xpdMin: number;
+ xpdAvg: number;
+ xpdMax: number;
};
/**
* Internally used type to provide table and chart data
*/
export type CrossPolarDiscriminationDataType = {
+ performanceData: CrossPolarDiscriminationDatabaseDataType
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
xpdMin: number;
xpdAvg: number;
diff --git a/sdnr/wt/odlux/apps/connectApp/src/models/requiredNetworkElements.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/deviceListType.ts
index 42d22afc0..db8f2d71e 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/models/requiredNetworkElements.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/deviceListType.ts
@@ -15,13 +15,11 @@
* the License.
* ============LICENSE_END==========================================================================
*/
-import { NetworkElementBaseType } from "./networkElementBase";
/**
-* Represents data of Required Network Elements.
-*/
-export type RequiredNetworkElementType = NetworkElementBaseType & {
- username?: string;
- password?: string;
-}
+ * Represents all the distinct devices from the performance history data.
+ */
+export type DeviceListType = {
+ nodeId: string;
+}
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts
index 1f05b47cc..5889a64c8 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts
@@ -1,4 +1,22 @@
/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * 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==========================================================================
+ */
+
+/**
* 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
index 6af29c4a8..30f97fb54 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts
@@ -23,30 +23,21 @@ import { Moment } from "moment";
* Represents performance data fields of the performance history table as used in the database
*/
export type PerformanceDatabaseDataType = {
- "es": number;
- "ses": number;
- "unavailability": number;
-};
-
-
-/**
- * Represents Result type of database query
- */
-export type PerformanceResult = {
- "performance-data": PerformanceDatabaseDataType;
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string;
+ es: number;
+ ses: number;
+ unavailability: number;
};
/**
* Internally used type to provide table and chart data
*/
export type PerformanceDataType = {
+
+ performanceData: PerformanceDatabaseDataType;
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
es: number;
ses: number;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts
index 836bf58d9..2748a3d5d 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts
@@ -21,29 +21,20 @@ export { HitEntry, Result } from '../../../../framework/src/models';
* Represents Receive level data fields of the performance history table.
*/
export type ReceiveLevelDatabaseDataType = {
- "rx-level-min": number;
- "rx-level-avg": number;
- "rx-level-max": number;
-};
-
-/**
- * Represents Result type of database query
- */
-export type ReceiveLevelResult = {
- "performance-data": ReceiveLevelDatabaseDataType
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string;
+ rxLevelMin: number;
+ rxLevelAvg: number;
+ rxLevelMax: number;
};
/**
* Internally used type to provide table and chart data
*/
export type ReceiveLevelDataType = {
+ performanceData: ReceiveLevelDatabaseDataType;
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
rxLevelMin: number;
rxLevelAvg: number;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts
index deb1d8f18..5c675feb8 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts
@@ -22,30 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models';
* Represents Receive level data fields of the performance history table.
*/
export type SignalToInterferenceDatabaseDataType = {
- "snir-min": number;
- "snir-avg": number;
- "snir-max": number;
-};
-
-/**
- * Represents Result type of database query
- */
-export type SignalToInterferenceResult = {
- "performance-data": SignalToInterferenceDatabaseDataType
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string;
+ snirMin: number;
+ snirAvg: number;
+ snirMax: number;
};
-
/**
* Internally used type to provide table and chart data
*/
export type SignalToInterferenceDataType = {
+ performanceData: SignalToInterferenceDatabaseDataType;
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
snirMin: number;
snirAvg: number;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts
index dd3ce5253..3b0cb7683 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts
@@ -22,29 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models';
* Represents Receive level data fields of the performance history table.
*/
export type TemperatureDatabaseDataType = {
- "rf-temp-min": number;
- "rf-temp-avg": number;
- "rf-temp-max": number;
-};
-
-/**
- * Represents Result type of database query
- */
-export type TemperatureResult = {
- "performance-data": TemperatureDatabaseDataType
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string;
+ rfTempMin: number;
+ rfTempAvg: number;
+ rfTempMax: number;
};
/**
* Internally used type to provide table and chart data
*/
export type TemperatureDataType = {
+ performanceData: TemperatureDatabaseDataType
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
rfTempMin: number;
rfTempAvg: number;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetconf.ts
index 6bd89411d..99123f55e 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetconf.ts
@@ -15,15 +15,12 @@
* the License.
* ============LICENSE_END==========================================================================
*/
+
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[];
+ node: TopologyNode[];
}
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts
index 2c31f5378..62c00bfe4 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts
@@ -22,29 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models';
* Represents Receive level data fields of the performance history table.
*/
export type TransmissionPowerDatabaseDataType = {
- "tx-level-min": number;
- "tx-level-avg": number;
- "tx-level-max": number;
-};
-
-/**
- * Represents Result type of database query
- */
-export type TransmissionPowerResult = {
- "performance-data": TransmissionPowerDatabaseDataType
- "radio-signal-id": string;
- "scanner-id": string;
- "suspect-interval-flag": boolean;
- "time-stamp": string;
+ _id: string;
+ txLevelMin: number;
+ txLevelAvg: number;
+ txLevelMax: number;
};
/**
* Internally used type to provide table and chart data
*/
export type TransmissionPowerDataType = {
+ performanceData: TransmissionPowerDatabaseDataType;
radioSignalId: string;
scannerId: string;
- utcTimeStamp: string;
+ timeStamp: string;
suspectIntervalFlag: boolean;
txLevelMin: number;
txLevelAvg: number;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/pluginPerformance.tsx
index a3fa2dbfe..df3ffd90a 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/pluginPerformance.tsx
@@ -29,7 +29,7 @@ import { ApplicationStore } from '../../../framework/src/store/applicationStore'
import connect, { Connect, IDispatcher } from '../../../framework/src/flux/connect';
import { IApplicationStoreState } from "../../../framework/src/store/applicationStore";
-import { updateMountIdActionCreator } from "./actions/connectedNetworkElementsActions";
+import { updateMountIdActionCreator } from "./actions/deviceListActions";
let api: {
readonly applicationStore: ApplicationStore | null;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts
index 0f3c89b83..2b03d1c2e 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts
@@ -18,7 +18,10 @@
import { requestRest } from '../../../../framework/src/services/restService';
import { Result } from '../../../../framework/src/models/elasticSearch';
-import { DistinctLtp, LtpIds } from '../models/availableLtps';
+import { convertPropertyNames, replaceUpperCase } from '../../../../framework/src/utilities/yangHelper';
+import { LtpIds } from '../models/availableLtps';
+import { DeviceListType } from '../models/deviceListType';
+import { Topology, TopologyNode } from '../models/topologyNetconf';
/**
* Represents a web api accessor service for Network elements actions.
@@ -31,33 +34,75 @@ class PerformanceService {
public async getDistinctLtpsFromDatabase(networkElement: string, selectedTimePeriod: string): Promise<LtpIds[] | null> {
let path;
const query = {
- "size": 0,
- "query": {
- "match": {
- "node-name": networkElement
- }
- },
- "aggs": {
- "uuid-interface": {
- "terms": {
- "field": "uuid-interface"
- }
- }
+ "filter": [{
+ "property": "node-name",
+ "filtervalue": networkElement
+ }],
+ "sortorder": [],
+ "pagination": {
+ "size": 20,
+ "page": 1
}
- };
+ }
+
if (selectedTimePeriod === "15min") {
- path = 'database/sdnperformance/historicalperformance15min/_search';
+ path = '/restconf/operations/data-provider:read-pmdata-15m-ltp-list';
} else {
- path = 'database/sdnperformance/historicalperformance24h/_search';
+ path = '/restconf/operations/data-provider:read-pmdata-24h-ltp-list';
}
- const result = await requestRest<Result<DistinctLtp>>(path, { method: "POST", body: JSON.stringify(query) });
- return result && result.aggregations && result.aggregations["uuid-interface"].buckets.map(ne => ({
- key: ne.key
+ const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) });
+ return result && result.output && result.output.data.map(ne => ({ key: ne })) || null;
+ }
+
+
+
+ /**
+ * Gets all devices from the performanceHistory 15min backend.
+ */
+ public async getDeviceListfromPerf15minHistory(): Promise<(DeviceListType)[] | null> {
+ const path = '/restconf/operations/data-provider:read-pmdata-15m-device-list';
+ const query = {
+ "input": {
+ "filter": [],
+ "sortorder": [],
+ "pagination": {
+ "size": 20,
+ "page": 1
+ }
+ }
+ };
+
+ const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(query) });
+ return result && result.output && result.output.data && result.output.data.map(ne => ({
+ nodeId: ne
+ })) || null;
+ }
+
+ /**
+ * Gets all devices from the performanceHistory 24h backend.
+ */
+ public async getDeviceListfromPerf24hHistory(): Promise<(DeviceListType)[] | null> {
+ const path = '/restconf/operations/data-provider:read-pmdata-24h-device-list';
+ const query = {
+ "input": {
+ "filter": [],
+ "sortorder": [],
+ "pagination": {
+ "size": 20,
+ "page": 1
+ }
+ }
+ };
+
+ const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(query) });
+ return result && result.output && result.output.data && result.output.data.map(ne => ({
+ nodeId: ne
})) || null;
}
}
+
export const PerformanceHistoryService = new PerformanceService();
export default PerformanceHistoryService;
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx
index 52b5ddb58..3240f73f1 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx
@@ -69,7 +69,7 @@ export const lineChart = (chartPagedData: IDataSetsObject) => {
export const sortDataByTimeStamp = <T extends ITimeStamp>(_rows: T[]): T[] => {
return (_rows.sort((a, b) => {
- const result = Date.parse(a["utcTimeStamp"]) - Date.parse(b["utcTimeStamp"]);
+ const result = Date.parse(a["timeStamp"]) - Date.parse(b["timeStamp"]);
return isNaN(result) ? 0 : result;
}));
} \ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts
index 865d89c88..b5a3a3f36 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts
@@ -18,7 +18,7 @@
import { ColumnType, ColumnModel } from '../../../../framework/src/components/material-table';
import { PmDataInterval } from '../models/performanceDataType';
-import { getPmDataInterval } from '../plugin';
+import { getPmDataInterval } from '../pluginPerformance';
export const addColumnLabels = <T>(name: string, title: string, disableFilter = true, disableSorting = true): ColumnModel<T> => {
return { property: name as keyof T, title: title, type: ColumnType.text, disableFilter: disableFilter, disableSorting: disableSorting };
@@ -27,9 +27,9 @@ export const addColumnLabels = <T>(name: string, title: string, disableFilter =
export function getFilter(): string {
switch (getPmDataInterval()) {
case PmDataInterval.pmInterval15Min:
- return "sdnperformance/historicalperformance15min";
+ return "pmdata-15m";
case PmDataInterval.pmInterval24Hours:
- return "sdnperformance/historicalperformance24h";
+ return "pmdata-24h";
default:
throw new Error("Unknown time intervall");
}
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx
index 218250d18..ae22f8041 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx
@@ -25,7 +25,6 @@ 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 { loadAllMountedNetworkElementsAsync } from '../../../connectApp/src/actions/mountedNetworkElementsActions';
import { NavigateToApplication } from '../../../../framework/src/actions/navigationActions';
import { Dispatch } from '../../../../framework/src/flux/store';
@@ -38,7 +37,7 @@ 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 { loadAllDeviceListAsync } from '../actions/deviceListActions';
import { TimeChangeAction } from '../actions/timeChangeAction';
import { loadDistinctLtpsbyNetworkElementAsync } from '../actions/ltpAction';
import { SetPanelAction } from '../actions/panelChangeActions';
@@ -58,7 +57,7 @@ const PerformanceHistoryComponentStyles = (theme: Theme) => createStyles({
flexWrap: "wrap",
},
margin: {
- margin: theme.spacing.unit,
+ margin: theme.spacing(1),
},
display: {
display: "inline-block"
@@ -79,7 +78,7 @@ const mapProps = (state: IApplicationStoreState) => ({
...state.performanceHistory,
activePanel: state.performanceHistory.currentOpenPanel,
availableLtps: state.performanceHistory.ltps.distinctLtps,
- networkElements: state.performanceHistory.networkElements.connectedNetworkElementIds
+ networkElements: state.performanceHistory.networkElements.deviceList,
});
const mapDispatcher = (dispatcher: IDispatcher) => ({
@@ -104,9 +103,8 @@ const mapDispatcher = (dispatcher: IDispatcher) => ({
temperaturePreActions: createTemperaturePreActions(dispatcher.dispatch),
signalToInterferencePreActions: createSignalToInterferencePreActions(dispatcher.dispatch),
crossPolarDiscriminationPreActions: createCrossPolarDiscriminationPreActions(dispatcher.dispatch),
- getConnectedNetworkElementsIds: async () => {
- await dispatcher.dispatch(loadAllMountedNetworkElementsAsync)
- dispatcher.dispatch(loadAllConnectedNetworkElementsAsync);
+ getAllDevicesPMdata: async () => {
+ await dispatcher.dispatch(loadAllDeviceListAsync);
},
getDistinctLtpsIds: (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)),
@@ -117,7 +115,7 @@ const mapDispatcher = (dispatcher: IDispatcher) => ({
});
export type NetworkElementType = {
- mountId: string,
+ nodeId: string,
}
const NetworkElementTable = MaterialTable as MaterialTableCtorType<NetworkElementType>;
@@ -184,62 +182,62 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp
render(): JSX.Element {
const { classes } = this.props;
- const { activePanel, mountId } = this.props;
- if (mountId === "") {
+ const { activePanel, nodeId } = this.props;
+ if (nodeId === "") {
return (
<>
- <h2>Please select the network element !</h2>
- <NetworkElementTable idProperty={"mountId"} rows={ this.props.networkElements } asynchronus
- onHandleClick={(event, rowData) => { this.handleNetworkElementSelect(rowData.mountId) }} columns={
- [{ property: "mountId" }]
+ <NetworkElementTable title={"Please select the network element!"} idProperty={"nodeId"} rows={this.props.networkElements} asynchronus
+ onHandleClick={(event, rowData) => { this.handleNetworkElementSelect(rowData.nodeId) }} columns={
+ [{ property: "nodeId", title: "Node Name" }]
} />
</>
)
}
else {
- this.handleURLChange(mountId);
+ 3
+ this.handleURLChange(nodeId);
return (
<>
- <h2>Selected Network Element: { this.state.selectedNetworkElement } </h2>
- { this.state.showLtps && (
+ <h3>Selected Network Element: {this.state.selectedNetworkElement} </h3>
+ {this.state.showLtps && (
<div>
- <FormControl className={ classes.display }>
+ <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 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 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 && (
+ {this.state.showPanels && (
<div>
- <Panel activePanel={ activePanel } panelId={ "PerformanceData" } onToggle={ this.onTogglePanel } title={ "Performance Data" }>
- <PerformanceData selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"PerformanceData"} onToggle={this.onTogglePanel} title={"Performance Data"}>
+ <PerformanceData selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ "ReceiveLevel" } onToggle={ this.onTogglePanel } title={ "Receive Level" }>
- <ReceiveLevel selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"ReceiveLevel"} onToggle={this.onTogglePanel} title={"Receive Level"}>
+ <ReceiveLevel selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ "TransmissionPower" } onToggle={ this.onTogglePanel } title={ "Transmission Power" }>
- <TransmissionPower selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"TransmissionPower"} onToggle={this.onTogglePanel} title={"Transmission Power"}>
+ <TransmissionPower selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ "AdaptiveModulation" } onToggle={ this.onTogglePanel } title={ "Adaptive Modulation" }>
- <AdaptiveModulation selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"AdaptiveModulation"} onToggle={this.onTogglePanel} title={"Adaptive Modulation"}>
+ <AdaptiveModulation selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ "Temperature" } onToggle={ this.onTogglePanel } title={ "Temperature" }>
- <Temperature selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"Temperature"} onToggle={this.onTogglePanel} title={"Temperature"}>
+ <Temperature selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ "SINR" } onToggle={ this.onTogglePanel } title={ "Signal-to-interference-plus-noise ratio (SINR)" }>
- <SignalToInterference selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"SINR"} onToggle={this.onTogglePanel} title={"Signal-to-interference-plus-noise ratio (SINR)"}>
+ <SignalToInterference selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
- <Panel activePanel={ activePanel } panelId={ "CPD" } onToggle={ this.onTogglePanel } title={ "Cross Polar Discrimination" }>
- <CrossPolarDiscrimination selectedTimePeriod={ this.state.selectedTimePeriod } />
+ <Panel activePanel={activePanel} panelId={"CPD"} onToggle={this.onTogglePanel} title={"Cross Polar Discrimination"}>
+ <CrossPolarDiscrimination selectedTimePeriod={this.state.selectedTimePeriod} />
</Panel>
</div>
)}
@@ -251,7 +249,7 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp
};
public componentDidMount() {
- this.props.getConnectedNetworkElementsIds();
+ this.props.getAllDevicesPMdata();
this.props.enableFilterPerformanceData.onToggleFilter();
this.props.enableFilterReceiveLevel.onToggleFilter();
this.props.enableFilterTransmissionPower.onToggleFilter();
@@ -290,38 +288,38 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp
}
- /**
- * Function which handles network element changes.
- */
- private handleNetworkElementSelect = (selectedNetworkElement: string) => {
-
- this.setState({
- showLtps: true,
- selectedNetworkElement: selectedNetworkElement,
- showNetworkElementsTable: false,
- showPanels: false,
- selectedLtp: "-1"
- });
- this.props.changeNode(selectedNetworkElement);
- this.props.getDistinctLtpsIds(selectedNetworkElement, this.state.selectedTimePeriod, "-1", this.selectFirstLtp);
-}
+ /**
+ * Function which handles network element changes.
+ */
+ private handleNetworkElementSelect = (selectedNetworkElement: string) => {
-private handleURLChange = (selectedNetworkElement: string) => {
- if(selectedNetworkElement !== this.state.selectedNetworkElement) {
this.setState({
showLtps: true,
selectedNetworkElement: selectedNetworkElement,
+ showNetworkElementsTable: false,
showPanels: false,
selectedLtp: "-1"
});
+ this.props.changeNode(selectedNetworkElement);
this.props.getDistinctLtpsIds(selectedNetworkElement, 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 handleURLChange = (selectedNetworkElement: string) => {
+ if (selectedNetworkElement !== this.state.selectedNetworkElement) {
+ this.setState({
+ showLtps: true,
+ selectedNetworkElement: selectedNetworkElement,
+ showPanels: false,
+ selectedLtp: "-1"
+ });
+ this.props.getDistinctLtpsIds(selectedNetworkElement, 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({
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js
index 27a5949ac..9c2414864 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js
@@ -26,7 +26,7 @@ module.exports = (env) => {
context: path.resolve(__dirname, "src"),
entry: {
- performanceHistoryApp: ["./plugin.tsx"]
+ performanceHistoryApp: ["./pluginPerformance.tsx"]
},
devtool: env === "release" ? false : "source-map",
@@ -125,12 +125,16 @@ module.exports = (env) => {
colors: true
},
proxy: {
+ "/oauth2/": {
+ target: "http://10.20.6.29:48181",
+ secure: false
+ },
"/restconf": {
- target: "http://localhost:8181",
+ target: "http://10.20.6.29:48181",
secure: false
},
"/database": {
- target: "http://localhost:8181",
+ target: "http://10.20.6.29:48181",
secure: false
}
}