package org.opendaylight.protocol.bmp.impl.app;
-import com.google.common.base.Charsets;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.net.InetAddresses;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
+import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
import org.opendaylight.protocol.bmp.api.BmpDispatcher;
import org.opendaylight.protocol.bmp.impl.spi.BmpMonitoringStation;
+import org.opendaylight.protocol.concepts.KeyMapping;
import org.opendaylight.protocol.util.Ipv4Util;
-import org.opendaylight.tcpmd5.api.KeyMapping;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev150512.BmpMonitor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev150512.MonitorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev150512.bmp.monitor.Monitor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bmp.monitor.rev150512.routers.Router;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.tcpmd5.cfg.rev140427.Rfc2385Key;
-import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTree;
-import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTreeFactory;
-import org.opendaylight.yangtools.sal.binding.generator.util.BindingRuntimeContext;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.rfc2385.cfg.rev160324.Rfc2385Key;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
private static final Logger LOG = LoggerFactory.getLogger(BmpMonitoringStationImpl.class);
- private static final QName MONITOR_ID_QNAME = QName.cachedReference(QName.create(Monitor.QNAME, "monitor-id"));
+ private static final QName MONITOR_ID_QNAME = QName.create(Monitor.QNAME, "monitor-id").intern();
private final DOMDataBroker domDataBroker;
private final YangInstanceIdentifier yangMonitorId;
final InetAddress addr = InetAddresses.forString(s);
KeyMapping ret = null;
final Rfc2385Key rfc2385KeyPassword = mr.getPassword();
- if (rfc2385KeyPassword != null && !rfc2385KeyPassword.getValue().isEmpty()) {
- ret = new KeyMapping();
- ret.put(addr, rfc2385KeyPassword.getValue().getBytes(Charsets.US_ASCII));
- }
+ ret = KeyMapping.getKeyMapping(addr, rfc2385KeyPassword.getValue());
dispatcher.createClient(
Ipv4Util.toInetSocketAddress(mr.getAddress(), mr.getPort()),
- this.sessionManager, Optional.<KeyMapping>fromNullable(ret));
+ this.sessionManager, Optional.fromNullable(ret));
}
}
}
return new BmpMonitoringStationImpl(domDataBroker, yangMonitorId, channelFuture.sync().channel(), sessionManager, monitorId, dispatcher, mrs);
}
+ private static void ensureParentExists(final DOMDataWriteTransaction wTx, final YangInstanceIdentifier path) {
+ final ContainerNode parentNode = Builders.containerBuilder().withNodeIdentifier(
+ new NodeIdentifier(BmpMonitor.QNAME)).addChild(ImmutableNodes.mapNodeBuilder(Monitor.QNAME).build()).build();
+ wTx.merge(LogicalDatastoreType.OPERATIONAL, path, parentNode);
+ }
+
private void createEmptyMonitor() {
final DOMDataWriteTransaction wTx = this.domDataBroker.newWriteOnlyTransaction();
+ ensureParentExists(wTx, YangInstanceIdentifier.of(BmpMonitor.QNAME));
wTx.put(LogicalDatastoreType.OPERATIONAL,
- YangInstanceIdentifier.of(BmpMonitor.QNAME),
- Builders.containerBuilder()
- .withNodeIdentifier(
- new NodeIdentifier(BmpMonitor.QNAME))
- .addChild(ImmutableNodes.mapNodeBuilder(Monitor.QNAME)
- .addChild(ImmutableNodes.mapEntryBuilder(Monitor.QNAME, MONITOR_ID_QNAME, this.monitorId.getValue())
- .addChild(ImmutableNodes.leafNode(MONITOR_ID_QNAME, this.monitorId.getValue()))
- .addChild(ImmutableNodes.mapNodeBuilder(Router.QNAME).build())
- .build()).build())
- .build());
+ YangInstanceIdentifier.builder().node(BmpMonitor.QNAME).node(Monitor.QNAME)
+ .nodeWithKey(Monitor.QNAME, MONITOR_ID_QNAME, this.monitorId.getValue()).build(),
+ ImmutableNodes.mapEntryBuilder(Monitor.QNAME, MONITOR_ID_QNAME, this.monitorId.getValue())
+ .addChild(ImmutableNodes.leafNode(MONITOR_ID_QNAME, this.monitorId.getValue()))
+ .addChild(ImmutableNodes.mapNodeBuilder(Router.QNAME).build())
+ .build());
try {
wTx.submit().checkedGet();
} catch (final TransactionCommitFailedException e) {
@Override
public void close() throws Exception {
- this.channel.close().addListener(new ChannelFutureListener() {
- @Override
- public void operationComplete(final ChannelFuture channelFuture) throws Exception {
- BmpMonitoringStationImpl.this.sessionManager.close();
- }
- }).await();
+ this.channel.close().addListener((ChannelFutureListener) channelFuture -> BmpMonitoringStationImpl.this.sessionManager.close()).await();
final DOMDataWriteTransaction wTx = this.domDataBroker.newWriteOnlyTransaction();
wTx.delete(LogicalDatastoreType.OPERATIONAL, this.yangMonitorId);