diff options
Diffstat (limited to 'sdnr/wt/devicemanager-oran/provider/src/main')
27 files changed, 0 insertions, 5743 deletions
diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/DeviceManagerORanImpl.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/DeviceManagerORanImpl.java deleted file mode 100644 index 8d9a215e2..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/DeviceManagerORanImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.factory.FactoryRegistration; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.NetconfNetworkElementService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class DeviceManagerORanImpl implements AutoCloseable { - - private static final Logger LOG = LoggerFactory.getLogger(DeviceManagerORanImpl.class); - private static final String APPLICATION_NAME = "DeviceManagerORan"; - @SuppressWarnings("unused") - private static final String CONFIGURATIONFILE = "etc/devicemanager-oran.properties"; - - - private NetconfNetworkElementService netconfNetworkElementService; - - private HtDatabaseClient htDatabaseClient; - private Boolean devicemanagerInitializationOk = false; - private FactoryRegistration<ORanNetworkElementFactory> resORan; - - // Blueprint begin - public DeviceManagerORanImpl() { - LOG.info("Creating provider for {}", APPLICATION_NAME); - resORan = null; - } - - public void setNetconfNetworkElementService(NetconfNetworkElementService netconfNetworkElementService) { - this.netconfNetworkElementService = netconfNetworkElementService; - } - - public void init() throws Exception { - - LOG.info("Session Initiated start {}", APPLICATION_NAME); - - resORan = netconfNetworkElementService.registerNetworkElementFactory(new ORanNetworkElementFactory()); - - - netconfNetworkElementService.writeToEventLog(APPLICATION_NAME, "startup", "done"); - this.devicemanagerInitializationOk = true; - - LOG.info("Session Initiated end. Initialization done {}", devicemanagerInitializationOk); - } - // Blueprint end - - @Override - public void close() throws Exception { - LOG.info("closing ..."); - close(htDatabaseClient); - close(resORan); - LOG.info("closing done"); - } - - /** - * Used to close all Services, that should support AutoCloseable Pattern - * - * @param toClose - * @throws Exception - */ - private void close(AutoCloseable... toCloseList) { - for (AutoCloseable element : toCloseList) { - if (element != null) { - try { - element.close(); - } catch (Exception e) { - LOG.warn("Fail during close: ", e); - } - } - } - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/NtsNetworkElement.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/NtsNetworkElement.java deleted file mode 100644 index 15f906d6c..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/NtsNetworkElement.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -/** - * - */ -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import java.util.Optional; -import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElementService; -import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementDeviceType; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author herbert - * - */ -public class NtsNetworkElement implements NetworkElement { - - private static final Logger LOG = LoggerFactory.getLogger(NtsNetworkElement.class); - - private final NetconfAccessor netconfAccessor; - - @SuppressWarnings("unused") - private final DataProvider databaseService; - - NtsNetworkElement(NetconfAccessor netconfAccess, DataProvider databaseService) { - LOG.info("Create {}", NtsNetworkElement.class.getSimpleName()); - this.netconfAccessor = netconfAccess; - this.databaseService = databaseService; - } - - @Override - public void deregister() {} - - @Override - public NodeId getNodeId() { - return netconfAccessor.getNodeId(); - } - - @Override - public <L extends NetworkElementService> Optional<L> getService(Class<L> clazz) { - return Optional.empty(); - } - - @Override - public void warmstart() {} - - @Override - public void register() {} - - @Override - public NetworkElementDeviceType getDeviceType() { - return NetworkElementDeviceType.NtsManager; - } - - @Override - public Optional<NetconfAccessor> getAcessor() { - return Optional.of(this.netconfAccessor); - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanChangeNotificationListener.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanChangeNotificationListener.java deleted file mode 100644 index 43bfeedaa..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanChangeNotificationListener.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import java.util.List; -import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider; -import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.IetfNetconfNotificationsListener; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChange; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfConfigChange; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfConfirmedCommit; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfSessionEnd; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfSessionStart; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.netconf.config.change.Edit; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.EventlogBuilder; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Listener for change notifications - */ -public class ORanChangeNotificationListener implements IetfNetconfNotificationsListener { - - private static final Logger log = LoggerFactory.getLogger(ORanChangeNotificationListener.class); - - private final NetconfAccessor netconfAccessor; - private final DataProvider databaseService; - - public ORanChangeNotificationListener(NetconfAccessor netconfAccessor, DataProvider databaseService) { - this.netconfAccessor = netconfAccessor; - this.databaseService = databaseService; - } - - @Override - public void onNetconfConfirmedCommit(NetconfConfirmedCommit notification) { - log.info("onNetconfConfirmedCommit ", notification); - } - - @Override - public void onNetconfSessionStart(NetconfSessionStart notification) { - log.info("onNetconfSessionStart ", notification); - } - - @Override - public void onNetconfSessionEnd(NetconfSessionEnd notification) { - log.info("onNetconfSessionEnd ", notification); - } - - @Override - public void onNetconfCapabilityChange(NetconfCapabilityChange notification) { - log.info("onNetconfCapabilityChange ", notification); - } - - @Override - public void onNetconfConfigChange(NetconfConfigChange notification) { - log.info("onNetconfConfigChange (1) {}", notification); - StringBuffer sb = new StringBuffer(); - List<Edit> editList = notification.nonnullEdit(); - for (Edit edit : editList) { - if (sb.length() > 0) { - sb.append(", "); - } - sb.append(edit); - - EventlogBuilder eventlogBuilder = new EventlogBuilder(); - - InstanceIdentifier<?> target = edit.getTarget(); - if (target != null) { - eventlogBuilder.setObjectId(target.toString()); - log.info("TARGET: {} {} {}", target.getClass(), target.getTargetType()); - for (PathArgument pa : target.getPathArguments()) { - log.info("PathArgument {}", pa); - } - } - eventlogBuilder.setNodeId(netconfAccessor.getNodeId().getValue()); - eventlogBuilder.setNewValue(String.valueOf(edit.getOperation())); - databaseService.writeEventLog(eventlogBuilder.build()); - } - log.info("onNetconfConfigChange (2) {}", sb); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanFaultNotificationListener.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanFaultNotificationListener.java deleted file mode 100644 index cae1bca52..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanFaultNotificationListener.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import org.opendaylight.yang.gen.v1.urn.o.ran.fm._1._0.rev190204.AlarmNotif; -import org.opendaylight.yang.gen.v1.urn.o.ran.fm._1._0.rev190204.ORanFmListener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author herbert - * - */ -public class ORanFaultNotificationListener implements ORanFmListener { - - private static final Logger log = LoggerFactory.getLogger(ORanFaultNotificationListener.class); - - @Override - public void onAlarmNotif(AlarmNotif notification) { - - log.info("onAlarmNotif {}", notification); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanNetworkElement.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanNetworkElement.java deleted file mode 100644 index 8b8a9bdb4..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanNetworkElement.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import java.util.List; -import java.util.Optional; -import org.eclipse.jdt.annotation.NonNull; -import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElementService; -import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; -import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.hardware.rev180313.Hardware; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.hardware.rev180313.hardware.Component; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementDeviceType; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.NotificationListener; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - */ -public class ORanNetworkElement implements NetworkElement { - - private static final Logger log = LoggerFactory.getLogger(ORanNetworkElement.class); - - private final NetconfAccessor netconfAccessor; - - private final DataProvider databaseService; - - private final ORanToInternalDataModel oRanMapper; - - private ListenerRegistration<NotificationListener> oRanListenerRegistrationResult; - private @NonNull final ORanChangeNotificationListener oRanListener; - private ListenerRegistration<NotificationListener> oRanFaultListenerRegistrationResult; - private @NonNull final ORanFaultNotificationListener oRanFaultListener; - - ORanNetworkElement(NetconfAccessor netconfAccess, DataProvider databaseService) { - log.info("Create {}", ORanNetworkElement.class.getSimpleName()); - this.netconfAccessor = netconfAccess; - this.databaseService = databaseService; - - this.oRanListenerRegistrationResult = null; - this.oRanListener = new ORanChangeNotificationListener(netconfAccessor, databaseService); - - this.oRanFaultListenerRegistrationResult = null; - this.oRanFaultListener = new ORanFaultNotificationListener(); - - this.oRanMapper = new ORanToInternalDataModel(); - - } - - public void initialReadFromNetworkElement() { - Hardware hardware = readHardware(netconfAccessor); - if (hardware != null) { - List<Component> componentList = hardware.getComponent(); - if (componentList != null) { - for (Component component : componentList) { - databaseService - .writeInventory(oRanMapper.getInternalEquipment(netconfAccessor.getNodeId(), component)); - } - } - } - } - - @Override - public NetworkElementDeviceType getDeviceType() { - return NetworkElementDeviceType.ORAN; - } - - private Hardware readHardware(NetconfAccessor accessData) { - - final Class<Hardware> clazzPac = Hardware.class; - - log.info("DBRead Get equipment for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(), - accessData.getNodeId().getValue()); - - InstanceIdentifier<Hardware> hardwareIID = InstanceIdentifier.builder(clazzPac).build(); - - Hardware res = accessData.getTransactionUtils().readData(accessData.getDataBroker(), - LogicalDatastoreType.OPERATIONAL, hardwareIID); - - return res; - } - - @Override - public void register() { - initialReadFromNetworkElement(); - this.oRanListenerRegistrationResult = netconfAccessor.doRegisterNotificationListener(oRanListener); - this.oRanFaultListenerRegistrationResult = netconfAccessor.doRegisterNotificationListener(oRanFaultListener); - } - - @Override - public void deregister() { - if (oRanListenerRegistrationResult != null) { - this.oRanListenerRegistrationResult.close(); - } - if (oRanFaultListenerRegistrationResult != null) { - this.oRanFaultListenerRegistrationResult.close(); - } ; - } - - - @Override - public NodeId getNodeId() { - return netconfAccessor.getNodeId(); - } - - @Override - public <L extends NetworkElementService> Optional<L> getService(Class<L> clazz) { - return Optional.empty(); - } - - @Override - public void warmstart() {} - - @Override - public Optional<NetconfAccessor> getAcessor() { - return Optional.of(netconfAccessor); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanNetworkElementFactory.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanNetworkElementFactory.java deleted file mode 100644 index 3a557ccbe..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanNetworkElementFactory.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ - -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import java.util.Optional; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.factory.NetworkElementFactory; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement; -import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider; -import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; -import org.opendaylight.yang.gen.v1.urn.o.ran.hardware._1._0.rev190328.ORANHWCOMPONENT; -import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.network.topology.simulator.rev191025.SimulatorStatus; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class ORanNetworkElementFactory implements NetworkElementFactory { - - private static final Logger log = LoggerFactory.getLogger(ORanNetworkElementFactory.class); - - @Override - public Optional<NetworkElement> create(NetconfAccessor acessor, DeviceManagerServiceProvider serviceProvider) { - if (acessor.getCapabilites().isSupportingNamespace(ORANHWCOMPONENT.QNAME)) { - log.info("Create device {} ", ORanNetworkElement.class.getName()); - return Optional.of(new ORanNetworkElement(acessor, serviceProvider.getDataProvider())); - } else if (acessor.getCapabilites().isSupportingNamespace(SimulatorStatus.QNAME)) { - log.info("Create device {} ", NtsNetworkElement.class.getName()); - return Optional.of(new NtsNetworkElement(acessor, serviceProvider.getDataProvider())); - } else { - return Optional.empty(); - } - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanToInternalDataModel.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanToInternalDataModel.java deleted file mode 100644 index f21645669..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/oran/impl/ORanToInternalDataModel.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - */ -package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl; - -import java.util.ArrayList; -import java.util.List; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.hardware.rev180313.hardware.Component; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.Inventory; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.InventoryBuilder; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; - -/** - * @author herbert - * - */ -public class ORanToInternalDataModel { - - - public Inventory getInternalEquipment(NodeId nodeId, Component component) { - - InventoryBuilder inventoryBuilder = new InventoryBuilder(); - - // General - inventoryBuilder.setNodeId(nodeId.getValue()); - inventoryBuilder.setParentUuid(component.getParent()); - inventoryBuilder.setTreeLevel(new Long(component.getParentRelPos())); - - inventoryBuilder.setUuid(component.getUuid().getValue()); - // -- String list with ids of holders - List<String> containerHolderKeyList = new ArrayList<>(); - List<String> containerHolderList = component.getContainsChild(); - if (containerHolderList != null) { - for (String containerHolder : containerHolderList) { - containerHolderKeyList.add(containerHolder); - } - } - inventoryBuilder.setContainedHolder(containerHolderKeyList); - // -- Manufacturer related things - inventoryBuilder.setManufacturerName(component.getName()); - - // Equipment type - inventoryBuilder.setDescription(component.getDescription()); - inventoryBuilder.setModelIdentifier(component.getModelName()); - inventoryBuilder.setPartTypeId(component.getXmlClass().getName()); - inventoryBuilder.setTypeName(component.getName()); - inventoryBuilder.setVersion(component.getHardwareRev()); - - // Equipment instance - inventoryBuilder.setDate(component.getMfgDate().getValue()); - inventoryBuilder.setSerial(component.getSerialNum()); - - return inventoryBuilder.build(); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/OperatorStateBuilder.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/OperatorStateBuilder.java deleted file mode 100644 index 48d8e802a..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/OperatorStateBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.alarms.rev190911; - -import java.lang.String; -import java.lang.UnsupportedOperationException; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string - * representation. In some cases it is very difficult to automate it since there can be unions such as (uint32 - - * uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: This class is generated in form of a stub and needs to be - * finished by the user. This class is generated only once to prevent loss of user code. - * - */ -public class OperatorStateBuilder { - private OperatorStateBuilder() { - //Exists only to defeat instantiation. - } - - public static OperatorState getDefaultInstance(String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/ResourceBuilder.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/ResourceBuilder.java deleted file mode 100644 index fb2e5d59d..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/ResourceBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.alarms.rev190911; - -import java.lang.String; -import java.lang.UnsupportedOperationException; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string - * representation. In some cases it is very difficult to automate it since there can be unions such as (uint32 - - * uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: This class is generated in form of a stub and needs to be - * finished by the user. This class is generated only once to prevent loss of user code. - * - */ -public class ResourceBuilder { - private ResourceBuilder() { - //Exists only to defeat instantiation. - } - - public static Resource getDefaultInstance(String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/ResourceMatchBuilder.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/ResourceMatchBuilder.java deleted file mode 100644 index 2f4b5931f..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/ResourceMatchBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.alarms.rev190911; - -import java.lang.String; -import java.lang.UnsupportedOperationException; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string - * representation. In some cases it is very difficult to automate it since there can be unions such as (uint32 - - * uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: This class is generated in form of a stub and needs to be - * finished by the user. This class is generated only once to prevent loss of user code. - * - */ -public class ResourceMatchBuilder { - private ResourceMatchBuilder() { - //Exists only to defeat instantiation. - } - - public static ResourceMatch getDefaultInstance(String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/SeverityWithClearBuilder.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/SeverityWithClearBuilder.java deleted file mode 100644 index 49e50e004..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/SeverityWithClearBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.alarms.rev190911; - -import java.lang.String; -import java.lang.UnsupportedOperationException; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string - * representation. In some cases it is very difficult to automate it since there can be unions such as (uint32 - - * uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: This class is generated in form of a stub and needs to be - * finished by the user. This class is generated only once to prevent loss of user code. - * - */ -public class SeverityWithClearBuilder { - private SeverityWithClearBuilder() { - //Exists only to defeat instantiation. - } - - public static SeverityWithClear getDefaultInstance(String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/alarms/ControlMaxAlarmStatusChangesBuilder.java b/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/alarms/ControlMaxAlarmStatusChangesBuilder.java deleted file mode 100644 index c2a500986..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/alarms/rev190911/alarms/ControlMaxAlarmStatusChangesBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.alarms.rev190911.alarms; - -import java.lang.String; -import java.lang.UnsupportedOperationException; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string - * representation. In some cases it is very difficult to automate it since there can be unions such as (uint32 - - * uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: This class is generated in form of a stub and needs to be - * finished by the user. This class is generated only once to prevent loss of user code. - * - */ -public class ControlMaxAlarmStatusChangesBuilder { - private ControlMaxAlarmStatusChangesBuilder() { - //Exists only to defeat instantiation. - } - - public static Control.MaxAlarmStatusChanges getDefaultInstance(String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml b/sdnr/wt/devicemanager-oran/provider/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml deleted file mode 100644 index 21b761ce2..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ ============LICENSE_START======================================================= - ~ ONAP : ccsdk features - ~ ================================================================================ - ~ Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. - ~ All rights reserved. - ~ ================================================================================ - ~ Update Copyright (C) 2020 AT&T 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======================================================= - ~ - --> - -<blueprint xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" - xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" odl:use-default-for-reference-types="true"> - - <reference id="netconfNetworkElementService" - availability="mandatory" activation="eager" - interface="org.onap.ccsdk.features.sdnr.wt.devicemanager.service.NetconfNetworkElementService"/> - - <bean id="provider" - class="org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl.DeviceManagerORanImpl" - init-method="init" destroy-method="close"> - <property name="netconfNetworkElementService" ref="netconfNetworkElementService"/> - </bean> -</blueprint> diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/resources/version.properties b/sdnr/wt/devicemanager-oran/provider/src/main/resources/version.properties deleted file mode 100644 index 6638c04f9..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/resources/version.properties +++ /dev/null @@ -1,24 +0,0 @@ -# -# ============LICENSE_START======================================================= -# ONAP : ccsdk features -# ================================================================================ -# Copyright (C) 2020 AT&T 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======================================================= -# -# - -# Properties filled in by maven during build process -version = ${project.version} -build = ${buildtime} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/iana-hardware.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/iana-hardware.yang deleted file mode 100755 index 52bcaf3a0..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/iana-hardware.yang +++ /dev/null @@ -1,180 +0,0 @@ -module iana-hardware { -yang-version 1.1; -namespace "urn:ietf:params:xml:ns:yang:iana-hardware"; -prefix ianahw; - -organization "IANA"; -contact - " Internet Assigned Numbers Authority - Postal: ICANN - 12025 Waterfront Drive, Suite 300 - Los Angeles, CA 90094-2536 - United States of America - Tel: +1 310 301 5800 - E-Mail: iana@iana.org>"; - -description - "IANA-defined identities for hardware class. - The latest revision of this YANG module can be obtained from - the IANA website. - Requests for new values should be made to IANA via - email (iana@iana.org). - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - The initial version of this YANG module is part of RFC 8348; - see the RFC itself for full legal notices."; -reference - "https://www.iana.org/assignments/yang-parameters"; - -revision 2018-03-13 { - description - "Initial revision."; - reference - "RFC 8348: A YANG Data Model for Hardware Management"; -} - -/* - * Identities - */ - -identity hardware-class { - description - "This identity is the base for all hardware class - identifiers."; -} - -identity unknown { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is unknown - to the server."; -} - -identity chassis { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is an - overall container for networking equipment. Any class of - physical component, except a stack, may be contained within a - chassis; a chassis may only be contained within a stack."; -} - -identity backplane { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of device for aggregating and forwarding networking traffic, - such as a shared backplane in a modular ethernet switch. Note - that an implementation may model a backplane as a single - physical component, which is actually implemented as multiple - discrete physical components (within a chassis or stack)."; -} - -identity container { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is capable - of containing one or more removable physical entities, - possibly of different types. For example, each (empty or - full) slot in a chassis will be modeled as a container. Note - that all removable physical components should be modeled - within a container component, such as field-replaceable - modules, fans, or power supplies. Note that all known - containers should be modeled by the agent, including empty - containers."; -} - -identity power-supply { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is a - power-supplying component."; -} - -identity fan { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is a fan or - other heat-reduction component."; -} - -identity sensor { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of sensor, such as a temperature sensor within a router - chassis."; -} - -identity module { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of self-contained sub-system. If a module component is - removable, then it should be modeled within a container - component; otherwise, it should be modeled directly within - another physical component (e.g., a chassis or another - module)."; -} - -identity port { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of networking port capable of receiving and/or transmitting - networking traffic."; -} - -identity stack { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of super-container (possibly virtual) intended to group - together multiple chassis entities. A stack may be realized - by a virtual cable, a real interconnect cable attached to - multiple chassis, or multiple interconnect cables. A stack - should not be modeled within any other physical components, - but a stack may be contained within another stack. Only - chassis components should be contained within a stack."; -} - -identity cpu { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of central processing unit."; -} - -identity energy-object { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of energy object, i.e., it is a piece of equipment that is - part of or attached to a communications network that is - monitored, it is controlled, or it aids in the management of - another device for Energy Management."; -} - -identity battery { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of battery."; -} - -identity storage-drive { - base ianahw:hardware-class; - description - "This identity is applicable if the hardware class is some sort - of component with data storage capability as its main - functionality, e.g., hard disk drive (HDD), solid-state device - (SSD), solid-state hybrid drive (SSHD), object storage device - (OSD), or other."; -} -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-alarms@2019-09-11.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-alarms@2019-09-11.yang deleted file mode 100644 index a6f51bb81..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-alarms@2019-09-11.yang +++ /dev/null @@ -1,1530 +0,0 @@ -module ietf-alarms { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-alarms"; - prefix al; - - import ietf-yang-types { - prefix yang; - reference - "RFC 6991: Common YANG Data Types."; - } - - organization - "IETF CCAMP Working Group"; - contact - "WG Web: <https://trac.ietf.org/trac/ccamp> - WG List: <mailto:ccamp@ietf.org> - - Editor: Stefan Vallin - <mailto:stefan@wallan.se> - - Editor: Martin Bjorklund - <mailto:mbj@tail-f.com>"; - description - "This module defines an interface for managing alarms. Main - inputs to the module design are the 3GPP Alarm Integration - Reference Point (IRP), ITU-T X.733, and ANSI/ISA-18.2 alarm - standards. - - Main features of this module include: - - * Alarm list: - A list of all alarms. Cleared alarms stay in - the list until explicitly purged. - - * Operator actions on alarms: - Acknowledging and closing alarms. - - * Administrative actions on alarms: - Purging alarms from the list according to specific - criteria. - - * Alarm inventory: - A management application can read all - alarm types implemented by the system. - - * Alarm shelving: - Shelving (blocking) alarms according - to specific criteria. - - * Alarm profiles: - A management system can attach further - information to alarm types, for example, - overriding system-default severity - levels. - - This module uses a stateful view on alarms. An alarm is a state - for a specific resource (note that an alarm is not a - notification). An alarm type is a possible alarm state for a - resource. For example, the tuple: - - ('link-alarm', 'GigabitEthernet0/25') - - is an alarm of type 'link-alarm' on the resource - 'GigabitEthernet0/25'. - - Alarm types are identified using YANG identities and an optional - string-based qualifier. The string-based qualifier allows for - dynamic extension of the statically defined alarm types. Alarm - types identify a possible alarm state and not the individual - notifications. For example, the traditional 'link-down' and - 'link-up' notifications are two notifications referring to the - same alarm type 'link-alarm'. - - With this design, there is no ambiguity about how alarm and - alarm clear correlation should be performed; notifications that - report the same resource and alarm type are considered updates - - of the same alarm, e.g., clearing an active alarm or changing - the severity of an alarm. The instrumentation can update the - severity and alarm text on an existing alarm. The above alarm - example can therefore look like the following: - - (('link-alarm', 'GigabitEthernet0/25'), - warning, - 'interface down while interface admin state is up') - - There is a clear separation between updates on the alarm from - the underlying resource, like clear, and updates from an - operator, like acknowledging or closing an alarm: - - (('link-alarm', 'GigabitEthernet0/25'), - warning, - 'interface down while interface admin state is up', - cleared, - closed) - - Administrative actions like removing closed alarms older than a - given time is supported. - - This YANG module does not define how the underlying - instrumentation detects and clears the specific alarms. That - belongs to the Standards Development Organization (SDO) or - enterprise that owns that specific technology. - - The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL - NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', - 'MAY', and 'OPTIONAL' in this document are to be interpreted as - described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, - they appear in all capitals, as shown here. - - Copyright (c) 2019 IETF Trust and the persons identified as - authors of the code. All rights reserved. - - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject to - the license terms contained in, the Simplified BSD License set - forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - - This version of this YANG module is part of RFC 8632; see - the RFC itself for full legal notices."; - - revision 2019-09-11 { - description - "Initial revision."; - reference - "RFC 8632: A YANG Data Model for Alarm Management"; - } - - /* - * Features - */ - - feature operator-actions { - description - "This feature indicates that the system supports operator - states on alarms."; - } - - feature alarm-shelving { - description - "This feature indicates that the system supports shelving - (blocking) alarms. - - Alarm shelving may have an impact on server processing - resources in order to match alarms against shelf - criteria."; - } - - feature alarm-history { - description - "This feature indicates that the server maintains a history - of state changes for each alarm. For example, if an alarm - toggles between cleared and active 10 times, these state - changes are present in a separate list in the alarm. - - Keeping the alarm history may have an impact on server - memory resources."; - } - - feature alarm-summary { - description - "This feature indicates that the server summarizes the number - of alarms per severity and operator state."; - } - - feature alarm-profile { - description - "The system enables clients to configure further information - to each alarm type."; - } - - feature severity-assignment { - description - "The system supports configurable alarm severity levels."; - reference - "ITU-T Recommendation M.3100: - Generic network information model - ITU-T Recommendation M.3160: - Generic, protocol-neutral management information model"; - } - - feature root-cause-analysis { - description - "The system supports identifying candidate root-cause - resources for an alarm, for example, a disk partition - root cause for a logger failure alarm."; - } - - feature service-impact-analysis { - description - "The system supports identifying candidate-impacted - resources for an alarm, for example, an interface state change - resulting in a link alarm, which can refer to a link as being - impacted."; - } - - feature alarm-correlation { - description - "The system supports correlating/grouping alarms - that belong together."; - } - - /* - * Identities - */ - - identity alarm-type-id { - description - "Base identity for alarm types. A unique identification of - the alarm, not including the resource. Different resources - can share alarm types. If the resource reports the same - alarm type, it is considered to be the same alarm. The alarm - type is a simplification of the different X.733 and 3GPP Alarm - IRP correlation mechanisms, and it allows for - hierarchical extensions. - - A string-based qualifier can be used in addition to the - identity in order to have different alarm types based on - information not known at design time, such as values in - - textual SNMP Notification varbinds. - - Standards and vendors can define sub-identities to clearly - identify specific alarm types. - - This identity is abstract and MUST NOT be used for alarms."; - } - - /* - * Common types - */ - - typedef resource { - type union { - type instance-identifier { - require-instance false; - } - type yang:object-identifier; - type string; - type yang:uuid; - } - description - "This is an identification of the alarming resource, such as an - interface. It should be as fine-grained as possible to both - guide the operator and guarantee uniqueness of the alarms. - - If the alarming resource is modeled in YANG, this type will - be an instance-identifier. - - If the resource is an SNMP object, the type will be an - 'object-identifier'. - - If the resource is anything else, for example, a distinguished - name or a Common Information Model (CIM) path, this type will - be a string. - - If the alarming object is identified by a Universally Unique - Identifier (UUID), use the uuid type. Be cautious when using - this type, since a UUID is hard to use for an operator. - - If the server supports several models, the precedence should - be in the order as given in the union definition."; - } - - typedef resource-match { - type union { - type yang:xpath1.0; - type yang:object-identifier; - type string; - } - description - "This type is used to match resources of type 'resource'. - Since the type 'resource' is a union of different types, the - 'resource-match' type is also a union of corresponding types. - - If the type is given as an XPath 1.0 expression, a resource - of type 'instance-identifier' matches if the instance is part - of the node set that is the result of evaluating the XPath 1.0 - expression. For example, the XPath 1.0 expression: - - /ietf-interfaces:interfaces/ietf-interfaces:interface - [ietf-interfaces:type='ianaift:ethernetCsmacd'] - - would match the resource instance-identifier: - - /if:interfaces/if:interface[if:name='eth1'], - - assuming that the interface 'eth1' is of type - 'ianaift:ethernetCsmacd'. - - If the type is given as an object identifier, a resource of - type 'object-identifier' matches if the match object - identifier is a prefix of the resource's object identifier. - For example, the value: - - 1.3.6.1.2.1.2.2 - - would match the resource object identifier: - - 1.3.6.1.2.1.2.2.1.1.5 - - If the type is given as an UUID or a string, it is interpreted - as an XML Schema regular expression, which matches a resource - of type 'yang:uuid' or 'string' if the given regular - expression matches the resource string. - - If the type is given as an XPath expression, it is evaluated - in the following XPath context: - - o The set of namespace declarations is the set of prefix - and namespace pairs for all YANG modules implemented by - the server, where the prefix is the YANG module name and - the namespace is as defined by the 'namespace' statement - in the YANG module. - - If a leaf of this type is encoded in XML, all namespace - - declarations in scope on the leaf element are added to - the set of namespace declarations. If a prefix found in - the XML is already present in the set of namespace - declarations, the namespace in the XML is used. - - o The set of variable bindings is empty. - - o The function library is the core function library, and - the functions are defined in Section 10 of RFC 7950. - - o The context node is the root node in the data tree."; - reference - "XML Schema Part 2: Datatypes Second Edition, - World Wide Web Consortium Recommendation - REC-xmlschema-2-20041028"; - } - - typedef alarm-text { - type string; - description - "The string used to inform operators about the alarm. This - MUST contain enough information for an operator to be able to - understand the problem and how to resolve it. If this string - contains structure, this format should be clearly documented - for programs to be able to parse that information."; - } - - typedef severity { - type enumeration { - enum indeterminate { - value 2; - description - "Indicates that the severity level could not be - determined. This level SHOULD be avoided."; - } - enum warning { - value 3; - description - "The 'warning' severity level indicates the detection of a - potential or impending service-affecting fault, before any - significant effects have been felt. Action should be - taken to further diagnose (if necessary) and correct the - problem in order to prevent it from becoming a more - serious service-affecting fault."; - } - enum minor { - value 4; - description - "The 'minor' severity level indicates the existence of a - non-service-affecting fault condition and that corrective - action should be taken in order to prevent a more serious - (for example, service-affecting) fault. Such a severity - can be reported, for example, when the detected alarm - condition is not currently degrading the capacity of the - resource."; - } - enum major { - value 5; - description - "The 'major' severity level indicates that a service- - affecting condition has developed and an urgent corrective - action is required. Such a severity can be reported, for - example, when there is a severe degradation in the - capability of the resource and its full capability must be - restored."; - } - enum critical { - value 6; - description - "The 'critical' severity level indicates that a service- - affecting condition has occurred and an immediate - corrective action is required. Such a severity can be - reported, for example, when a resource becomes totally out - of service and its capability must be restored."; - } - } - description - "The severity level of the alarm. Note well that the value - 'clear' is not included. Whether or not an alarm is cleared - is a separate boolean flag."; - reference - "ITU-T Recommendation X.733: Information Technology - - Open Systems Interconnection - - System Management: Alarm Reporting Function"; - } - - typedef severity-with-clear { - type union { - type enumeration { - enum cleared { - value 1; - description - "The alarm is cleared by the instrumentation."; - } - } - type severity; - } - description - "The severity level of the alarm including clear. This is used - only in notifications reporting state changes for an alarm."; - } - - typedef writable-operator-state { - type enumeration { - enum none { - value 1; - description - "The alarm is not being taken care of."; - } - enum ack { - value 2; - description - "The alarm is being taken care of. Corrective action not - taken yet or has failed"; - } - enum closed { - value 3; - description - "Corrective action taken successfully."; - } - } - description - "Operator states on an alarm. The 'closed' state indicates - that an operator considers the alarm being resolved. This is - separate from the alarm's 'is-cleared' leaf."; - } - - typedef operator-state { - type union { - type writable-operator-state; - type enumeration { - enum shelved { - value 4; - description - "The alarm is shelved. Alarms in /alarms/shelved-alarms/ - MUST be assigned this operator state by the server as - the last entry in the 'operator-state-change' list. The - text for that entry SHOULD include the shelf name."; - } - enum un-shelved { - value 5; - description - "The alarm is moved back to 'alarm-list' from a shelf. - Alarms that are moved from /alarms/shelved-alarms/ to - /alarms/alarm-list MUST be assigned this state by the - server as the last entry in the 'operator-state-change' - list. The text for that entry SHOULD include the shelf - name."; - } - } - } - description - "Operator states on an alarm. The 'closed' state indicates - that an operator considers the alarm being resolved. This is - separate from the alarm's 'is-cleared' leaf."; - } - - /* Alarm type */ - - typedef alarm-type-id { - type identityref { - base alarm-type-id; - } - description - "Identifies an alarm type. The description of the alarm type - id MUST indicate whether or not the alarm type is abstract. - An abstract alarm type is used as a base for other alarm type - ids and will not be used as a value for an alarm or be present - in the alarm inventory."; - } - - typedef alarm-type-qualifier { - type string; - description - "If an alarm type cannot be fully specified at design time by - 'alarm-type-id', this string qualifier is used in addition to - fully define a unique alarm type. - - The definition of alarm qualifiers is considered to be part of - the instrumentation and is out of scope for this module. An - empty string is used when this is part of a key."; - } - - /* - * Groupings - */ - - grouping common-alarm-parameters { - description - "Common parameters for an alarm. - - This grouping is used both in the alarm list and in the - notification representing an alarm-state change."; - leaf resource { - type resource; - mandatory true; - description - "The alarming resource. See also 'alt-resource'. This could - be, for example, a reference to the alarming interface"; - } - leaf alarm-type-id { - type alarm-type-id; - mandatory true; - description - "This leaf and the leaf 'alarm-type-qualifier' together - provide a unique identification of the alarm type."; - } - leaf alarm-type-qualifier { - type alarm-type-qualifier; - description - "This leaf is used when the 'alarm-type-id' leaf cannot - uniquely identify the alarm type. Normally, this is not the - case, and this leaf is the empty string."; - } - leaf-list alt-resource { - type resource; - description - "Used if the alarming resource is available over other - interfaces. This field can contain SNMP OIDs, CIM paths, or - 3GPP distinguished names, for example."; - } - list related-alarm { - if-feature "alarm-correlation"; - key "resource alarm-type-id alarm-type-qualifier"; - description - "References to related alarms. Note that the related alarm - might have been purged from the alarm list."; - leaf resource { - type leafref { - path "/alarms/alarm-list/alarm/resource"; - require-instance false; - } - description - "The alarming resource for the related alarm."; - } - leaf alarm-type-id { - type leafref { - path "/alarms/alarm-list/alarm" - + "[resource=current()/../resource]" - + "/alarm-type-id"; - require-instance false; - } - description - "The alarm type identifier for the related alarm."; - } - leaf alarm-type-qualifier { - type leafref { - path "/alarms/alarm-list/alarm" - + "[resource=current()/../resource]" - + "[alarm-type-id=current()/../alarm-type-id]" - + "/alarm-type-qualifier"; - require-instance false; - } - description - "The alarm qualifier for the related alarm."; - } - } - leaf-list impacted-resource { - if-feature "service-impact-analysis"; - type resource; - description - "Resources that might be affected by this alarm. If the - system creates an alarm on a resource and also has a mapping - to other resources that might be impacted, these resources - can be listed in this leaf-list. In this way, the system - can create one alarm instead of several. For example, if an - interface has an alarm, the 'impacted-resource' can - reference the aggregated port channels."; - } - leaf-list root-cause-resource { - if-feature "root-cause-analysis"; - type resource; - description - "Resources that are candidates for causing the alarm. If the - system has a mechanism to understand the candidate root - causes of an alarm, this leaf-list can be used to list the - root-cause candidate resources. In this way, the system can - create one alarm instead of several. An example might be a - logging system (alarm resource) that fails; the alarm can - reference the file system in the 'root-cause-resource' - leaf-list. Note that the intended use is not to also send - an alarm with the 'root-cause-resource' as an alarming - resource. The 'root-cause-resource' leaf-list is a hint and - should not also generate an alarm for the same problem."; - } - } - - grouping alarm-state-change-parameters { - description - "Parameters for an alarm-state change. - - This grouping is used both in the alarm list's status-change - list and in the notification representing an alarm-state - change."; - leaf time { - type yang:date-and-time; - mandatory true; - description - "The time the status of the alarm changed. The value - represents the time the real alarm-state change appeared in - the resource and not when it was added to the alarm - list. The /alarm-list/alarm/last-changed MUST be set to the - same value."; - } - leaf perceived-severity { - type severity-with-clear; - mandatory true; - description - "The severity of the alarm as defined by X.733. Note that - this may not be the original severity since the alarm may - have changed severity."; - reference - "ITU-T Recommendation X.733: Information Technology - - Open Systems Interconnection - - System Management: Alarm Reporting Function"; - } - leaf alarm-text { - type alarm-text; - mandatory true; - description - "A user-friendly text describing the alarm-state change."; - reference - "ITU-T Recommendation X.733: Information Technology - - Open Systems Interconnection - - System Management: Alarm Reporting Function"; - } - } - - grouping operator-parameters { - description - "This grouping defines parameters that can be changed by an - operator."; - leaf time { - type yang:date-and-time; - mandatory true; - description - "Timestamp for operator action on the alarm."; - } - leaf operator { - type string; - mandatory true; - description - "The name of the operator that has acted on this alarm."; - } - leaf state { - type operator-state; - mandatory true; - description - "The operator's view of the alarm state."; - } - leaf text { - type string; - description - "Additional optional textual information provided by the - operator."; - } - } - - grouping resource-alarm-parameters { - description - "Alarm parameters that originate from the resource view."; - leaf is-cleared { - type boolean; - mandatory true; - description - "Indicates the current clearance state of the alarm. An - alarm might toggle from active alarm to cleared alarm and - back to active again."; - } - leaf last-raised { - type yang:date-and-time; - mandatory true; - description - "An alarm may change severity level and toggle between - active and cleared during its lifetime. This leaf indicates - the last time it was raised ('is-cleared' = 'false')."; - } - leaf last-changed { - type yang:date-and-time; - mandatory true; - description - "A timestamp when the 'status-change' or - 'operator-state-change' list was last changed."; - } - leaf perceived-severity { - type severity; - mandatory true; - description - "The last severity of the alarm. - - If an alarm was raised with severity 'warning' but later - changed to 'major', this leaf will show 'major'."; - } - leaf alarm-text { - type alarm-text; - mandatory true; - description - "The last reported alarm text. This text should contain - information for an operator to be able to understand the - problem and how to resolve it."; - } - list status-change { - if-feature "alarm-history"; - key "time"; - min-elements 1; - description - "A list of status-change events for this alarm. - - The entry with latest timestamp in this list MUST - correspond to the leafs 'is-cleared', 'perceived-severity', - and 'alarm-text' for the alarm. - - This list is ordered according to the timestamps of alarm - state changes. The first item corresponds to the latest - state change. - - The following state changes create an entry in this - list: - - changed severity (warning, minor, major, critical) - - clearance status; this also updates the 'is-cleared' - leaf - - alarm-text update"; - uses alarm-state-change-parameters; - } - } - - grouping filter-input { - description - "Grouping to specify a filter construct on alarm information."; - leaf alarm-clearance-status { - type enumeration { - enum any { - description - "Ignore alarm-clearance status."; - } - enum cleared { - description - "Filter cleared alarms."; - } - enum not-cleared { - description - "Filter not-cleared alarms."; - } - } - mandatory true; - description - "The clearance status of the alarm."; - } - container older-than { - presence "Age specification"; - description - "Matches the 'last-status-change' leaf in the alarm."; - choice age-spec { - description - "Filter using date and time age."; - case seconds { - leaf seconds { - type uint16; - description - "Age expressed in seconds."; - } - } - case minutes { - leaf minutes { - type uint16; - description - "Age expressed in minutes."; - } - } - case hours { - leaf hours { - type uint16; - description - "Age expressed in hours."; - } - } - case days { - leaf days { - type uint16; - description - "Age expressed in days."; - } - } - case weeks { - leaf weeks { - type uint16; - description - "Age expressed in weeks."; - } - } - } - } - container severity { - presence "Severity filter"; - choice sev-spec { - description - "Filter based on severity level."; - leaf below { - type severity; - description - "Severity less than this leaf."; - } - leaf is { - type severity; - description - "Severity level equal to this leaf."; - } - leaf above { - type severity; - description - "Severity level higher than this leaf."; - } - } - description - "Filter based on severity."; - } - container operator-state-filter { - if-feature "operator-actions"; - presence "Operator state filter"; - leaf state { - type operator-state; - description - "Filter on operator state."; - } - leaf user { - type string; - description - "Filter based on which operator."; - } - description - "Filter based on operator state."; - } - } - - /* - * The /alarms data tree - */ - - container alarms { - description - "The top container for this module."; - container control { - description - "Configuration to control the alarm behavior."; - leaf max-alarm-status-changes { - type union { - type uint16; - type enumeration { - enum infinite { - description - "The status-change entries are accumulated - infinitely."; - } - } - } - default "32"; - description - "The 'status-change' entries are kept in a circular list - per alarm. When this number is exceeded, the oldest - status change entry is automatically removed. If the - value is 'infinite', the status-change entries are - accumulated infinitely."; - } - leaf notify-status-changes { - type enumeration { - enum all-state-changes { - description - "Send notifications for all status changes."; - } - enum raise-and-clear { - description - "Send notifications only for raise, clear, and - re-raise. Notifications for severity-level changes or - alarm-text changes are not sent."; - } - enum severity-level { - description - "Only send notifications for alarm-state changes - crossing the level specified in - 'notify-severity-level'. Always send clear - notifications."; - } - } - must '. != "severity-level" or ../notify-severity-level' { - description - "When notify-status-changes is 'severity-level', a value - must be given for 'notify-severity-level'."; - } - default "all-state-changes"; - description - "This leaf controls the notifications sent for alarm status - updates. There are three options: - - 1. Notifications are sent for all updates, severity-level - changes, and alarm-text changes. - - 2. Notifications are only sent for alarm raise and clear. - - 3. Notifications are sent for status changes equal to or - above the specified severity level. Clear - notifications shall always be sent. Notifications - shall also be sent for state changes that make an - alarm less severe than the specified level. - - For example, in option 3, assume that the severity level - is set to major and that the alarm has the following state - changes: - - [(Time, severity, clear)]: - [(T1, major, -), (T2, minor, -), (T3, warning, -), - (T4, minor, -), (T5, major, -), (T6, critical, -), - (T7, major. -), (T8, major, clear)] - - In that case, notifications will be sent at times - T1, T2, T5, T6, T7, and T8."; - } - leaf notify-severity-level { - when '../notify-status-changes = "severity-level"'; - type severity; - description - "Only send notifications for alarm-state changes crossing - the specified level. Always send clear notifications."; - } - container alarm-shelving { - if-feature "alarm-shelving"; - description - "The 'alarm-shelving/shelf' list is used to shelve - (block/filter) alarms. The conditions in the shelf - criteria are logically ANDed. The first matching shelf is - used, and an alarm is shelved only for this first match. - Matching alarms MUST appear in the - /alarms/shelved-alarms/shelved-alarm list, and - non-matching /alarms MUST appear in the - /alarms/alarm-list/alarm list. The server does not send - any notifications for shelved alarms. - - The server MUST maintain states (e.g., severity - changes) for the shelved alarms. - - Alarms that match the criteria shall have an - operator state 'shelved'. When the shelf - configuration removes an alarm from the shelf, the server - shall add the operator state 'un-shelved'."; - list shelf { - key "name"; - ordered-by user; - leaf name { - type string; - description - "An arbitrary name for the alarm shelf."; - } - description - "Each entry defines the criteria for shelving alarms. - Criteria are ANDed. If no criteria are specified, - all alarms will be shelved."; - leaf-list resource { - type resource-match; - description - "Shelve alarms for matching resources."; - } - list alarm-type { - key "alarm-type-id alarm-type-qualifier-match"; - description - "Any alarm matching the combined criteria of - 'alarm-type-id' and 'alarm-type-qualifier-match' - MUST be matched."; - leaf alarm-type-id { - type alarm-type-id; - description - "Shelve all alarms that have an 'alarm-type-id' that - is equal to or derived from the given - 'alarm-type-id'."; - } - leaf alarm-type-qualifier-match { - type string; - description - "An XML Schema regular expression that is used to - match an alarm type qualifier. Shelve all alarms - that match this regular expression for the alarm - type qualifier."; - reference - "XML Schema Part 2: Datatypes Second Edition, - World Wide Web Consortium Recommendation - REC-xmlschema-2-20041028"; - } - } - leaf description { - type string; - description - "An optional textual description of the shelf. This - description should include the reason for shelving - these alarms."; - } - } - } - } - container alarm-inventory { - config false; - description - "The 'alarm-inventory/alarm-type' list contains all possible - alarm types for the system. - - If the system knows for which resources a specific alarm - type can appear, it is also identified in the inventory. - The list also tells if each alarm type has a corresponding - clear state. The inventory shall only contain concrete - alarm types. - - The alarm inventory MUST be updated by the system when new - alarms can appear. This can be the case when installing new - software modules or inserting new card types. A - notification 'alarm-inventory-changed' is sent when the - inventory is changed."; - list alarm-type { - key "alarm-type-id alarm-type-qualifier"; - description - "An entry in this list defines a possible alarm."; - leaf alarm-type-id { - type alarm-type-id; - description - "The statically defined alarm type identifier for this - possible alarm."; - } - leaf alarm-type-qualifier { - type alarm-type-qualifier; - description - "The optionally dynamically defined alarm type identifier - for this possible alarm."; - } - leaf-list resource { - type resource-match; - description - "Optionally, specifies for which resources the alarm type - is valid."; - } - leaf will-clear { - type boolean; - mandatory true; - description - "This leaf tells the operator if the alarm will be - cleared when the correct corrective action has been - taken. Implementations SHOULD strive for detecting the - cleared state for all alarm types. - - If this leaf is 'true', the operator can monitor the - alarm until it becomes cleared after the corrective - action has been taken. - - If this leaf is 'false', the operator needs to validate - that the alarm is no longer active using other - mechanisms. Alarms can lack a corresponding clear due - to missing instrumentation or no logical - corresponding clear state."; - } - leaf-list severity-level { - type severity; - description - "This leaf-list indicates the possible severity levels of - this alarm type. Note well that 'clear' is not part of - the severity type. In general, the severity level - should be defined by the instrumentation based on the - dynamic state, rather than being defined statically by - the alarm type, in order to provide a relevant severity - level based on dynamic state and context. However, most - alarm types have a defined set of possible severity - levels, and this should be provided here."; - } - leaf description { - type string; - mandatory true; - description - "A description of the possible alarm. It SHOULD include - information on possible underlying root causes and - corrective actions."; - } - } - } - container summary { - if-feature "alarm-summary"; - config false; - description - "This container gives a summary of the number of alarms."; - list alarm-summary { - key "severity"; - description - "A global summary of all alarms in the system. The summary - does not include shelved alarms."; - leaf severity { - type severity; - description - "Alarm summary for this severity level."; - } - leaf total { - type yang:gauge32; - description - "Total number of alarms of this severity level."; - } - leaf not-cleared { - type yang:gauge32; - description - "Total number of alarms of this severity level - that are not cleared."; - } - leaf cleared { - type yang:gauge32; - description - "For this severity level, the number of alarms that are - cleared."; - } - leaf cleared-not-closed { - if-feature "operator-actions"; - type yang:gauge32; - description - "For this severity level, the number of alarms that are - cleared but not closed."; - } - leaf cleared-closed { - if-feature "operator-actions"; - type yang:gauge32; - description - "For this severity level, the number of alarms that are - cleared and closed."; - } - leaf not-cleared-closed { - if-feature "operator-actions"; - type yang:gauge32; - description - "For this severity level, the number of alarms that are - not cleared but closed."; - } - leaf not-cleared-not-closed { - if-feature "operator-actions"; - type yang:gauge32; - description - "For this severity level, the number of alarms that are - not cleared and not closed."; - } - } - leaf shelves-active { - if-feature "alarm-shelving"; - type empty; - description - "This is a hint to the operator that there are active - alarm shelves. This leaf MUST exist if the - /alarms/shelved-alarms/number-of-shelved-alarms is > 0."; - } - } - container alarm-list { - config false; - description - "The alarms in the system."; - leaf number-of-alarms { - type yang:gauge32; - description - "This object shows the total number of - alarms in the system, i.e., the total number - of entries in the alarm list."; - } - leaf last-changed { - type yang:date-and-time; - description - "A timestamp when the alarm list was last - changed. The value can be used by a manager to - initiate an alarm resynchronization procedure."; - } - list alarm { - key "resource alarm-type-id alarm-type-qualifier"; - description - "The list of alarms. Each entry in the list holds one - alarm for a given alarm type and resource. An alarm can - be updated from the underlying resource or by the user. - The following leafs are maintained by the resource: - 'is-cleared', 'last-change', 'perceived-severity', and - 'alarm-text'. An operator can change 'operator-state' and - 'operator-text'. - - Entries appear in the alarm list the first time an alarm - becomes active for a given alarm type and resource. - Entries do not get deleted when the alarm is cleared. - Clear status is represented as a boolean flag. - - Alarm entries are removed, i.e., purged, from the list by - an explicit purge action. For example, purge all alarms - that are cleared and in closed operator state that are - older than 24 hours. Purged alarms are removed from the - alarm list. If the alarm resource state changes after a - purge, the alarm will reappear in the alarm list. - - Systems may also remove alarms based on locally configured - policies; this is out of scope for this module."; - uses common-alarm-parameters; - leaf time-created { - type yang:date-and-time; - mandatory true; - description - "The timestamp when this alarm entry was created. This - represents the first time the alarm appeared; it can - also represent that the alarm reappeared after a purge. - Further state changes of the same alarm do not change - this leaf; these changes will update the 'last-changed' - leaf."; - } - uses resource-alarm-parameters; - list operator-state-change { - if-feature "operator-actions"; - key "time"; - description - "This list is used by operators to indicate the state of - human intervention on an alarm. For example, if an - operator has seen an alarm, the operator can add a new - item to this list indicating that the alarm is - acknowledged."; - uses operator-parameters; - } - action set-operator-state { - if-feature "operator-actions"; - description - "This is a means for the operator to indicate the level - of human intervention on an alarm."; - input { - leaf state { - type writable-operator-state; - mandatory true; - description - "Set this operator state."; - } - leaf text { - type string; - description - "Additional optional textual information."; - } - } - } - notification operator-action { - if-feature "operator-actions"; - description - "This notification is used to report that an operator - acted upon an alarm."; - uses operator-parameters; - } - } - action purge-alarms { - description - "This operation requests that the server delete entries - from the alarm list according to the supplied criteria. - - Typically, this operation is used to delete alarms that - are in closed operator state and older than a specified - time. - - The number of purged alarms is returned as an output - parameter."; - input { - uses filter-input; - } - output { - leaf purged-alarms { - type uint32; - description - "Number of purged alarms."; - } - } - } - action compress-alarms { - if-feature "alarm-history"; - description - "This operation requests that the server compress - entries in the alarm list by removing all but the - latest 'status-change' entry for all matching alarms. - Conditions in the input are logically ANDed. If no - input condition is given, all alarms are compressed."; - input { - leaf resource { - type resource-match; - description - "Compress the alarms matching this resource."; - } - leaf alarm-type-id { - type leafref { - path "/alarms/alarm-list/alarm/alarm-type-id"; - require-instance false; - } - description - "Compress alarms with this 'alarm-type-id'."; - } - leaf alarm-type-qualifier { - type leafref { - path "/alarms/alarm-list/alarm/alarm-type-qualifier"; - require-instance false; - } - description - "Compress the alarms with this - 'alarm-type-qualifier'."; - } - } - output { - leaf compressed-alarms { - type uint32; - description - "Number of compressed alarm entries."; - } - } - } - } - container shelved-alarms { - if-feature "alarm-shelving"; - config false; - description - "The shelved alarms. Alarms appear here if they match the - criteria in /alarms/control/alarm-shelving. This list does - not generate any notifications. The list represents alarms - that are considered not relevant by the operator. Alarms in - this list have an 'operator-state' of 'shelved'. This - cannot be changed."; - leaf number-of-shelved-alarms { - type yang:gauge32; - description - "This object shows the total number of current - alarms, i.e., the total number of entries - in the alarm list."; - } - leaf shelved-alarms-last-changed { - type yang:date-and-time; - description - "A timestamp when the shelved-alarm list was last changed. - The value can be used by a manager to initiate an alarm - resynchronization procedure."; - } - list shelved-alarm { - key "resource alarm-type-id alarm-type-qualifier"; - description - "The list of shelved alarms. Shelved alarms can only be - updated from the underlying resource; no operator actions - are supported."; - uses common-alarm-parameters; - leaf shelf-name { - type leafref { - path "/alarms/control/alarm-shelving/shelf/name"; - require-instance false; - } - description - "The name of the shelf."; - } - uses resource-alarm-parameters; - list operator-state-change { - if-feature "operator-actions"; - key "time"; - description - "This list is used by operators to indicate the state of - human intervention on an alarm. For shelved alarms, the - system has set the list item in the list to 'shelved'."; - uses operator-parameters; - } - } - action purge-shelved-alarms { - description - "This operation requests that the server delete entries from - the shelved-alarm list according to the supplied criteria. - In the shelved-alarm list, it makes sense to delete alarms - that are not relevant anymore. - - The number of purged alarms is returned as an output - parameter."; - input { - uses filter-input; - } - output { - leaf purged-alarms { - type uint32; - description - "Number of purged alarms."; - } - } - } - action compress-shelved-alarms { - if-feature "alarm-history"; - description - "This operation requests that the server compress entries - in the shelved-alarm list by removing all but the latest - 'status-change' entry for all matching shelved alarms. - Conditions in the input are logically ANDed. If no input - condition is given, all alarms are compressed."; - input { - leaf resource { - type leafref { - path "/alarms/shelved-alarms/shelved-alarm/resource"; - require-instance false; - } - description - "Compress the alarms with this resource."; - } - leaf alarm-type-id { - type leafref { - path "/alarms/shelved-alarms/shelved-alarm" - + "/alarm-type-id"; - require-instance false; - } - description - "Compress alarms with this 'alarm-type-id'."; - } - leaf alarm-type-qualifier { - type leafref { - path "/alarms/shelved-alarms/shelved-alarm" - + "/alarm-type-qualifier"; - require-instance false; - } - description - "Compress the alarms with this - 'alarm-type-qualifier'."; - } - } - output { - leaf compressed-alarms { - type uint32; - description - "Number of compressed alarm entries."; - } - } - } - } - list alarm-profile { - if-feature "alarm-profile"; - key "alarm-type-id alarm-type-qualifier-match resource"; - ordered-by user; - description - "This list is used to assign further information or - configuration for each alarm type. This module supports a - mechanism where the client can override the system-default - alarm severity levels. The 'alarm-profile' is also a useful - augmentation point for specific additions to alarm types."; - leaf alarm-type-id { - type alarm-type-id; - description - "The alarm type identifier to match."; - } - leaf alarm-type-qualifier-match { - type string; - description - "An XML Schema regular expression that is used to match the - alarm type qualifier."; - reference - "XML Schema Part 2: Datatypes Second Edition, - World Wide Web Consortium Recommendation - REC-xmlschema-2-20041028"; - } - leaf resource { - type resource-match; - description - "Specifies which resources to match."; - } - leaf description { - type string; - mandatory true; - description - "A description of the alarm profile."; - } - container alarm-severity-assignment-profile { - if-feature "severity-assignment"; - description - "The client can override the system-default severity - level."; - reference - "ITU-T Recommendation M.3100: - Generic network information model - ITU-T Recommendation M.3160: - Generic, protocol-neutral management information model"; - leaf-list severity-level { - type severity; - ordered-by user; - description - "Specifies the configured severity level(s) for the - matching alarm. If the alarm has several severity - levels, the leaf-list shall be given in rising severity - order. The original M3100/M3160 ASAP function only - allows for a one-to-one mapping between alarm type and - severity, but since YANG module supports stateful - alarms, the mapping must allow for several severity - levels. - - Assume a high-utilization alarm type with two thresholds - with the system-default severity levels of threshold1 = - warning and threshold2 = minor. Setting this leaf-list - to (minor, major) will assign the severity levels as - threshold1 = minor and threshold2 = major"; - } - } - } - } - - /* - * Notifications - */ - - notification alarm-notification { - description - "This notification is used to report a state change for an - alarm. The same notification is used for reporting a newly - raised alarm, a cleared alarm, or changing the text and/or - severity of an existing alarm."; - uses common-alarm-parameters; - uses alarm-state-change-parameters; - } - - notification alarm-inventory-changed { - description - "This notification is used to report that the list of possible - alarms has changed. This can happen when, for example, a new - software module is installed or a new physical card is - inserted."; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-hardware.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-hardware.yang deleted file mode 100755 index f444e26ee..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-hardware.yang +++ /dev/null @@ -1,1141 +0,0 @@ -module ietf-hardware { -yang-version 1.1; -namespace "urn:ietf:params:xml:ns:yang:ietf-hardware"; -prefix hw; - -import ietf-inet-types { - prefix inet; -} -import ietf-yang-types { - prefix yang; -} -import iana-hardware { - prefix ianahw; -} - -organization - "IETF NETMOD (Network Modeling) Working Group"; - -contact - "WG Web: <https://datatracker.ietf.org/wg/netmod/> - WG List: <mailto:netmod@ietf.org> - Editor: Andy Bierman - <mailto:andy@yumaworks.com> - Editor: Martin Bjorklund - <mailto:mbj@tail-f.com> - Editor: Jie Dong - <mailto:jie.dong@huawei.com> - Editor: Dan Romascanu - <mailto:dromasca@gmail.com>"; - -description - "This module contains a collection of YANG definitions for - managing hardware. - This data model is designed for the Network Management Datastore - Architecture (NMDA) defined in RFC 8342. - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 8348; see - the RFC itself for full legal notices."; - -revision 2018-03-13 { - description - "Initial revision."; - reference - "RFC 8348: A YANG Data Model for Hardware Management"; -} - -/* - * Features - */ - -feature entity-mib { - description - "This feature indicates that the device implements - the ENTITY-MIB."; - reference - "RFC 6933: Entity MIB (Version 4)"; -} - -feature hardware-state { - description - "Indicates that ENTITY-STATE-MIB objects are supported"; - reference - "RFC 4268: Entity State MIB"; -} - -feature hardware-sensor { - description - "Indicates that ENTITY-SENSOR-MIB objects are supported"; - reference - "RFC 3433: Entity Sensor Management Information Base"; -} - -/* - * Typedefs - */ - -typedef admin-state { - type enumeration { - enum unknown { - value 1; - description - "The resource is unable to report administrative state."; - } - enum locked { - value 2; - description - "The resource is administratively prohibited from use."; - } - enum shutting-down { - value 3; - description - "The resource usage is administratively limited to current - instances of use."; - } - enum unlocked { - value 4; - description - "The resource is not administratively prohibited from - use."; - } - } - description - "Represents the various possible administrative states."; - reference - "RFC 4268: Entity State MIB - EntityAdminState"; -} - -typedef oper-state { - type enumeration { - enum unknown { - value 1; - description - "The resource is unable to report its operational state."; - } - enum disabled { - value 2; - description - "The resource is totally inoperable."; - } - enum enabled { - value 3; - - description - "The resource is partially or fully operable."; - } - enum testing { - value 4; - description - "The resource is currently being tested and cannot - therefore report whether or not it is operational."; - } - } - description - "Represents the possible values of operational states."; - reference - "RFC 4268: Entity State MIB - EntityOperState"; -} - -typedef usage-state { - type enumeration { - enum unknown { - value 1; - description - "The resource is unable to report usage state."; - } - enum idle { - value 2; - description - "The resource is servicing no users."; - } - enum active { - value 3; - description - "The resource is currently in use, and it has sufficient - spare capacity to provide for additional users."; - } - enum busy { - value 4; - description - "The resource is currently in use, but it currently has no - spare capacity to provide for additional users."; - } - } - description - "Represents the possible values of usage states."; - reference - "RFC 4268: Entity State MIB - EntityUsageState"; -} - -typedef alarm-state { - type bits { - bit unknown { - position 0; - description - "The resource is unable to report alarm state."; - } - bit under-repair { - position 1; - description - "The resource is currently being repaired, which, depending - on the implementation, may make the other values in this - bit string not meaningful."; - } - bit critical { - position 2; - description - "One or more critical alarms are active against the - resource."; - } - bit major { - position 3; - description - "One or more major alarms are active against the - resource."; - } - bit minor { - position 4; - description - "One or more minor alarms are active against the - resource."; - } - bit warning { - position 5; - description - "One or more warning alarms are active against the - resource."; - } - bit indeterminate { - position 6; - description - "One or more alarms of whose perceived severity cannot be - determined are active against this resource."; - } - } - description - "Represents the possible values of alarm states. An alarm is a - persistent indication of an error or warning condition. - When no bits of this attribute are set, then no active alarms - are known against this component and it is not under repair."; - reference - "RFC 4268: Entity State MIB - EntityAlarmStatus"; -} - -typedef standby-state { - type enumeration { - enum unknown { - value 1; - description - "The resource is unable to report standby state."; - } - enum hot-standby { - value 2; - description - "The resource is not providing service, but it will be - immediately able to take over the role of the resource to - be backed up, without the need for initialization - activity, and will contain the same information as the - resource to be backed up."; - } - enum cold-standby { - value 3; - description - "The resource is to back up another resource, but it will - not be immediately able to take over the role of a - resource to be backed up and will require some - initialization activity."; - } - enum providing-service { - value 4; - description - "The resource is providing service."; - } - } - description - "Represents the possible values of standby states."; - reference - "RFC 4268: Entity State MIB - EntityStandbyStatus"; -} - -typedef sensor-value-type { - type enumeration { - enum other { - value 1; - description - "A measure other than those listed below."; - } - enum unknown { - value 2; - description - "An unknown measurement or arbitrary, relative numbers"; - } - enum volts-AC { - value 3; - description - "A measure of electric potential (alternating current)."; - } - enum volts-DC { - value 4; - description - "A measure of electric potential (direct current)."; - } - enum amperes { - value 5; - description - "A measure of electric current."; - } - enum watts { - value 6; - description - "A measure of power."; - } - enum hertz { - value 7; - description - "A measure of frequency."; - } - enum celsius { - value 8; - description - "A measure of temperature."; - } - enum percent-RH { - value 9; - description - "A measure of percent relative humidity."; - } - enum rpm { - value 10; - description - "A measure of shaft revolutions per minute."; - } - enum cmm { - value 11; - description - "A measure of cubic meters per minute (airflow)."; - } - enum truth-value { - value 12; - description - "Value is one of 1 (true) or 2 (false)"; - } - } - description - "A node using this data type represents the sensor measurement - data type associated with a physical sensor value. The actual - data units are determined by examining a node of this type - together with the associated sensor-value-scale node. - A node of this type SHOULD be defined together with nodes of - type sensor-value-scale and type sensor-value-precision. - These three types are used to identify the semantics of a node - of type sensor-value."; - reference - "RFC 3433: Entity Sensor Management Information Base - - EntitySensorDataType"; -} - -typedef sensor-value-scale { - type enumeration { - enum yocto { - value 1; - description - "Data scaling factor of 10^-24."; - } - enum zepto { - value 2; - description - "Data scaling factor of 10^-21."; - } - enum atto { - value 3; - description - "Data scaling factor of 10^-18."; - } - enum femto { - value 4; - description - "Data scaling factor of 10^-15."; - } - enum pico { - value 5; - description - "Data scaling factor of 10^-12."; - } - enum nano { - value 6; - description - "Data scaling factor of 10^-9."; - } - enum micro { - value 7; - description - "Data scaling factor of 10^-6."; - } - enum milli { - value 8; - description - "Data scaling factor of 10^-3."; - } - enum units { - value 9; - description - "Data scaling factor of 10^0."; - } - enum kilo { - value 10; - description - "Data scaling factor of 10^3."; - } - enum mega { - value 11; - description - "Data scaling factor of 10^6."; - } - enum giga { - value 12; - description - "Data scaling factor of 10^9."; - } - enum tera { - value 13; - description - "Data scaling factor of 10^12."; - } - enum peta { - value 14; - description - "Data scaling factor of 10^15."; - } - enum exa { - value 15; - description - "Data scaling factor of 10^18."; - } - enum zetta { - value 16; - description - "Data scaling factor of 10^21."; - } - enum yotta { - value 17; - description - "Data scaling factor of 10^24."; - } - } - description - "A node using this data type represents a data scaling factor, - represented with an International System of Units (SI) prefix. - The actual data units are determined by examining a node of - this type together with the associated sensor-value-type. - A node of this type SHOULD be defined together with nodes of - type sensor-value-type and type sensor-value-precision. - Together, associated nodes of these three types are used to - identify the semantics of a node of type sensor-value."; - reference - "RFC 3433: Entity Sensor Management Information Base - - EntitySensorDataScale"; -} - -typedef sensor-value-precision { - type int8 { - range "-8 .. 9"; - } - description - "A node using this data type represents a sensor value - precision range. - A node of this type SHOULD be defined together with nodes of - type sensor-value-type and type sensor-value-scale. Together, - associated nodes of these three types are used to identify the - semantics of a node of type sensor-value. - If a node of this type contains a value in the range 1 to 9, - it represents the number of decimal places in the fractional - part of an associated sensor-value fixed-point number. - If a node of this type contains a value in the range -8 to -1, - it represents the number of accurate digits in the associated - sensor-value fixed-point number. - The value zero indicates the associated sensor-value node is - not a fixed-point number. - Server implementers must choose a value for the associated - sensor-value-precision node so that the precision and accuracy - of the associated sensor-value node is correctly indicated. - For example, a component representing a temperature sensor - that can measure 0 to 100 degrees C in 0.1 degree - increments, +/- 0.05 degrees, would have a - sensor-value-precision value of '1', a sensor-value-scale - value of 'units', and a sensor-value ranging from '0' to - '1000'. The sensor-value would be interpreted as - 'degrees C * 10'."; - reference - "RFC 3433: Entity Sensor Management Information Base - - EntitySensorPrecision"; -} - -typedef sensor-value { - type int32 { - range "-1000000000 .. 1000000000"; - } - description - "A node using this data type represents a sensor value. - A node of this type SHOULD be defined together with nodes of - type sensor-value-type, type sensor-value-scale, and - type sensor-value-precision. Together, associated nodes of - those three types are used to identify the semantics of a node - of this data type. - The semantics of a node using this data type are determined by - the value of the associated sensor-value-type node. - If the associated sensor-value-type node is equal to 'voltsAC', - 'voltsDC', 'amperes', 'watts', 'hertz', 'celsius', or 'cmm', - then a node of this type MUST contain a fixed-point number - ranging from -999,999,999 to +999,999,999. The value - -1000000000 indicates an underflow error. The value - +1000000000 indicates an overflow error. The - sensor-value-precision indicates how many fractional digits - are represented in the associated sensor-value node. - If the associated sensor-value-type node is equal to - 'percentRH', then a node of this type MUST contain a number - ranging from 0 to 100. - If the associated sensor-value-type node is equal to 'rpm', - then a node of this type MUST contain a number ranging from - -999,999,999 to +999,999,999. - If the associated sensor-value-type node is equal to - 'truth-value', then a node of this type MUST contain either the - value 1 (true) or the value 2 (false). - If the associated sensor-value-type node is equal to 'other' or - 'unknown', then a node of this type MUST contain a number - ranging from -1000000000 to 1000000000."; - reference - "RFC 3433: Entity Sensor Management Information Base - - EntitySensorValue"; -} - -typedef sensor-status { - type enumeration { - enum ok { - value 1; - description - "Indicates that the server can obtain the sensor value."; - } - enum unavailable { - value 2; - description - "Indicates that the server presently cannot obtain the - sensor value."; - } - enum nonoperational { - value 3; - description - "Indicates that the server believes the sensor is broken. - The sensor could have a hard failure (disconnected wire) - or a soft failure such as out-of-range, jittery, or wildly - fluctuating readings."; - } - } - description - "A node using this data type represents the operational status - of a physical sensor."; - reference - "RFC 3433: Entity Sensor Management Information Base - - EntitySensorStatus"; -} - -/* - * Data nodes - */ - -container hardware { - description - "Data nodes representing components. - If the server supports configuration of hardware components, - then this data model is instantiated in the configuration - datastores supported by the server. The leaf-list 'datastore' - for the module 'ietf-hardware' in the YANG library provides - this information."; - - leaf last-change { - type yang:date-and-time; - config false; - description - "The time the '/hardware/component' list changed in the - operational state."; - } - - list component { - key name; - description - "List of components. - When the server detects a new hardware component, it - initializes a list entry in the operational state. - If the server does not support configuration of hardware - components, list entries in the operational state are - initialized with values for all nodes as detected by the - implementation. - Otherwise, this procedure is followed: - 1. If there is an entry in the '/hardware/component' list - in the intended configuration with values for the nodes - 'class', 'parent', and 'parent-rel-pos' that are equal - to the detected values, then the list entry in the - operational state is initialized with the configured - values, including the 'name'. - 2. Otherwise (i.e., there is no matching configuration - entry), the list entry in the operational state is - initialized with values for all nodes as detected by - the implementation. - If the '/hardware/component' list in the intended - configuration is modified, then the system MUST behave as if - it re-initializes itself and follow the procedure in (1)."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalEntry"; - - leaf name { - type string; - description - "The name assigned to this component. - This name is not required to be the same as - entPhysicalName."; - } - - leaf class { - type identityref { - base ianahw:hardware-class; - } - mandatory true; - description - "An indication of the general hardware type of the - component."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalClass"; - } - - leaf physical-index { - if-feature entity-mib; - type int32 { - range "1..2147483647"; - } - config false; - description - "The entPhysicalIndex for the entPhysicalEntry represented - by this list entry."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex"; - } - - leaf description { - type string; - config false; - description - "A textual description of the component. This node should - contain a string that identifies the manufacturer's name - for the component and should be set to a distinct value - for each version or model of the component."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalDescr"; - } - - leaf parent { - type leafref { - path "../../component/name"; - require-instance false; - } - description - "The name of the component that physically contains this - component. - If this leaf is not instantiated, it indicates that this - component is not contained in any other component. - In the event that a physical component is contained by - more than one physical component (e.g., double-wide - modules), this node contains the name of one of these - components. An implementation MUST use the same name - every time this node is instantiated."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalContainedIn"; - } - - leaf parent-rel-pos { - type int32 { - range "0 .. 2147483647"; - } - description - "An indication of the relative position of this child - component among all its sibling components. Sibling - components are defined as components that: - o share the same value of the 'parent' node and - o share a common base identity for the 'class' node. - Note that the last rule gives implementations flexibility - in how components are numbered. For example, some - implementations might have a single number series for all - components derived from 'ianahw:port', while some others - might have different number series for different - components with identities derived from 'ianahw:port' (for - example, one for registered jack 45 (RJ45) and one for - small form-factor pluggable (SFP))."; - - reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalParentRelPos"; - } - - leaf-list contains-child { - type leafref { - path "../../component/name"; - } - config false; - description - "The name of the contained component."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalChildIndex"; - } - - leaf hardware-rev { - type string; - config false; - description - "The vendor-specific hardware revision string for the - component. The preferred value is the hardware revision - identifier actually printed on the component itself (if - present)."; - reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalHardwareRev"; - } - - leaf firmware-rev { - type string; - config false; - description - "The vendor-specific firmware revision string for the - component."; - reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalFirmwareRev"; - } - - leaf software-rev { - type string; - config false; - - description - "The vendor-specific software revision string for the - component."; - reference - "RFC 6933: Entity MIB (Version 4) - - entPhysicalSoftwareRev"; - } - - leaf serial-num { - type string; - config false; - description - "The vendor-specific serial number string for the - component. The preferred value is the serial number - string actually printed on the component itself (if - present)."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalSerialNum"; - } - - leaf mfg-name { - type string; - config false; - description - "The name of the manufacturer of this physical component. - The preferred value is the manufacturer name string - actually printed on the component itself (if present). - Note that comparisons between instances of the - 'model-name', 'firmware-rev', 'software-rev', and - 'serial-num' nodes are only meaningful amongst components - with the same value of 'mfg-name'. - If the manufacturer name string associated with the - physical component is unknown to the server, then this - node is not instantiated."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName"; - } - - leaf model-name { - type string; - config false; - description - "The vendor-specific model name identifier string - associated with this physical component. The preferred - value is the customer-visible part number, which may be - printed on the component itself. - If the model name string associated with the physical - component is unknown to the server, then this node is not - instantiated."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalModelName"; - } - - leaf alias { - type string; - description - "An 'alias' name for the component, as specified by a - network manager, that provides a non-volatile 'handle' for - the component. - If no configured value exists, the server MAY set the - value of this node to a locally unique value in the - operational state. - A server implementation MAY map this leaf to the - entPhysicalAlias MIB object. Such an implementation needs - to use some mechanism to handle the differences in size - and characters allowed between this leaf and - entPhysicalAlias. The definition of such a mechanism is - outside the scope of this document."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalAlias"; - } - - leaf asset-id { - type string; - description - "This node is a user-assigned asset tracking identifier for - the component. - A server implementation MAY map this leaf to the - entPhysicalAssetID MIB object. Such an implementation - needs to use some mechanism to handle the differences in - size and characters allowed between this leaf and - entPhysicalAssetID. The definition of such a mechanism is - outside the scope of this document."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID"; - } - - leaf is-fru { - type boolean; - config false; - - description - "This node indicates whether or not this component is - considered a 'field-replaceable unit' by the vendor. If - this node contains the value 'true', then this component - identifies a field-replaceable unit. For all components - that are permanently contained within a field-replaceable - unit, the value 'false' should be returned for this - node."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU"; - } - - leaf mfg-date { - type yang:date-and-time; - config false; - description - "The date of manufacturing of the managed component."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate"; - } - - leaf-list uri { - type inet:uri; - description - "This node contains identification information about the - component."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalUris"; - } - - leaf uuid { - type yang:uuid; - config false; - description - "A Universally Unique Identifier of the component."; - reference - "RFC 6933: Entity MIB (Version 4) - entPhysicalUUID"; - } - - container state { - if-feature hardware-state; - description - "State-related nodes"; - reference - "RFC 4268: Entity State MIB"; - - leaf state-last-changed { - type yang:date-and-time; - config false; - description - "The date and time when the value of any of the - admin-state, oper-state, usage-state, alarm-state, or - standby-state changed for this component. - If there has been no change since the last - re-initialization of the local system, this node - contains the date and time of local system - initialization. If there has been no change since the - component was added to the local system, this node - contains the date and time of the insertion."; - reference - "RFC 4268: Entity State MIB - entStateLastChanged"; - } - - leaf admin-state { - type admin-state; - description - "The administrative state for this component. - This node refers to a component's administrative - permission to service both other components within its - containment hierarchy as well other users of its - services defined by means outside the scope of this - module. - Some components exhibit only a subset of the remaining - administrative state values. Some components cannot be - locked; hence, this node exhibits only the 'unlocked' - state. Other components cannot be shut down gracefully; - hence, this node does not exhibit the 'shutting-down' - state."; - reference - "RFC 4268: Entity State MIB - entStateAdmin"; - } - - leaf oper-state { - type oper-state; - config false; - description - "The operational state for this component. - Note that this node does not follow the administrative - state. An administrative state of 'down' does not - predict an operational state of 'disabled'. - Note that some implementations may not be able to - accurately report oper-state while the admin-state node - has a value other than 'unlocked'. In these cases, this - node MUST have a value of 'unknown'."; - reference - "RFC 4268: Entity State MIB - entStateOper"; - } - - leaf usage-state { - type usage-state; - config false; - description - "The usage state for this component. - This node refers to a component's ability to service - more components in a containment hierarchy. - Some components will exhibit only a subset of the usage - state values. Components that are unable to ever - service any components within a containment hierarchy - will always have a usage state of 'busy'. In some - cases, a component will be able to support only one - other component within its containment hierarchy and - will therefore only exhibit values of 'idle' and - 'busy'."; - reference - "RFC 4268: Entity State MIB - entStateUsage"; - } - - leaf alarm-state { - type alarm-state; - config false; - description - "The alarm state for this component. It does not - include the alarms raised on child components within its - containment hierarchy."; - reference - "RFC 4268: Entity State MIB - entStateAlarm"; - } - - leaf standby-state { - type standby-state; - config false; - description - "The standby state for this component. - Some components will exhibit only a subset of the - remaining standby state values. If this component - cannot operate in a standby role, the value of this node - will always be 'providing-service'."; - reference - "RFC 4268: Entity State MIB - entStateStandby"; - } - } - - container sensor-data { - when 'derived-from-or-self(../class, - "ianahw:sensor")' { - description - "Sensor data nodes present for any component of type - 'sensor'"; - } - if-feature hardware-sensor; - config false; - - description - "Sensor-related nodes."; - reference - "RFC 3433: Entity Sensor Management Information Base"; - - leaf value { - type sensor-value; - description - "The most recent measurement obtained by the server - for this sensor. - A client that periodically fetches this node should also - fetch the nodes 'value-type', 'value-scale', and - 'value-precision', since they may change when the value - is changed."; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorValue"; - } - - leaf value-type { - type sensor-value-type; - description - "The type of data units associated with the - sensor value"; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorType"; - } - leaf value-scale { - type sensor-value-scale; - description - "The (power of 10) scaling factor associated - with the sensor value"; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorScale"; - } - - leaf value-precision { - type sensor-value-precision; - description - "The number of decimal places of precision - associated with the sensor value"; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorPrecision"; - } - - leaf oper-status { - type sensor-status; - description - "The operational status of the sensor."; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorOperStatus"; - } - - leaf units-display { - type string; - description - "A textual description of the data units that should be - used in the display of the sensor value."; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorUnitsDisplay"; - } - - leaf value-timestamp { - type yang:date-and-time; - description - "The time the status and/or value of this sensor was last - obtained by the server."; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorValueTimeStamp"; - } - leaf value-update-rate { - type uint32; - units "milliseconds"; - description - "An indication of the frequency that the server updates - the associated 'value' node, represented in - milliseconds. The value zero indicates: - - the sensor value is updated on demand (e.g., - when polled by the server for a get-request), - - the sensor value is updated when the sensor - value changes (event-driven), or - - the server does not know the update rate."; - reference - "RFC 3433: Entity Sensor Management Information Base - - entPhySensorValueUpdateRate"; - } - } - } -} - -/* - * Notifications - */ - -notification hardware-state-change { - description - "A hardware-state-change notification is generated when the - value of /hardware/last-change changes in the operational - state."; - reference - "RFC 6933: Entity MIB (Version 4) - entConfigChange"; -} - -notification hardware-state-oper-enabled { - if-feature hardware-state; - description - "A hardware-state-oper-enabled notification signifies that a - component has transitioned into the 'enabled' state."; - - leaf name { - type leafref { - path "/hardware/component/name"; - } - - description - "The name of the component that has transitioned into the - 'enabled' state."; - } - leaf admin-state { - type leafref { - path "/hardware/component/state/admin-state"; - } - description - "The administrative state for the component."; - } - leaf alarm-state { - type leafref { - path "/hardware/component/state/alarm-state"; - } - description - "The alarm state for the component."; - } - reference - "RFC 4268: Entity State MIB - entStateOperEnabled"; -} - -notification hardware-state-oper-disabled { - if-feature hardware-state; - description - "A hardware-state-oper-disabled notification signifies that a - component has transitioned into the 'disabled' state."; - - leaf name { - type leafref { - path "/hardware/component/name"; - } - description - "The name of the component that has transitioned into the - 'disabled' state."; - } - leaf admin-state { - type leafref { - path "/hardware/component/state/admin-state"; - } - description - "The administrative state for the component."; - } - leaf alarm-state { - type leafref { - path "/hardware/component/state/alarm-state"; - } - - description - "The alarm state for the component."; - } - reference - "RFC 4268: Entity State MIB - entStateOperDisabled"; -} - -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-interfaces.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-interfaces.yang deleted file mode 100644 index 8dae9d3e2..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/ietf-interfaces.yang +++ /dev/null @@ -1,1073 +0,0 @@ -module ietf-interfaces { - yang-version 1.1; - namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; - prefix if; - - import ietf-yang-types { - prefix yang; - } - - organization - "IETF NETMOD (Network Modeling) Working Group"; - - contact - "WG Web: <https://datatracker.ietf.org/wg/netmod/> - WG List: <mailto:netmod@ietf.org> - Editor: Martin Bjorklund - <mailto:mbj@tail-f.com>"; - - description - "This module contains a collection of YANG definitions for - managing network interfaces. - Copyright (c) 2018 IETF Trust and the persons identified as - authors of the code. All rights reserved. - Redistribution and use in source and binary forms, with or - without modification, is permitted pursuant to, and subject - to the license terms contained in, the Simplified BSD License - set forth in Section 4.c of the IETF Trust's Legal Provisions - Relating to IETF Documents - (https://trustee.ietf.org/license-info). - This version of this YANG module is part of RFC 8343; see - the RFC itself for full legal notices."; - - revision 2018-02-20 { - description - "Updated to support NMDA."; - reference - "RFC 8343: A YANG Data Model for Interface Management"; - } - - revision 2014-05-08 { - description - "Initial revision."; - reference - "RFC 7223: A YANG Data Model for Interface Management"; - } - - /* - * Typedefs - */ - - typedef interface-ref { - type leafref { - path "/if:interfaces/if:interface/if:name"; - } - description - "This type is used by data models that need to reference - interfaces."; - } - - /* - * Identities - */ - - identity interface-type { - description - "Base identity from which specific interface types are - derived."; - } - - /* - * Features - */ - - feature arbitrary-names { - description - "This feature indicates that the device allows user-controlled - interfaces to be named arbitrarily."; - } - feature pre-provisioning { - description - "This feature indicates that the device supports - pre-provisioning of interface configuration, i.e., it is - possible to configure an interface whose physical interface - hardware is not present on the device."; - } - feature if-mib { - description - "This feature indicates that the device implements - the IF-MIB."; - reference - "RFC 2863: The Interfaces Group MIB"; - } - - /* - * Data nodes - */ - - container interfaces { - description - "Interface parameters."; - - list interface { - key "name"; - - description - "The list of interfaces on the device. - The status of an interface is available in this list in the - operational state. If the configuration of a - system-controlled interface cannot be used by the system - (e.g., the interface hardware present does not match the - interface type), then the configuration is not applied to - the system-controlled interface shown in the operational - state. If the configuration of a user-controlled interface - cannot be used by the system, the configured interface is - not instantiated in the operational state. - System-controlled interfaces created by the system are - always present in this list in the operational state, - whether or not they are configured."; - - leaf name { - type string; - description - "The name of the interface. - A device MAY restrict the allowed values for this leaf, - possibly depending on the type of the interface. - For system-controlled interfaces, this leaf is the - device-specific name of the interface. - If a client tries to create configuration for a - system-controlled interface that is not present in the - operational state, the server MAY reject the request if - the implementation does not support pre-provisioning of - interfaces or if the name refers to an interface that can - never exist in the system. A Network Configuration - Protocol (NETCONF) server MUST reply with an rpc-error - with the error-tag 'invalid-value' in this case. - If the device supports pre-provisioning of interface - configuration, the 'pre-provisioning' feature is - advertised. - If the device allows arbitrarily named user-controlled - interfaces, the 'arbitrary-names' feature is advertised. - When a configured user-controlled interface is created by - the system, it is instantiated with the same name in the - operational state. - A server implementation MAY map this leaf to the ifName - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifName. The definition of - such a mechanism is outside the scope of this document."; - reference - "RFC 2863: The Interfaces Group MIB - ifName"; - } - - leaf description { - type string; - description - "A textual description of the interface. - A server implementation MAY map this leaf to the ifAlias - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifAlias. The definition of - such a mechanism is outside the scope of this document. - Since ifAlias is defined to be stored in non-volatile - storage, the MIB implementation MUST map ifAlias to the - value of 'description' in the persistently stored - configuration."; - reference - "RFC 2863: The Interfaces Group MIB - ifAlias"; - } - - leaf type { - type identityref { - base interface-type; - } - mandatory true; - description - "The type of the interface. - When an interface entry is created, a server MAY - initialize the type leaf with a valid value, e.g., if it - is possible to derive the type from the name of the - interface. - If a client tries to set the type of an interface to a - value that can never be used by the system, e.g., if the - type is not supported or if the type does not match the - name of the interface, the server MUST reject the request. - A NETCONF server MUST reply with an rpc-error with the - error-tag 'invalid-value' in this case."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf enabled { - type boolean; - default "true"; - description - "This leaf contains the configured, desired state of the - interface. - Systems that implement the IF-MIB use the value of this - leaf in the intended configuration to set - IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry - has been initialized, as described in RFC 2863. - Changes in this leaf in the intended configuration are - reflected in ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf link-up-down-trap-enable { - if-feature if-mib; - type enumeration { - enum enabled { - value 1; - description - "The device will generate linkUp/linkDown SNMP - notifications for this interface."; - } - enum disabled { - value 2; - description - "The device will not generate linkUp/linkDown SNMP - notifications for this interface."; - } - } - description - "Controls whether linkUp/linkDown SNMP notifications - should be generated for this interface. - If this node is not configured, the value 'enabled' is - operationally used by the server for interfaces that do - not operate on top of any other interface (i.e., there are - no 'lower-layer-if' entries), and 'disabled' otherwise."; - reference - "RFC 2863: The Interfaces Group MIB - - ifLinkUpDownTrapEnable"; - } - - leaf admin-status { - if-feature if-mib; - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "Not ready to pass packets and not in some test mode."; - } - enum testing { - value 3; - description - "In some test mode."; - } - } - config false; - mandatory true; - description - "The desired state of the interface. - This leaf has the same read semantics as ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf oper-status { - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - - description - "The interface does not pass any packets."; - } - enum testing { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum unknown { - value 4; - description - "Status cannot be determined for some reason."; - } - enum dormant { - value 5; - description - "Waiting for some external event."; - } - enum not-present { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum lower-layer-down { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - config false; - mandatory true; - description - "The current operational state of the interface. - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - - leaf last-change { - type yang:date-and-time; - config false; - description - "The time the interface entered its current operational - state. If the current state was entered prior to the - last re-initialization of the local network management - subsystem, then this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - - leaf if-index { - if-feature if-mib; - type int32 { - range "1..2147483647"; - } - config false; - mandatory true; - description - "The ifIndex value for the ifEntry represented by this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifIndex"; - } - - leaf phys-address { - type yang:phys-address; - config false; - description - "The interface's address at its protocol sub-layer. For - example, for an 802.x interface, this object normally - contains a Media Access Control (MAC) address. The - interface's media-specific modules must define the bit - and byte ordering and the format of the value of this - object. For interfaces that do not have such an address - (e.g., a serial line), this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; - } - - leaf-list higher-layer-if { - type interface-ref; - config false; - description - "A list of references to interfaces layered on top of this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf-list lower-layer-if { - type interface-ref; - config false; - - description - "A list of references to interfaces layered underneath this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf speed { - type yang:gauge64; - units "bits/second"; - config false; - description - "An estimate of the interface's current bandwidth in bits - per second. For interfaces that do not vary in - bandwidth or for those where no accurate estimation can - be made, this node should contain the nominal bandwidth. - For interfaces that have no concept of bandwidth, this - node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - - ifSpeed, ifHighSpeed"; - } - - container statistics { - config false; - description - "A collection of interface-related statistics objects."; - - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - - leaf in-octets { - type yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - - leaf in-unicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - - leaf in-broadcast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - - leaf in-multicast-pkts { - type yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - - leaf in-discards { - type yang:counter32; - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - - leaf in-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - - leaf in-unknown-protos { - type yang:counter32; - - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - - leaf out-octets { - type yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - - leaf out-unicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - - leaf out-broadcast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - - leaf out-multicast-pkts { - type yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - - leaf out-discards { - type yang:counter32; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - - leaf out-errors { - type yang:counter32; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - } - - } - } - - /* - * Legacy typedefs - */ - - typedef interface-state-ref { - type leafref { - path "/if:interfaces-state/if:interface/if:name"; - } - status deprecated; - description - "This type is used by data models that need to reference - the operationally present interfaces."; - } - - /* - * Legacy operational state data nodes - */ - - container interfaces-state { - config false; - status deprecated; - description - "Data nodes for the operational state of interfaces."; - - list interface { - key "name"; - status deprecated; - - description - "The list of interfaces on the device. - System-controlled interfaces created by the system are - always present in this list, whether or not they are - configured."; - - leaf name { - type string; - status deprecated; - description - "The name of the interface. - A server implementation MAY map this leaf to the ifName - MIB object. Such an implementation needs to use some - mechanism to handle the differences in size and characters - allowed between this leaf and ifName. The definition of - such a mechanism is outside the scope of this document."; - reference - "RFC 2863: The Interfaces Group MIB - ifName"; - } - - leaf type { - type identityref { - base interface-type; - } - mandatory true; - status deprecated; - description - "The type of the interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifType"; - } - - leaf admin-status { - if-feature if-mib; - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "Not ready to pass packets and not in some test mode."; - } - enum testing { - value 3; - description - "In some test mode."; - } - } - mandatory true; - status deprecated; - description - "The desired state of the interface. - This leaf has the same read semantics as ifAdminStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; - } - - leaf oper-status { - type enumeration { - enum up { - value 1; - description - "Ready to pass packets."; - } - enum down { - value 2; - description - "The interface does not pass any packets."; - } - enum testing { - value 3; - description - "In some test mode. No operational packets can - be passed."; - } - enum unknown { - value 4; - description - "Status cannot be determined for some reason."; - } - enum dormant { - value 5; - description - "Waiting for some external event."; - } - enum not-present { - value 6; - description - "Some component (typically hardware) is missing."; - } - enum lower-layer-down { - value 7; - description - "Down due to state of lower-layer interface(s)."; - } - } - mandatory true; - status deprecated; - description - "The current operational state of the interface. - This leaf has the same semantics as ifOperStatus."; - reference - "RFC 2863: The Interfaces Group MIB - ifOperStatus"; - } - - leaf last-change { - type yang:date-and-time; - status deprecated; - description - "The time the interface entered its current operational - state. If the current state was entered prior to the - last re-initialization of the local network management - subsystem, then this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifLastChange"; - } - - leaf if-index { - if-feature if-mib; - type int32 { - range "1..2147483647"; - } - mandatory true; - status deprecated; - description - "The ifIndex value for the ifEntry represented by this - interface."; - - reference - "RFC 2863: The Interfaces Group MIB - ifIndex"; - } - - leaf phys-address { - type yang:phys-address; - status deprecated; - description - "The interface's address at its protocol sub-layer. For - example, for an 802.x interface, this object normally - contains a Media Access Control (MAC) address. The - interface's media-specific modules must define the bit - and byte ordering and the format of the value of this - object. For interfaces that do not have such an address - (e.g., a serial line), this node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; - } - - leaf-list higher-layer-if { - type interface-state-ref; - status deprecated; - description - "A list of references to interfaces layered on top of this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf-list lower-layer-if { - type interface-state-ref; - status deprecated; - description - "A list of references to interfaces layered underneath this - interface."; - reference - "RFC 2863: The Interfaces Group MIB - ifStackTable"; - } - - leaf speed { - type yang:gauge64; - units "bits/second"; - status deprecated; - description - "An estimate of the interface's current bandwidth in bits - per second. For interfaces that do not vary in - bandwidth or for those where no accurate estimation can - be made, this node should contain the nominal bandwidth. - For interfaces that have no concept of bandwidth, this - node is not present."; - reference - "RFC 2863: The Interfaces Group MIB - - ifSpeed, ifHighSpeed"; - } - - container statistics { - status deprecated; - description - "A collection of interface-related statistics objects."; - - leaf discontinuity-time { - type yang:date-and-time; - mandatory true; - status deprecated; - description - "The time on the most recent occasion at which any one or - more of this interface's counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local management - subsystem, then this node contains the time the local - management subsystem re-initialized itself."; - } - - leaf in-octets { - type yang:counter64; - status deprecated; - description - "The total number of octets received on the interface, - including framing characters. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } - - leaf in-unicast-pkts { - type yang:counter64; - status deprecated; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } - - leaf in-broadcast-pkts { - type yang:counter64; - status deprecated; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } - - leaf in-multicast-pkts { - type yang:counter64; - status deprecated; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } - - leaf in-discards { - type yang:counter32; - status deprecated; - - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } - - leaf in-errors { - type yang:counter32; - status deprecated; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } - - leaf in-unknown-protos { - type yang:counter32; - status deprecated; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } - - leaf out-octets { - type yang:counter64; - status deprecated; - description - "The total number of octets transmitted out of the - interface, including framing characters. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } - - leaf out-unicast-pkts { - type yang:counter64; - status deprecated; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } - - leaf out-broadcast-pkts { - type yang:counter64; - status deprecated; - - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } - - leaf out-multicast-pkts { - type yang:counter64; - status deprecated; - description - "The total number of packets that higher-level protocols - requested be transmitted and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } - - leaf out-discards { - type yang:counter32; - status deprecated; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } - - leaf out-errors { - type yang:counter32; - status deprecated; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - Discontinuities in the value of this counter can occur - at re-initialization of the management system and at - other times as indicated by the value of - 'discontinuity-time'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } - } - } - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/network-topology-simulator.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/network-topology-simulator.yang deleted file mode 100644 index ac2cf8dd3..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/network-topology-simulator.yang +++ /dev/null @@ -1,297 +0,0 @@ -module network-topology-simulator { - yang-version 1.1; - namespace "urn:onf:params:xml:ns:yang:network-topology-simulator"; - prefix network-topology-simulator; - - import ietf-inet-types { - prefix inet; - } - - organization - "Melacon"; - contact - "Web: <https://github.com/Melacon> - Editors: Alex Stancu - <mailto:stancu.liviualex@gmail.com>"; - description - "This module contains a collection of YANG definitions for managing the Network Topology Simulator."; - - revision 2019-10-25 { - description - "Modify notifications. Add VES message configuration options."; - reference - "O-RAN SC SIM project"; - } - revision 2019-06-07 { - description - "Modify controller details."; - reference - "O-RAN SC SIM project"; - } - revision 2019-03-07 { - description - "Initial version"; - reference - "O-RAN SC SIM project"; - } - - typedef operational-state-type { - type enumeration { - enum not-specified { - description - "none"; - } - enum running { - description - "none"; - } - enum created { - description - "none"; - } - enum exited { - description - "none"; - } - } - description - "The operation state of the simulated device."; - } - - typedef authentication-method-type { - type enumeration { - enum no-auth { - description - "no security (http)"; - } - enum cert-only { - description - "auth by certificate (https)"; - } - enum basic-auth { - description - "auth by basic auth username and password (https)"; - } - enum cert-basic-auth { - description - "auth by certificate and basic auth username / password (https)"; - } - } - description - "The authentication method for VES messaging."; - } - - typedef percent { - type decimal64 { - fraction-digits 2; - range "0 .. 100"; - } - description - "Percentage"; - } - - grouping controller-details-type-g { - leaf controller-ip { - type inet:ip-address; - description - "The IP Address of the SDN Controller."; - } - leaf controller-port { - type inet:port-number; - description - "The Port of the SDN Controller."; - } - leaf controller-username { - type string; - description - "The Username of the SDN Controller."; - } - leaf controller-password { - type string; - description - "The Password of the SDN Controller."; - } - description - "none"; - } - - grouping simulated-devices-type-g { - leaf uuid { - type string; - description - "The UUID of the simulated device."; - } - leaf device-ip { - type string; - description - "The IP Address of the simulated device."; - } - leaf-list device-port { - type uint32; - description - "A NETCONF endpoint (port) of the simulated device."; - } - leaf is-mounted { - type boolean; - description - "Specifies if the simulated device is mounted in the SDN Controller."; - } - leaf operational-state { - type operational-state-type; - description - "Specifies the operational state of the simulated device."; - } - description - "none"; - } - - container simulator-config { - description - "Configuration container of the simulator."; - leaf simulated-devices { - type uint32; - default "0"; - description - "The number of devices to be simulated."; - } - leaf mounted-devices { - type uint32; - default "0"; - description - "The number of devices to be mounted in ODL. The configured number should not exceed the number of mounted devices."; - } - container notification-config { - leaf fault-notification-delay-period { - type uint32; - default "0"; - description - "Interval in seconds between two consecutive notifications. If the attribute is set to 0, nofitications are not generated."; - } - leaf ves-heartbeat-period { - type uint32; - default "0"; - description - "Interval in seconds between two VES heartbeat messages. If the attribute is set to 0, heartbeat messages are not generated."; - } - leaf is-netconf-available { - type boolean; - default "true"; - description - "If set to 'true', NETCONF notifications will be generated."; - } - leaf is-ves-available { - type boolean; - default "true"; - description - "If set to 'true', VES messages will be generated."; - } - description - "none"; - } - container controller-details { - uses controller-details-type-g; - description - "The connectivity details of the SDN Controller where we want to mount our simulated devices."; - } - container ves-endpoint-details { - must 'ves-registration = "false" or ../mounted-devices = 0' { - error-message "VES registration cannot be active while devices are still mounted to ODL not via VES."; - } - leaf ves-endpoint-ip { - type inet:ip-address; - description - "The IP Address of the VES Endpoint."; - } - leaf ves-endpoint-port { - type inet:port-number; - description - "The Port of the VES Endpoint."; - } - leaf ves-endpoint-auth-method { - type authentication-method-type; - default "no-auth"; - description - "The type of the authentication to be used with the VES Endpoint."; - } - leaf ves-endpoint-username { - when "../ves-endpoint-auth-method = 'basic-auth' or ../ves-endpoint-auth-method = 'cert-basic-auth'"; - type string; - description - "The Username to be used to authenticate to the VES Endpoint."; - } - leaf ves-endpoint-password { - when "../ves-endpoint-auth-method = 'basic-auth' or ../ves-endpoint-auth-method = 'cert-basic-auth'"; - type string; - description - "The Password to be used to authenticate to the VES Endpoint."; - } - leaf ves-endpoint-certificate { - when "../ves-endpoint-auth-method = 'cert-only' or ../ves-endpoint-auth-method = 'cert-basic-auth'"; - type string; - description - "The Certificate to be used to authenticate to the VES Endpoint."; - } - leaf ves-registration { - type boolean; - default "false"; - description - "If this is set to 'True', the simulated devices will automatically send a pnfRegistration VES message when they start. This cannot be set to 'True' if we already have 'mounted-devices' greater that 0, because we already mounted the devices directly to ODL."; - } - description - "none"; - } - } - container simulator-status { - config false; - container simulation-usage-details { - config false; - leaf running-simulated-devices { - type uint32; - description - "The current number of running simulated devices."; - } - leaf running-mounted-devices { - type uint32; - description - "The current number of running simulated devices that are mounted in ODL."; - } - leaf base-netconf-port { - type uint32; - default "30000"; - description - "The starting port number for the NETCONF connections exposed."; - } - leaf cpu-usage { - type percent; - description - "Specifies the CPU load generated by this simulated device."; - } - leaf mem-usage { - type uint32; - description - "Specifies the RAM in MB used by this simulated device."; - } - description - "The details about the simulation, including resources consumed."; - } - list simulated-devices-list { - key "uuid"; - config false; - uses simulated-devices-type-g; - description - "The list of the devices that are currently simulated."; - } - description - "State data container of the simulator."; - } - - rpc restart-simulation { - description - "Operation to restart all the simulated devices with the new configuration of the simulator."; - } - - rpc add-key-pair-to-odl { - description - "Operation to add a key pair signed by the NTS to OpenDaylight, such that it can connect to devices using TLS."; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-fm.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-fm.yang deleted file mode 100644 index 92238aade..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-fm.yang +++ /dev/null @@ -1,168 +0,0 @@ -module o-ran-fm { - yang-version 1.1; - namespace "urn:o-ran:fm:1.0"; - prefix "o-ran-fm"; - - import ietf-yang-types { - prefix yang; - revision-date 2013-07-15; - } - - organization "O-RAN Alliance"; - - contact - "www.o-ran.org"; - - description - "This module defines alarm reporting mechanism. - - Copyright 2019 the O-RAN Alliance. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the above disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the above disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the Members of the O-RAN Alliance nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission."; - - revision "2019-02-04" { - description - "version 1.0.0 - - 1) imported model from xRAN - 2) changed namespace and reference from xran to o-ran"; - - reference "ORAN-WG4.M.0-v01.00"; - } - - grouping alarm { - description - "Gropuping which can uniquely identify alarm"; - - leaf fault-id { - type uint16; - mandatory true; - - description - "Fault specific Id that identifies the fault."; - } - - leaf fault-source { - type string { - length "1..255"; - } - mandatory true; - - description - "Represents the Object or source that is suspected to be faulty."; - } - - list affected-objects { - key name; - leaf name { - type string { - length "1..255"; - } - mandatory true; - - description - "Represents the Object or source that is suspected to be affected by this fault"; - } - min-elements 1; - max-elements 100; - - description - "List of affected-objects"; - } - - leaf fault-severity { - type enumeration { - enum CRITICAL { - description - "Critical alarm means that this device is not able to perform any further service"; - } - enum MAJOR { - description - "Major alarm appeared on the device"; - } - enum MINOR { - description - "Minor alarm appeared on the device"; - } - enum WARNING { - description - "Warning is being reported by the device"; - } - } - mandatory true; - - description - "Fault severity defines the severity level of the fault. A notification, whose fault severity has the value 'warning', - is a special type of an alarm notification. For these alarm notifications, - the Master Agent does not expect to receive a clear alarm notification."; - } - - leaf is-cleared { - type boolean; - mandatory true; - - description - "Fault state determines the type of the event. Not used if faultSeverity is WARNING."; - } - - leaf fault-text { - type string { - length "0..255"; - } - - description - "Textual description of the fault."; - } - - leaf event-time { - type yang:date-and-time; - mandatory true; - - description - "Timestamp to indicate the time when the fault is detected/cleared."; - } - } - - container active-alarm-list { - list active-alarms { - key fault-id; - uses alarm; - - description - "List of currenty active alarms"; - } - config false; - - description - "List of currently active alarms. An alarm is removed from this table when the state transitions to clear."; - } - - notification alarm-notif { - uses alarm; - - description - "Notification sent on initial alarm creation, as well as any time the alarm changes state, including clear"; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-hardware.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-hardware.yang deleted file mode 100644 index 34cdadaca..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-hardware.yang +++ /dev/null @@ -1,271 +0,0 @@ -module o-ran-hardware { - yang-version 1.1; - namespace "urn:o-ran:hardware:1.0"; - prefix "o-ran-hw"; - - import ietf-hardware { - prefix hw; - } - import iana-hardware { - prefix ianahw; - } - - organization "O-RAN Alliance"; - - contact - "www.o-ran.org"; - - description - "This module defines the YANG definitions for managng the O-RAN hardware. - - Copyright 2019 the O-RAN Alliance. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the above disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the above disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the Members of the O-RAN Alliance nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission."; - - revision "2019-03-28" { - description - "version 1.0.1 - - 1) added new identities to accommodate cross working group use of - o-ran-hardware and assoicated set of augmentations that are backwards - compatible to version 1.0.0"; - - reference "ORAN-WG4.M.0-v01.00"; - } - - revision "2019-02-04" { - description - "version 1.0.0 - - 1) imported model from xRAN - 2) changed namespace and reference from xran to o-ran"; - - reference "ORAN-WG4.M.0-v01.00"; - } - - feature ENERGYSAVING { - description - "Indicates that the Radio Unit supports energy saving state."; - } - - // identity statements - identity O-RAN-RADIO { - base ianahw:module; - description - "Module used as it represents a self-contained sub-system - used in /hw:/hardware/hw:component/hw:class to represent - an O-RAN RU"; - } - - identity O-RAN-HW-COMPONENT { - base ianahw:module; - description - "Module used as it represents a self-contained sub-system - used in /hw:/hardware/hw:component/hw:class to represent - any O-RAN hardware component"; - } - - identity O-DU-COMPONENT { - base O-RAN-HW-COMPONENT; - description - "Used in /hw:/hardware/hw:component/hw:class to represent - any O-RAN defined O-DU hardware component"; - } - - identity O-RU-COMPONENT { - base O-RAN-HW-COMPONENT; - description - "Used in /hw:/hardware/hw:component/hw:class to represent - any O-RAN defined O-RU hardware component, including a stand-alone - O-RU or an O-RU component integrated into a multi-module system."; - } - - // typedef statements - typedef energysaving-state { - type enumeration { - enum UNKNOWN { - description "The Radio Unit is unable to report energy saving state."; - } - enum SLEEPING { - description - "The Radio Unit is in a sleep state. The NETCONF management plane - connection is functioning. Other functions and hardware which are - not needed for management plane may be in energy saving mode."; - } - enum AWAKE { - description - "The Radio Unit is not in an energy saving state."; - } - } - description - "new typedef since ietf-hardware only covers pwer-state - for redundancy purposes and not power saving operations."; - } - - typedef availability-type { - type enumeration { - enum UNKNOWN { - description "The Radio Unit is unable to report its availability state."; - } - enum NORMAL { - description - "The equipment is functioning correctly."; - } - enum DEGRADED { - description - "The equipment may be reporting a major alarm or may be reporting a critical - alarm that is only impacting one or more subcomponent, but where the - equipment's implementation permit it to continue operation (server traffic) - in a degraded state. - - Used for example, when the equipment has M identical sub-components and - when a critical alarm is imapcting only N subcomponents, where N<M."; - } - enum FAULTY { - description - "The (sub-)components impacted by the critical alarm(s) impact the - ability of the equipment to continue operation (serve traffic)."; - } - } - description - "Equipment's availability-state is derived by matching active faults - and their impact to module's operation and enables an equipment to indicate - that even though it may have one or more critical alarms, it can continue - to serve traffic."; - } - - // common WG4 and croos-WG augmentations using O-RAN-RADIO identity - - augment "/hw:hardware/hw:component" { - when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or - (derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))"; - description "New O-RAN parameters for o-ran hardware"; - - container label-content { - config false; - description - "Which set of attributes are printed on the Radio Unit's label"; - leaf model-name { - type boolean; - description - "indicates whether model-name is included on the equipment's label"; - } - leaf serial-number { - type boolean; - description - "indicates whether serial number is included on the equipment's label"; - } - } - leaf product-code { - type string; - config false; - mandatory true; - description - "O-RAN term that is distinct from model-name in ietf-hardware."; - } - leaf energy-saving-enabled { - if-feature "ENERGYSAVING"; - type boolean; - config true; - default false; - description - "This parameter can enable O-RAN unit to be switched to energy - saving mode. - TRUE indicates to switch the energy saving mode. - FALSE indicates to cancel the energy saving mode. - At the energy saving mode, all power of whole O-RAN unit becomes - lowest level whereas M-plane is still available"; - } - } - - augment "/hw:hardware/hw:component" { - when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or - (derived-from-or-self(hw:class, 'ianahw:port')) or - (derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))"; - description "New O-RAN parameters for o-ran naming"; - leaf o-ran-name { - type leafref { - path "/hw:hardware/hw:component/hw:name"; - } - must "re-match(current(),'[a-zA-Z0-9][a-zA-Z0-9\\.\\-_]{0,253}[a-zA-Z0-9]')" { - error-message "Name must match pattern and length."; - } - mandatory true; - description - "O-RAN name needed to bind and match with the name of hw element, - to be compliant with O-RAN naming convention."; - } - } - - augment "/hw:hardware/hw:component/hw:state" { - when "(derived-from-or-self(../hw:class, 'o-ran-hw:O-RAN-RADIO')) or - (derived-from-or-self(../hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))"; - description - "new O-RAN defined state"; - leaf power-state { - if-feature "ENERGYSAVING"; - type energysaving-state; - config false; - description - "The current power saving state for this component. - Note - hw:/hardware/compnent/state/standby-state defined in RFC 4268 is - used for redundancy purposes and not power saving operations."; - } - leaf availability-state { - type availability-type; - config false; - description - "Equipment's availability-state is derived by matching active faults - and their impact to module's operation and enables an equipment to indicate - that even though it may have one or more critical alarms, it can continue - to serve traffic."; - } - } - - -// augmentations to Notifications - - augment "/hw:hardware-state-oper-enabled" { - description "new availability state"; - leaf availability-state { - type leafref { - path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state"; - } - description - "The availability-state of the O-RU."; - } - } - - augment "/hw:hardware-state-oper-disabled" { - description "new availability state"; - leaf availability-state { - type leafref { - path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state"; - } - description - "The availability-state of the O-RU."; - } - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-common-alarms-v1.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-common-alarms-v1.yang deleted file mode 100644 index 930bba32f..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-common-alarms-v1.yang +++ /dev/null @@ -1,56 +0,0 @@ -module o-ran-sc-common-alarms-v1 { - yang-version 1.1; - namespace "urn:o-ran-sc:alarms:1.0"; - prefix osc-al; - - import ietf-alarms { - prefix al; - } - - organization - "O-RAN Software Community"; - contact - "www.o-ran-sc.org"; - description - "This module defines the alarm identities for the O-RAN-SC Components. - - Copyright 2020 the O-RAN Software Community. - - 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."; - - revision 2020-01-18 { - description - "initial revision"; - reference - "O-RAN-OAM-Interface-Specification (O1)"; - } - - identity alarm-type-id { - base al:alarm-type-id; - description - "An abstract alarm type use for all O-RAN-SC alarm types which are - common across the O-RAN managed functions."; - } - - identity smo-o1-ves-collector-not-reachable { - base alarm-type-id; - description - "The configured VES end-point for asynchron messages is not reachable. - Instructions: - 1) Verify the VES configuration on the O-RAN component. - 2) Verify the connectivity between the O-RAN component and the - SMO in terms of routing and firewall settings along the path. - 3) Check the credentials of the O-RAN component (user, password, - certificate). Did changes happen on SMO level recently?"; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-cu-cp-alarms-v1.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-cu-cp-alarms-v1.yang deleted file mode 100644 index e29ff2d21..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-cu-cp-alarms-v1.yang +++ /dev/null @@ -1,57 +0,0 @@ -module o-ran-sc-cu-cp-alarms-v1 { - yang-version 1.1; - namespace "urn:o-ran-sc:cu:cp:alarms:1.0"; - prefix osc-cu-cp-al; - - import ietf-alarms { - prefix al; - } - - organization - "O-RAN Software Community"; - contact - "www.o-ran-sc.org"; - description - "This module defines the alarm identities for the O-RAN-SC Central Unit - Control Plane. - - Copyright 2020 the O-RAN Software Community. - - 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."; - - revision 2020-01-18 { - description - "initial revision"; - reference - "O-RAN-OAM-Interface-Specification (O1)"; - } - - identity alarm-type-id { - base al:alarm-type-id; - description - "An abstract alarm type used for all O-RAN-SC specific alarm types for - Managed Function O-CU-CP."; - } - - identity huston-we-have-a-problem { - base alarm-type-id; - description - "A generic alarm which is under development and analysis, - must not happen in production environment. - Instructions: - Create an JIRA issue and provide the following intormation: - - SMO version, build number or git hash - - O-CU-CP version, build number or git hash - - A procedure to reproduce the alarm."; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-cu-up-alarms-v1.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-cu-up-alarms-v1.yang deleted file mode 100644 index 020103f4f..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-cu-up-alarms-v1.yang +++ /dev/null @@ -1,57 +0,0 @@ -module o-ran-sc-cu-up-alarms-v1 { - yang-version 1.1; - namespace "urn:o-ran-sc:cu:up:alarms:1.0"; - prefix osc-cu-up-al; - - import ietf-alarms { - prefix al; - } - - organization - "O-RAN Software Community"; - contact - "www.o-ran-sc.org"; - description - "This module defines the alarm identities for the O-RAN-SC Central Unit - User Plane. - - Copyright 2020 the O-RAN Software Community. - - 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."; - - revision 2020-01-18 { - description - "initial revision"; - reference - "O-RAN-OAM-Interface-Specification (O1)"; - } - - identity alarm-type-id { - base al:alarm-type-id; - description - "An abstract alarm type used for all O-RAN-SC specific alarm types for - Managed Function O-CU-UP."; - } - - identity huston-we-have-a-problem { - base alarm-type-id; - description - "A generic alarm which is under development and analysis, - must not happen in production environment. - Instructions: - Create an JIRA issue and provide the following intormation: - - SMO version, build number or git hash - - O-CU-UP version, build number or git hash - - A procedure to reproduce the alarm."; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-du-alarms-v1.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-du-alarms-v1.yang deleted file mode 100644 index e7d3b45f0..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-du-alarms-v1.yang +++ /dev/null @@ -1,56 +0,0 @@ -module o-ran-sc-du-alarms-v1 { - yang-version 1.1; - namespace "urn:o-ran-sc:du:alarms:1.0"; - prefix osc-du-al; - - import ietf-alarms { - prefix al; - } - - organization - "O-RAN Software Community"; - contact - "www.o-ran-sc.org"; - description - "This module defines the alarm identities for the O-RAN-SC Distributed Unit. - - Copyright 2020 the O-RAN Software Community. - - 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."; - - revision 2020-01-18 { - description - "initial revision"; - reference - "O-RAN-OAM-Interface-Specification (O1)"; - } - - identity alarm-type-id { - base al:alarm-type-id; - description - "An abstract alarm type used for all O-RAN-SC specific alarm types for - Managed Function O-DU."; - } - - identity huston-we-have-a-problem { - base alarm-type-id; - description - "A generic alarm which is under development and analysis, - must not happen in production environment. - Instructions: - Create an JIRA issue and provide the following intormation: - - SMO version, build number or git hash - - O-DU version, build number or git hash - - A procedure to reproduce the alarm."; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-ric-alarms-v1.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-ric-alarms-v1.yang deleted file mode 100644 index ace2a78b0..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-ric-alarms-v1.yang +++ /dev/null @@ -1,56 +0,0 @@ -module o-ran-sc-ric-alarms-v1 { - yang-version 1.1; - namespace "urn:o-ran:ric:alarms:1.0"; - prefix osc-ric-al; - - import ietf-alarms { - prefix al; - } - - organization - "O-RAN Software Community"; - contact - "www.o-ran.org"; - description - "This module defines the alarm identities for the O-RAN-SC Near realtime RAN Intelligent Controller. - - Copyright 2019 the O-RAN Alliance. - - 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."; - - revision 2020-01-18 { - description - "initial revision"; - reference - "O-RAN-OAM-Interface-Specification (O1)"; - } - - identity alarm-type-id { - base al:alarm-type-id; - description - "An abstract alarm type used for all O-RAN-SC specific alarm types for - Managed Function Non-RT-RIC."; - } - - identity huston-we-have-a-problem { - base alarm-type-id; - description - "A generic alarm which is under development and analysis, - must not happen in production environment. - Instructions: - Create an JIRA issue and provide the following intormation: - - SMO version, build number or git hash - - O-DU-low version, build number or git hash - - A procedure to reproduce the alarm."; - } -} diff --git a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-ru-alarms-v1.yang b/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-ru-alarms-v1.yang deleted file mode 100644 index c52414d75..000000000 --- a/sdnr/wt/devicemanager-oran/provider/src/main/yang/o-ran-sc-ru-alarms-v1.yang +++ /dev/null @@ -1,56 +0,0 @@ -module o-ran-sc-ru-alarms-v1 { - yang-version 1.1; - namespace "urn:o-ran-sc:ru:alarms:1.0"; - prefix osc-ru-al; - - import ietf-alarms { - prefix al; - } - - organization - "O-RAN Software Community"; - contact - "www.o-ran-sc.org"; - description - "This module defines the alarm identities for the O-RAN-SC Components. - - Copyright 2020 the O-RAN Software Community. - - 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."; - - revision 2020-01-18 { - description - "initial revision"; - reference - "O-RAN-OAM-Interface-Specification (O1)"; - } - - identity alarm-type-id { - base al:alarm-type-id; - description - "An abstract alarm type used for all O-RAN-SC specific alarm types for - Managed Function O-RU."; - } - - identity huston-we-have-a-problem { - base alarm-type-id; - description - "A generic alarm which is under development and analysis, - must not happen in production environment. - Instructions: - Create an JIRA issue and provide the following intormation: - - SMO version, build number or git hash - - O-RU version, build number or git hash - - A procedure to reproduce the alarm."; - } -} |