package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf.ne;
import org.eclipse.jdt.annotation.NonNull;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf.impl.DeviceManagerOnfConfiguration;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.AaiService;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.MaintenanceService;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.PerformanceManager;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.types.FaultData;
+import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.Capabilities;
import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnectionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementDeviceType;
+import org.opendaylight.yangtools.yang.common.QName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final @NonNull AaiService aaiProviderClient;
private final @NonNull PerformanceManager performanceManager;
private final @NonNull EventHandlingService eventListenerHandler;
+ private final @NonNull DataProvider dataProvider;
private final @NonNull String mountPointNodeName;
/**
* Basic element for netconf device with ONF Core model V1.2
- *
+ *
* @param acessor to manage device connection
* @param serviceProvider to get devicemanager services
*/
this.aaiProviderClient = serviceProvider.getAaiService();
this.performanceManager = serviceProvider.getPerformanceManagerService();
this.eventListenerHandler = serviceProvider.getEventHandlingService();
+ this.dataProvider = serviceProvider.getDataProvider();
}
resultList.size());
}
+ /**
+ * @param nNode
+ * set core-model-capability
+ */
+ public void setCoreModel(@NonNull NetconfNode nNode) {
+ NetworkElementConnectionBuilder eb = new NetworkElementConnectionBuilder();
+
+ String namespaceRevision;
+ QName QNAME_COREMODEL = QName.create("urn:onf:params:xml:ns:yang:core-model", "2017-03-20", "core-model").intern();
+
+ Capabilities availableCapabilities = Capabilities.getAvailableCapabilities(nNode);
+ namespaceRevision = availableCapabilities.getRevisionForNamespace(QNAME_COREMODEL);
+ if (Capabilities.isNamespaceSupported(namespaceRevision)) {
+ eb.setCoreModelCapability(namespaceRevision);
+ } else {
+ eb.setCoreModelCapability("Unsupported");
+ }
+ dataProvider.updateNetworkConnection22(eb.build(), acessor.getNodeId().getValue());
+ }
/**
* Remove all entries from list
*/
// Register netconf stream
acessor.registerNotificationsStream(NetconfAccessor.DefaultNotificationsStream);
+ // Set core-model revision value in "core-model-capability" field
+ setCoreModel(acessor.getNetconfNode());
+
// -- Read data from NE
initialReadFromNetworkElement();
maintenanceService.deleteIfNotRequired(mountPointNodeName);
performanceManager.deRegistration(mountPointNodeName);
aaiProviderClient.onDeviceUnregistered(mountPointNodeName);
+ faultService.removeAllCurrentProblemsOfNode(acessor.getNodeId());
}
@Override
import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService;
import org.onap.ccsdk.features.sdnr.wt.devicemanager.types.FaultData;
+import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.Capabilities;
import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.onf.yang.air._interface._2._0.rev200121.LAYERPROTOCOLNAMETYPEAIRLAYER;
import org.opendaylight.yang.gen.v1.urn.onf.yang.core.model._1._4.rev191127.equipment.ContainedHolder;
import org.opendaylight.yang.gen.v1.urn.onf.yang.core.model._1._4.rev191127.logical.termination.point.LayerProtocol;
import org.opendaylight.yang.gen.v1.urn.onf.yang.core.model._1._4.rev191127.logical.termination.point.LayerProtocolKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnectionBuilder;
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.opendaylight.yangtools.yang.common.QName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
}
+ /**
+ * @param nNode
+ * set core-model-capability
+ */
+ public void setCoreModel(@NonNull NetconfNode nNode) {
+ NetworkElementConnectionBuilder eb = new NetworkElementConnectionBuilder();
+ log.info("In setCoreModel for Onf14NetworkElement");
+ String namespaceRevision;
+ QName QNAME_COREMODEL14 = QName.create("urn:onf:yang:core-model-1-4", "2019-11-27", "core-model-1-4").intern();
+
+ Capabilities availableCapabilities = Capabilities.getAvailableCapabilities(nNode);
+ namespaceRevision = availableCapabilities.getRevisionForNamespace(QNAME_COREMODEL14);
+ log.info("In setCoreModel for Onf14NetworkElement- namespaceRevision = "+namespaceRevision);
+ if (Capabilities.isNamespaceSupported(namespaceRevision)) {
+ eb.setCoreModelCapability(namespaceRevision);
+ } else {
+ eb.setCoreModelCapability("Unsupported");
+ }
+ databaseService.updateNetworkConnection22(eb.build(), netconfAccessor.getNodeId().getValue());
+ }
+
@Override
public void register() {
+ // Set core-model revision value in "core-model-capability" field
+ setCoreModel(netconfAccessor.getNetconfNode());
initialReadFromNetworkElement();
// Register netconf stream
airInterfaceNotificationListenerHandler =
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementConnectionEntity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.NetworkElementDeviceType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev190801.network.element.connection.entity.NodeDetailsBuilder;
-import org.opendaylight.yangtools.yang.common.QName;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(NetworkElementConnectionEntitiyUtil.class);
- private static final QName QNAME_COREMODEL =
- QName.create("urn:onf:params:xml:ns:yang:core-model", "2017-03-20", "core-model").intern();
-
/**
- * Update devicetype and let all other field empty
+ * Update devicetype and let all other field empties
*
* @param deviceType that should be updated
* @return NetworkElementConnectionEntity with related parameter
Capabilities availableCapabilities = Capabilities.getAvailableCapabilities(nNode);
Capabilities unAvailableCapabilities = Capabilities.getUnavailableCapabilities(nNode);
- eb.setCoreModelCapability(availableCapabilities.getRevisionForNamespace(QNAME_COREMODEL));
-
NodeDetailsBuilder nodeDetails =
new NodeDetailsBuilder().setAvailableCapabilities(availableCapabilities.getCapabilities())
.setUnavailableCapabilities(unAvailableCapabilities.getCapabilities());
LoginPassword loginPassword = (LoginPassword) credentials;
eb.setUsername(loginPassword.getUsername()).setPassword(loginPassword.getPassword());
}
+ eb.setCoreModelCapability("Unsupported"); // Default value. Specific value (if any) is set in the specific devicemanagers
return eb.build();
}
}
private static final Logger LOG = LoggerFactory.getLogger(Capabilities.class);
private static final String METHODNAME = "getCapability";
+ private static final String UNSUPPORTED = "Unsupported";
private final List<String> capabilities = new ArrayList<>();
private final DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
return QName.create(capability).getRevision().get().toString();
}
}
- return "Unsupported";
+ return UNSUPPORTED;
}
+ /**
+ * Verify if QName namespace is supported by capabilities
+ * @param revision result of getRevisionForNamespace()
+ * @return true if namespace is supported.
+ */
+ static public boolean isNamespaceSupported(String revision) {
+ return revision != UNSUPPORTED;
+ }
@Override
public String toString() {