<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
<artifactId>rfc8345-ietf-network-topology</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>yang-binding</artifactId>
+ </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>4.0.5</version>
+ <version>5.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependency>
<dependency>
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
- <artifactId>rfc6991-ietf-inet-types</artifactId>
+ <artifactId>rfc8345-ietf-network</artifactId>
</dependency>
<dependency>
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
- <artifactId>rfc8345-ietf-network</artifactId>
+ <artifactId>rfc6991-ietf-inet-types</artifactId>
</dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
</dependency>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
- <artifactId>sal-netconf-connector</artifactId>
+ <artifactId>netconf-topology</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.network.topology.topology.topology.types.TopologyNetconf;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
} catch (InterruptedException | ExecutionException e) {
LOG.error("readMdSal: Error reading Operational Mode Catalog {} , Mode does not exist", omCatalogIid);
throw new RuntimeException("Operational mode not populated in Catalog : " + omCatalogIid + " :" + e);
- } finally {
- networkTransactionService.close();
}
} else {
// In other cases, means the mode is a non OpenROADM specific Operational Mode
} catch (InterruptedException | ExecutionException e) {
LOG.error("readMdSal: Error reading Operational Mode Catalog {} , Mode does not exist", omCatalogIid);
throw new RuntimeException("Operational mode not populated in Catalog : " + omCatalogIid + " :" + e);
- } finally {
- networkTransactionService.close();
}
}
if (maxRollOff == 0) {
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid + " :" + e);
- } finally {
- networkTransactionService.close();
}
} else {
// In other cases, means the mode is a non OpenROADM specific Operational Mode
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : " + omCatalogIid + " :"
+ e);
- } finally {
- networkTransactionService.close();
}
}
if (minOOBOsnrSingleChannelValue != null) {
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : " + omCatalogIid + " :"
+ e);
- } finally {
- networkTransactionService.close();
}
} else {
// In other cases, means the mode is a non OpenROADM specific Operational Mode
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : " + omCatalogIid + " :"
+ e);
- } finally {
- networkTransactionService.close();
}
}
if (penaltiesMap == null) {
}
var orAddOM = omOptional.get();
LOG.debug("readMdSal: Operational Mode Catalog: omOptional.isPresent = true {}", orAddOM);
- networkTransactionService.close();
maxIntroducedCd = orAddOM.getMaxIntroducedCd().doubleValue();
// As per current OpenROADM Spec
//maxIntroducedPdl = orAddOM.getMaxIntroducedPdl().getValue().doubleValue();
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid + " :" + e);
- } finally {
- networkTransactionService.close();
}
break;
}
var orDropOM = omOptional.get();
LOG.debug("readMdSal: Operational Mode Catalog: omOptional.isPresent = true {}", orDropOM);
- networkTransactionService.close();
maxIntroducedCd = orDropOM.getMaxIntroducedCd().doubleValue();
// As per current OpenROADM Spec
// maxIntroducedPdl = orDropOM.getMaxIntroducedPdl().getValue().doubleValue();
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid1 + " :" + e);
- } finally {
- networkTransactionService.close();
}
break;
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid2 + " :" + e);
- } finally {
- networkTransactionService.close();
}
break;
}
var orAmpOM = omOptional.get();
LOG.debug("readMdSal: Operational Mode Catalog: omOptional.isPresent = true {}", orAmpOM);
- networkTransactionService.close();
maxIntroducedCd = orAmpOM.getMaxIntroducedCd().doubleValue();
// As per current OpenROADM Spec
// maxIntroducedPdl = orAmpOM.getMaxIntroducedPdl().getValue().doubleValue();
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid3 + " :" + e);
- } finally {
- networkTransactionService.close();
}
break;
default:
}
var orAddOM = omOptional.get();
LOG.debug("readMdSal: Operational Mode Catalog: omOptional.isPresent = true {}", orAddOM);
- networkTransactionService.close();
var mask = orAddOM.getMaskPowerVsPin();
for (Map.Entry<MaskPowerVsPinKey, MaskPowerVsPin> pw : mask.entrySet()) {
if (spanLoss >= pw.getKey().getLowerBoundary().doubleValue()
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid + " :" + e);
- } finally {
- networkTransactionService.close();
}
break;
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog : "
+ omCatalogIid2 + " :" + e);
- } finally {
- networkTransactionService.close();
}
break;
LOG.error("Operational Mode catalog is not filled");
return false;
}
- networkTransactionService.close();
return true;
} catch (InterruptedException | ExecutionException e) {
LOG.error("readMdSal: Error reading Operational Mode Catalog, catalog not filled");
throw new RuntimeException(
"readMdSal: Error reading from operational store, Operational Mode Catalog not filled" + e);
- } finally {
- networkTransactionService.close();
}
}
return requestProcessor.commit();
}
- @Override
- public void close() {
-
- requestProcessor.close();
- }
-
public <T extends DataObject> void merge(LogicalDatastoreType store,
InstanceIdentifier<T> path, T data) {
requestProcessor.merge(store, path, data);
FluentFuture<? extends @NonNull CommitInfo> commit();
- void close();
-
/**
* the Databroker related to NetworkTransactionService.
* @return the Databroker related to NetworkTransactionService.
import com.google.common.util.concurrent.FluentFuture;
import com.google.common.util.concurrent.ListenableFuture;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Optional;
+import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.CommitInfo;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "UL_UNRELEASED_LOCK_EXCEPTION_PATH",
+ justification = "This appears to be doing exactly the right thing with the finally-clause to release the lock")
public class RequestProcessor {
private static final Logger LOG = LoggerFactory.getLogger(RequestProcessor.class);
private final DataBroker dataBroker;
- private ReadWriteTransaction rwTx;
- private ReentrantReadWriteLock lock;
-
+ private final ReentrantReadWriteLock rwL = new ReentrantReadWriteLock();
+ private final Lock readL = rwL.readLock();
+ private final Lock writeL = rwL.writeLock();
+ private Map<String, WriteTransaction> writeTrMap = new HashMap<>();
public RequestProcessor(DataBroker dataBroker) {
this.dataBroker = requireNonNull(dataBroker);
- rwTx = dataBroker.newReadWriteTransaction();
- lock = new ReentrantReadWriteLock();
LOG.info("RequestProcessor instantiated");
-
}
public <T extends DataObject> ListenableFuture<Optional<T>> read(LogicalDatastoreType store,
InstanceIdentifier<T> path) {
-
- ListenableFuture<Optional<T>> result = null;
- acquireReadLock();
- LOG.debug("Number of threads in queue to read {}", lock.getQueueLength());
- result = rwTx.read(store, path);
-
- releaseReadLock();
- return result;
+ ReadTransaction readTx = dataBroker.newReadOnlyTransaction();
+ String thread = Thread.currentThread().getName();
+ readL.lock();
+ LOG.debug("read locked {} by {}", store, thread);
+ try {
+ return readTx.read(store, path);
+ }
+ finally {
+ readTx.close();
+ readL.unlock();
+ LOG.debug("read after unlock - {}", thread);
+ }
}
public <T extends DataObject> void delete(LogicalDatastoreType store, InstanceIdentifier<?> path) {
-
- acquireLock();
- LOG.info("Number of delete requests waiting in queue :{}", lock.getQueueLength());
- rwTx.delete(store, path);
+ String thread = Thread.currentThread().getName();
+ LOG.debug("delete - store, thread = {} - {}", store, thread);
+ writeL.lock();
+ LOG.debug("delete locked by {}", thread);
+ try {
+ if (!writeTrMap.containsKey(thread)) {
+ writeTrMap.put(thread, dataBroker.newWriteOnlyTransaction());
+ }
+ writeTrMap.get(thread).delete(store, path);
+ }
+ finally {
+ LOG.debug("delete before unlock - {}", thread);
+ writeL.unlock();
+ LOG.debug("delete after unlock1 - {}", Thread.currentThread().getName());
+ LOG.debug("delete after unlock2 - {}", thread);
+ }
}
-
- public <T extends DataObject> void put(LogicalDatastoreType store,
- InstanceIdentifier<T> path, T data) {
-
- acquireLock();
- LOG.debug("Number of put requests waiting in queue :{}", lock.getQueueLength());
- rwTx.put(store, path, data);
+ public <T extends DataObject> void put(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
+ String thread = Thread.currentThread().getName();
+ writeL.lock();
+ LOG.debug("put locked {} by {}", store, thread);
+ try {
+ if (!writeTrMap.containsKey(thread)) {
+ writeTrMap.put(thread, dataBroker.newWriteOnlyTransaction());
+ }
+ writeTrMap.get(thread).put(store, path, data);
+ }
+ finally {
+ writeL.unlock();
+ LOG.debug("put after unlock - {}", thread);
+ }
}
-
public <T extends DataObject> void merge(LogicalDatastoreType store, InstanceIdentifier<T> path, T data) {
-
- acquireLock();
- LOG.debug("Number of merge requests waiting in queue :{}", lock.getQueueLength());
- rwTx.merge(store, path, data);
- }
-
- public FluentFuture<? extends @NonNull CommitInfo> commit() {
- acquireLock();
- FluentFuture<? extends @NonNull CommitInfo> future = null;
- future = rwTx.commit();
- releaseLock();
- resetRwTx();
- return future;
- }
-
- public void close() {
- releaseLock();
- }
-
- private void acquireLock() {
- if (!lock.writeLock().isHeldByCurrentThread()) {
- lock.writeLock().lock();
- LOG.debug("Number of write lock requests waiting in queue :{}", lock.getQueueLength());
- LOG.info("Write Lock acquired by : {}", Thread.currentThread().getName());
- rwTx = resetRwTx();
- } else {
- LOG.debug("Lock already acquired by : {}", Thread.currentThread().getName());
+ String thread = Thread.currentThread().getName();
+ writeL.lock();
+ LOG.debug("merge locked {} by {}", store, thread);
+ try {
+ if (!writeTrMap.containsKey(thread)) {
+ writeTrMap.put(thread, dataBroker.newWriteOnlyTransaction());
+ }
+ writeTrMap.get(thread).merge(store, path, data);
}
- }
-
- private void acquireReadLock() {
- if (lock.getReadHoldCount() > 0) {
- LOG.info("Read Lock already acquired by : {}", Thread.currentThread().getName());
- } else {
- lock.readLock().lock();
- rwTx = resetRwTx();
- LOG.info("Read Lock acquired by : {}", Thread.currentThread().getName());
+ finally {
+ writeL.unlock();
+ LOG.debug("merge after unlock - {}", thread);
}
}
- private void releaseLock() {
- if (lock.writeLock().isHeldByCurrentThread()) {
- LOG.info("Write Lock released by : {}", Thread.currentThread().getName());
- lock.writeLock().unlock();
+ public FluentFuture<? extends @NonNull CommitInfo> commit() {
+ String thread = Thread.currentThread().getName();
+ writeL.lock();
+ LOG.debug("commit locked by {}", thread);
+ try {
+ if (writeTrMap.containsKey(thread)) {
+ return writeTrMap.get(thread).commit();
+ } else {
+ LOG.warn("No write transaction available for thread {}", thread);
+ return FluentFutures.immediateNullFluentFuture();
+ }
+ }
+ finally {
+ writeTrMap.remove(thread);
+ writeL.unlock();
+ LOG.debug("commit after unlock - {}", thread);
}
- }
-
- private void releaseReadLock() {
- LOG.info("Read Lock released by : {}", Thread.currentThread().getName());
- lock.readLock().unlock();
- }
-
- private ReadWriteTransaction resetRwTx() {
- LOG.info("Resetting the read write transaction .....");
- rwTx = dataBroker.newReadWriteTransaction();
- return rwTx;
}
/**
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<description>client to send message to Dmaap message router</description>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>feature-repo-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce :: Inventory</name>
<properties>
- <mdsal.version>10.0.6</mdsal.version>
- <netconf.version>4.0.5</netconf.version>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <mdsal.version>11.0.6</mdsal.version>
+ <netconf.version>5.0.2</netconf.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
<transportpce.db.host>localhost:3306</transportpce.db.host>
<transportpce.db.database>transportpce</transportpce.db.database>
<transportpce.db.username>root</transportpce.db.username>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce :: swagger</name>
<properties>
- <netconf.version>4.0.5</netconf.version>
+ <netconf.version>5.0.2</netconf.version>
<configfile.directory>etc/opendaylight/karaf</configfile.directory>
<skip.karaf.featureTest>false</skip.karaf.featureTest>
</properties>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce :: tapi</name>
<properties>
- <mdsal.version>10.0.6</mdsal.version>
- <netconf.version>4.0.5</netconf.version>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <mdsal.version>11.0.6</mdsal.version>
+ <netconf.version>5.0.2</netconf.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
<skip.karaf.featureTest>false</skip.karaf.featureTest>
</properties>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<name>OpenDaylight :: transportpce</name>
<properties>
- <netconf.version>4.0.5</netconf.version>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <netconf.version>5.0.2</netconf.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
<configfile.directory>etc/opendaylight/karaf</configfile.directory>
<skip.karaf.featureTest>false</skip.karaf.featureTest>
</properties>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>4.0.5</version>
+ <version>5.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.netconf</groupId>
+ <artifactId>netconf-topology</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>sal-netconf-connector</artifactId>
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.inventory.DeviceInventory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
LOG.debug("nodeId {}", nodeId);
NetconfNode netconfNode = rootNode.getDataAfter().augmentation(NetconfNode.class);
- NetconfNodeConnectionStatus.ConnectionStatus connectionStatus =
+ ConnectionStatus connectionStatus =
netconfNode.getConnectionStatus();
long count = netconfNode.getAvailableCapabilities().getAvailableCapability().stream()
.filter(cp -> cp.getCapability().contains(StringConstants.OPENROADM_DEVICE_MODEL_NAME))
*/
private void processModifiedSubtree(String nodeId, NetconfNode netconfNode, String openROADMversion)
throws InterruptedException, ExecutionException {
- NetconfNodeConnectionStatus.ConnectionStatus connectionStatus = netconfNode.getConnectionStatus();
+ ConnectionStatus connectionStatus = netconfNode.getConnectionStatus();
/*long count = netconfNode.getAvailableCapabilities().getAvailableCapability().stream()
.filter(cp -> cp.getCapability().contains(StringConstants.OPENROADM_DEVICE_MODEL_NAME)).count();
if (count < 1) {
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.transportpce.inventory.DeviceInventory;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
for (DataTreeModification<Node> device : changesWithoutDefaultNetconfNode) {
String nodeId = device.getRootNode().getDataAfter().key().getNodeId().getValue();
NetconfNode netconfNode = device.getRootNode().getDataAfter().augmentation(NetconfNode.class);
- NetconfNodeConnectionStatus.ConnectionStatus connectionStatus =
- netconfNode.getConnectionStatus();
+ ConnectionStatus connectionStatus = netconfNode.getConnectionStatus();
long count = netconfNode.getAvailableCapabilities().getAvailableCapability().stream()
.filter(cp -> cp.getCapability().contains(StringConstants.OPENROADM_DEVICE_MODEL_NAME))
.count();
*/
private void processModifiedSubtree(String nodeId, NetconfNode netconfNode, String openROADMversion)
throws InterruptedException, ExecutionException {
- NetconfNodeConnectionStatus.ConnectionStatus connectionStatus = netconfNode.getConnectionStatus();
+ ConnectionStatus connectionStatus = netconfNode.getConnectionStatus();
long count = netconfNode.getAvailableCapabilities().getAvailableCapability().stream()
.filter(cp -> cp.getCapability().contains(StringConstants.OPENROADM_DEVICE_MODEL_NAME))
return change.getRootNode().getDataBefore() != null && change.getRootNode().getDataAfter() == null
&& ModificationType.DELETE.equals(change.getRootNode().getModificationType());
}
-}
+}
\ No newline at end of file
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>karaf4-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<application.attach.zip>true</application.attach.zip>
<maven.deploy.skip>true</maven.deploy.skip>
<transportpce.version>7.0.0-SNAPSHOT</transportpce.version>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
<kafka.version>3.0.0</kafka.version>
</properties>
</dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>openroadm-common-10.1.0</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-service-10.1.0</artifactId>
</dependency>
<!-- Testing Dependencies -->
+ <dependency>
+ <groupId>org.opendaylight.transportpce.models</groupId>
+ <artifactId>openroadm-common-10.1.0</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>test-common</artifactId>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools-artifacts</artifactId>
- <version>9.0.6</version>
+ <version>10.0.3</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-artifacts</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>4.0.5</version>
+ <version>5.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-model-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-data-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-data-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-data-codec-gson</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.mdsal.model</groupId>
<artifactId>ietf-topology</artifactId>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-api</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-dom-codec</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-dom-codec-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-dom-codec-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-runtime-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-runtime-spi</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.netconf.model</groupId>
- <artifactId>rfc6241</artifactId>
+ <artifactId>rfc5277</artifactId>
</dependency>
<dependency>
- <groupId>org.opendaylight.netconf.model</groupId>
- <artifactId>rfc5277</artifactId>
+ <groupId>org.opendaylight.netconf</groupId>
+ <artifactId>netconf-topology</artifactId>
</dependency>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
<!-- Sodium bump: javax.annotation.Nullable and friends -->
<dependency>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-model-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-data-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-data-impl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-data-codec-gson</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-dom-adapter</artifactId>
<artifactId>mdsal-binding-generator</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec-spi</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-runtime-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-runtime-spi</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.netconf.model</groupId>
+ <artifactId>rfc6241</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.Streams;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.networkutils.rev220630.OtnLinkType;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev210915.renderer.rpc.result.sp.Link;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
import org.opendaylight.yangtools.yang.common.Uint32;
/**
* @param connectionStatus
* connection status of the node
*/
- void setOpenRoadmNodeStatus(String nodeId, NetconfNodeConnectionStatus.ConnectionStatus connectionStatus);
+ void setOpenRoadmNodeStatus(String nodeId, ConnectionStatus connectionStatus);
/**
* create new otn link in otn-topology.
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPointKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.termination.point.SupportingTerminationPoint;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
}
@Override
- public void setOpenRoadmNodeStatus(String nodeId, NetconfNodeConnectionStatus.ConnectionStatus connectionStatus) {
+ public void setOpenRoadmNodeStatus(String nodeId, ConnectionStatus connectionStatus) {
LOG.info("setOpenROADMNodeStatus: {} {}", nodeId, connectionStatus.name());
/*
TODO: set connection status of the device in model,
private void deleteLinks(List<Link> links) {
for (Link otnTopologyLink : links) {
LOG.info("deleting link {} from {}", otnTopologyLink.getLinkId().getValue(),
- NetworkUtils.OVERLAY_NETWORK_ID);
+ NetworkUtils.OTN_NETWORK_ID);
InstanceIdentifier<Link> iiOtnTopologyLink = InstanceIdentifier.builder(Networks.class)
.child(Network.class, new NetworkKey(new NetworkId(NetworkUtils.OTN_NETWORK_ID)))
.augmentation(Network1.class)
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.AvailableCapabilities;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.AvailableCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapabilityBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.AvailableCapabilities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.AvailableCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.available.capabilities.AvailableCapabilityBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.credentials.credentials.LoginPasswordBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNodeBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
changes.add(ch);
when(ch.getRootNode()).thenReturn(node);
- final Node netconfNode = getNetconfNode("netconfNode1", NetconfNodeConnectionStatus.ConnectionStatus.Connecting,
+ final Node netconfNode = getNetconfNode("netconfNode1", ConnectionStatus.Connecting,
OPENROADM_DEVICE_VERSION_2_2_1);
when(node.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);
when(node.getDataBefore()).thenReturn(netconfNode);
when(ch.getRootNode()).thenReturn(node);
final Node netconfNodeBefore = getNetconfNode("netconfNode1",
- NetconfNodeConnectionStatus.ConnectionStatus.Connecting, OPENROADM_DEVICE_VERSION_2_2_1);
+ ConnectionStatus.Connecting, OPENROADM_DEVICE_VERSION_2_2_1);
final Node netconfNodeAfter = getNetconfNode("netconfNode1",
- NetconfNodeConnectionStatus.ConnectionStatus.Connected, OPENROADM_DEVICE_VERSION_2_2_1);
+ ConnectionStatus.Connected, OPENROADM_DEVICE_VERSION_2_2_1);
when(node.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
when(node.getDataBefore()).thenReturn(netconfNodeBefore);
when(node.getDataAfter()).thenReturn(netconfNodeAfter);
when(ch.getRootNode()).thenReturn(node);
final Node netconfNodeBefore = getNetconfNode("netconfNode1",
- NetconfNodeConnectionStatus.ConnectionStatus.Connected, OPENROADM_DEVICE_VERSION_2_2_1);
+ ConnectionStatus.Connected, OPENROADM_DEVICE_VERSION_2_2_1);
final Node netconfNodeAfter = getNetconfNode("netconfNode1",
- NetconfNodeConnectionStatus.ConnectionStatus.Connecting, OPENROADM_DEVICE_VERSION_2_2_1);
+ ConnectionStatus.Connecting, OPENROADM_DEVICE_VERSION_2_2_1);
when(node.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
when(node.getDataBefore()).thenReturn(netconfNodeBefore);
when(node.getDataAfter()).thenReturn(netconfNodeAfter);
when(ch.getRootNode()).thenReturn(node);
final Node netconfNodeBefore = getNetconfNode("netconfNode1",
- NetconfNodeConnectionStatus.ConnectionStatus.Connected, OPENROADM_DEVICE_VERSION_2_2_1);
+ ConnectionStatus.Connected, OPENROADM_DEVICE_VERSION_2_2_1);
when(node.getModificationType()).thenReturn(DataObjectModification.ModificationType.SUBTREE_MODIFIED);
when(node.getDataBefore()).thenReturn(netconfNodeBefore);
verify(networkModelService, never()).deleteOpenRoadmnode(anyString());
}
- private Node getNetconfNode(final String nodeId, final NetconfNodeConnectionStatus.ConnectionStatus cs,
+ private Node getNetconfNode(final String nodeId, final ConnectionStatus cs,
final String openRoadmVersion) {
final List<AvailableCapability> avCapList = new ArrayList<>();
avCapList.add(new AvailableCapabilityBuilder()
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-common-7.1.0</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>openroadm-common-10.1.0</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-device-1.2.1</artifactId>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-network-10.1.0</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>openroadm-service-10.1.0</artifactId>
- </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>transportpce-api</artifactId>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
- <artifactId>rfc6991-ietf-yang-types</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
<artifactId>rfc8345-ietf-network</artifactId>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
- <!-- Sodium bump: javax.annotation.Nullable and friends -->
- <dependency>
- <groupId>com.google.code.findbugs</groupId>
- <artifactId>jsr305</artifactId>
- <version>3.0.2</version>
- <optional>true</optional>
- </dependency>
<!-- Testing Dependencies -->
<dependency>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+ <artifactId>rfc6991-ietf-yang-types</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-generator</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.google.code.findbugs</groupId>
+ <artifactId>jsr305</artifactId>
+ <version>3.0.2</version>
+ <scope>test</scope>
+ <optional>true</optional>
+ </dependency>
</dependencies>
<build>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<type>pom</type>
<scope>import</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-artifacts</artifactId>
+ <version>11.0.6</version>
+ <scope>import</scope>
+ <type>pom</type>
+ </dependency>
</dependencies>
</dependencyManagement>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-common-10.1.0</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>openroadm-device-2.2.1</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-device-7.1.0</artifactId>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-model-api</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-api</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yang-data-impl</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-codec-gson</artifactId>
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
<artifactId>rfc6991-ietf-inet-types</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
- <artifactId>rfc6991-ietf-yang-types</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
<artifactId>rfc8345-ietf-network</artifactId>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-api</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-dom-codec</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-dom-codec-spi</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-runtime-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-binding-runtime-spi</artifactId>
- </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
</dependency>
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-server</artifactId>
- </dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<!-- Testing Dependencies -->
+ <dependency>
+ <groupId>org.opendaylight.transportpce.models</groupId>
+ <artifactId>openroadm-device-2.2.1</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.opendaylight.transportpce</groupId>
<artifactId>test-common</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-model-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.yangtools</groupId>
+ <artifactId>yang-data-impl</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+ <artifactId>rfc6991-ietf-yang-types</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-binding-generator</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-runtime-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-runtime-spi</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.mdsal</groupId>
+ <artifactId>mdsal-binding-dom-codec</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-server</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-grizzly2-http</artifactId>
"In GnpyTopoImpl : openroadm topology network or openroadm network are not well mounted ...");
}
} catch (InterruptedException | ExecutionException e) {
- this.networkTransactionService.close();
throw new GnpyException("In gnpyTopoImpl: error in reading the topology", e);
}
- this.networkTransactionService.close();
}
private void extractElements(java.util.Optional<Network> openRoadmTopo,
@Override
@SuppressWarnings("java:S1872")
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return "org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev220221.Request$$$codecImpl"
+ return "org.opendaylight.yang.rt.v1.obj.gnpy.gnpy.api.rev220221.Request"
.equals(type.getName())
- || "org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev220221.RequestBuilder$RequestImpl"
- .equals(type.getName());
+ || "org.opendaylight.yang.gen.v1.gnpy.gnpy.api.rev220221.RequestBuilder$RequestImpl"
+ .equals(type.getName());
}
@Override
if (nwOptional.isPresent()) {
nw = nwOptional.get();
LOG.debug("readMdSal: network nodes: nwOptional.isPresent = true {}", nw);
- networkTransactionService.close();
}
} catch (InterruptedException | ExecutionException e) {
LOG.error("readMdSal: Error reading topology {}", nwInstanceIdentifier);
- networkTransactionService.close();
returnStructure.setRC(ResponseCodes.RESPONSE_FAILED);
}
return nw;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.opendaylight.mdsal.binding.api.WriteTransaction;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.transportpce.common.network.NetworkTransactionImpl;
throws InterruptedException, ExecutionException {
InstanceIdentifier<Network> nwInstanceIdentifier = InstanceIdentifier.builder(Networks.class)
.child(Network.class, new NetworkKey(new NetworkId(networkId))).build();
- WriteTransaction dataWriteTransaction = getDataBroker().newWriteOnlyTransaction();
- dataWriteTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network);
- dataWriteTransaction.commit().get();
+ networkTransaction.put(LogicalDatastoreType.CONFIGURATION, nwInstanceIdentifier, network);
+ networkTransaction.commit().get();
}
@Test
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>11.0.4</version>
+ <version>12.0.2</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-device-7.1.0</artifactId>
</dependency>
- <dependency>
- <groupId>org.opendaylight.transportpce.models</groupId>
- <artifactId>openroadm-network-10.1.0</artifactId>
- </dependency>
<dependency>
<groupId>org.opendaylight.transportpce.models</groupId>
<artifactId>openroadm-service-10.1.0</artifactId>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>4.0.5</version>
+ <version>5.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.netconf</groupId>
+ <artifactId>netconf-topology</artifactId>
+ </dependency>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>sal-netconf-connector</artifactId>
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.Topology;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.context.TopologyKey;
-import org.opendaylight.yangtools.yang.binding.Enumeration;
+import org.opendaylight.yangtools.yang.binding.EnumTypeObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return;
}
ConnectivityContext connContext = optConnContext.get();
- Map<Uuid, Enumeration[]> states = new HashMap<>();
+ Map<Uuid, EnumTypeObject[]> states = new HashMap<>();
if (connContext.getConnectivityService() == null) {
return;
}
}
}
- private Enumeration[] getStates(ConnectivityService connService) throws InterruptedException, ExecutionException {
+ private EnumTypeObject[] getStates(ConnectivityService connService)
+ throws InterruptedException, ExecutionException {
OperationalState operState = OperationalState.ENABLED;
AdministrativeState adminState = AdministrativeState.UNLOCKED;
if (connService.getConnection() == null) {
LOG.info("No connections on service = {}", connService);
- return new Enumeration[]{null, null};
+ return new EnumTypeObject[]{null, null};
}
for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210
.connectivity.service.Connection connection : connService.getConnection().values()) {
operState = OperationalState.DISABLED;
}
}
- return new Enumeration[]{adminState, operState};
+ return new EnumTypeObject[]{adminState, operState};
}
private void updateConnections(List<Uuid> changedOneps, List<String> onepStates) {
// TODO add states corresponding to device config
LOG.info("ROADM node {} should have {} NEPs and {} SIPs", roadm.getNodeId().getValue(), numNeps, numSips);
LOG.info("ROADM node {} has {} NEPs and {} SIPs", roadm.getNodeId().getValue(),
- roadmNode.getOwnedNodeEdgePoint().values().size(),
- roadmNode.getOwnedNodeEdgePoint().values().stream()
+ roadmNode.nonnullOwnedNodeEdgePoint().values().size(),
+ roadmNode.nonnullOwnedNodeEdgePoint().values().stream()
.filter(nep -> nep.getMappedServiceInterfacePoint() != null).count());
tapiNodes.put(roadmNode.key(), roadmNode);
import org.opendaylight.mdsal.binding.api.DataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataTreeModification;
import org.opendaylight.transportpce.common.StringConstants;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.ConnectionOper.ConnectionStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.device.rev221225.connection.oper.available.capabilities.AvailableCapability;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
LOG.error("Could not update TAPI links");
return;
}
- Map<LinkKey, Link> links = optTopology.get().getLink();
- if (links != null) {
- for (Link link : links.values()) {
- List<Uuid> linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream()
- .map(NodeEdgePointRef::getNodeEdgePointUuid).collect(Collectors.toList());
- if (!Collections.disjoint(changedOneps, linkNeps)) {
- InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
- .augmentation(Context1.class).child(TopologyContext.class)
- .child(Topology.class, new TopologyKey(tapiTopoUuid))
- .child(Link.class, new LinkKey(link.getUuid())).build();
- Link linkblr = new LinkBuilder().setUuid(link.getUuid())
- .setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
- .setOperationalState(transformOperState(mapping.getPortOperState())).build();
- this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, linkIID, linkblr);
- }
+ for (Link link : optTopology.get().nonnullLink().values()) {
+ List<Uuid> linkNeps = Objects.requireNonNull(link.getNodeEdgePoint()).values().stream()
+ .map(NodeEdgePointRef::getNodeEdgePointUuid).collect(Collectors.toList());
+ if (!Collections.disjoint(changedOneps, linkNeps)) {
+ InstanceIdentifier<Link> linkIID = InstanceIdentifier.builder(Context.class)
+ .augmentation(Context1.class).child(TopologyContext.class)
+ .child(Topology.class, new TopologyKey(tapiTopoUuid))
+ .child(Link.class, new LinkKey(link.getUuid())).build();
+ Link linkblr = new LinkBuilder().setUuid(link.getUuid())
+ .setAdministrativeState(transformAdminState(mapping.getPortAdminState()))
+ .setOperationalState(transformOperState(mapping.getPortOperState())).build();
+ this.networkTransactionService.merge(LogicalDatastoreType.OPERATIONAL, linkIID, linkblr);
}
}
this.networkTransactionService.commit().get();
<parent>
<groupId>org.opendaylight.mdsal</groupId>
<artifactId>binding-parent</artifactId>
- <version>10.0.6</version>
+ <version>11.0.6</version>
<relativePath/>
</parent>
<packaging>bundle</packaging>
<properties>
- <transportpce.models.version>17.2.0</transportpce.models.version>
+ <transportpce.models.version>18.0.0-SNAPSHOT</transportpce.models.version>
</properties>
<dependencyManagement>
<dependency>
<groupId>org.opendaylight.netconf</groupId>
<artifactId>netconf-artifacts</artifactId>
- <version>4.0.5</version>
+ <version>5.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
def setUp(self):
# pylint: disable=consider-using-f-string
print("execution of {}".format(self.id().split(".")[-1]))
- time.sleep(10)
+ time.sleep(1)
def test_01_rdm_device_connection(self):
response = test_utils.mount_device("ROADMA01", ('roadma', self.NODE_VERSION))
print("all processes killed")
def setUp(self):
- time.sleep(10)
+ time.sleep(2)
# Connect the ROADMA
def test_01_connect_rdm(self):
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_ROADMA(self):
response = test_utils.mount_device("ROADMA01", ('roadma', self.NODE_VERSION))
def setUp(self):
# pylint: disable=consider-using-f-string
print("execution of {}".format(self.id().split(".")[-1]))
- time.sleep(10)
+ time.sleep(2)
def test_01_rdm_device_connected(self):
response = test_utils.mount_device("ROADMA01", ('roadma', self.NODE_VERSION))
print("all processes killed")
def setUp(self):
- time.sleep(10)
+ time.sleep(2)
# Connect the ROADMA
def test_01_connect_rdm(self):
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_ROADM_A1(self):
response = test_utils.mount_device("ROADM-A1", ('roadma', self.NODE_VERSION))
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_SPDR_SA1(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
def setUp(self):
# pylint: disable=consider-using-f-string
print("execution of {}".format(self.id().split(".")[-1]))
- time.sleep(10)
+ time.sleep(2)
def test_01_rdm_device_connection(self):
response = test_utils.mount_device("ROADM-D1", ('roadmd', self.NODE_VERSION))
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_SPDR_SA1(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_SPDR_SA1(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertIn('Operation Successful',
response['output']['configuration-response-common']['response-message'])
+ time.sleep(2)
# Test OCH-OTU interfaces on SPDR-A1
def test_04_check_interface_och(self):
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertIn('Operation Successful',
response['output']['configuration-response-common']['response-message'])
+ time.sleep(2)
# Test ODU4 interfaces on SPDR-A1 and SPDR-C1
def test_09_check_interface_ODU4(self):
self.assertEqual(response['status_code'], requests.codes.ok)
self.assertIn('Operation Successful',
response['output']['configuration-response-common']['response-message'])
+ time.sleep(2)
# Test the interfaces on SPDR-A1
def test_12_check_interface_10GE_CLIENT(self):
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_spdrA(self):
response = test_utils.mount_device("SPDR-SA1", ('spdra', self.NODE_VERSION))
def setUp(self):
# pylint: disable=consider-using-f-string
print("execution of {}".format(self.id().split(".")[-1]))
- time.sleep(10)
+ time.sleep(2)
def test_01_xpdr_device_connection(self):
response = test_utils.mount_device("XPDR-A2",
def setUp(self):
# pylint: disable=consider-using-f-string
print("execution of {}".format(self.id().split(".")[-1]))
- time.sleep(10)
+ time.sleep(2)
def test_01_xpdr_device_connection(self):
response = test_utils.mount_device("XPDR-A2",
SIMS = simulators.SIMS
HONEYNODE_OK_START_MSG = 'Netconf SSH endpoint started successfully at 0.0.0.0'
-KARAF_OK_START_MSG = "Blueprint container for bundle org.opendaylight.netconf.restconf.* was successfully created"
+KARAF_OK_START_MSG = "Blueprint container for bundle org.opendaylight.transportpce.servicehandler.+" \
+ "was successfully created"
LIGHTY_OK_START_MSG = re.escape("lighty.io and RESTCONF-NETCONF started")
ODL_LOGIN = 'admin'
else:
process = start_karaf()
start_msg = KARAF_OK_START_MSG
- if wait_until_log_contains(TPCE_LOG, start_msg, time_to_wait=300):
+ if wait_until_log_contains(TPCE_LOG, start_msg, time_to_wait=100):
print('OpenDaylight started !')
else:
print('OpenDaylight failed to start !')
print("all processes killed")
def setUp(self):
- time.sleep(5)
+ time.sleep(2)
def test_01_connect_spdrA(self):
print("Connecting SPDRA")
response = test_utils.unmount_device("ROADM-C1")
self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
+ def test_69_restore_status_port_roadma_srg(self):
+ url = "{}/config/org-openroadm-device:org-openroadm-device/circuit-packs/3%2F0/ports/C2"
+ body = {"ports": [{
+ "port-name": "C2",
+ "logical-connection-point": "SRG1-PP2",
+ "port-type": "client",
+ "circuit-id": "SRG1",
+ "administrative-state": "inService",
+ "port-qual": "roadm-external"}]}
+ response = requests.request("PUT", url.format("http://127.0.0.1:8141/restconf"),
+ data=json.dumps(body), headers=test_utils.TYPE_APPLICATION_JSON,
+ auth=(test_utils.ODL_LOGIN, test_utils.ODL_PWD),
+ timeout=test_utils.REQUEST_TIMEOUT)
+ self.assertEqual(response.status_code, requests.codes.ok)
+ time.sleep(2)
+
+ def test_70_clean_openroadm_topology(self):
+ response = test_utils.get_ietf_network_request('openroadm-topology', 'config')
+ self.assertEqual(response['status_code'], requests.codes.ok)
+ links = response['network'][0]['ietf-network-topology:link']
+ for link in links:
+ if link["org-openroadm-common-network:link-type"] in ('XPONDER-OUTPUT', 'XPONDER-INPUT', 'ROADM-TO-ROADM'):
+ response = test_utils.del_ietf_network_link_request('openroadm-topology', link['link-id'], 'config')
+ self.assertIn(response.status_code, (requests.codes.ok, requests.codes.no_content))
+
if __name__ == "__main__":
unittest.main(verbosity=2)