<groupId>org.opendaylight.mdsal</groupId>
<artifactId>mdsal-eos-binding-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint-maven-plugin-annotation</artifactId>
+ <optional>true</optional>
+ </dependency>
<!-- project specific dependencies -->
<dependency>
<groupId>${project.groupId}</groupId>
<build>
<plugins>
+ <plugin>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint-maven-plugin</artifactId>
+ <configuration>
+ <scanPaths>org.opendaylight.ovsdb.hwvtepsouthbound</scanPaths>
+ </configuration>
+ </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
+ <Karaf-Commands>org.opendaylight.ovsdb.hwvtepsouthbound.TransactionHistoryCmd</Karaf-Commands>
<Private-Package>org.opendaylight.ovsdb.schema.hardwarevtep</Private-Package>
<Export-Package>org.opendaylight.ovsdb.hwvtepsouthbound.*,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.hwvtepsouthbound.impl.rev150901.*</Export-Package>
</instructions>
import java.util.Collection;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.apache.aries.blueprint.annotation.service.Reference;
import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@Singleton
public class HwvtepSouthboundProvider implements ClusteredDataTreeChangeListener<Topology>, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundProvider.class);
private final AtomicBoolean registered = new AtomicBoolean(false);
private ListenerRegistration<HwvtepSouthboundProvider> operTopologyRegistration;
- public HwvtepSouthboundProvider(final DataBroker dataBroker,
- final EntityOwnershipService entityOwnershipServiceDependency,
- final OvsdbConnection ovsdbConnection,
- final DOMSchemaService schemaService,
- final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) {
+ @Inject
+ public HwvtepSouthboundProvider(@Reference final DataBroker dataBroker,
+ @Reference final EntityOwnershipService entityOwnershipServiceDependency,
+ @Reference final OvsdbConnection ovsdbConnection,
+ @Reference final DOMSchemaService schemaService,
+ @Reference final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) {
this.dataBroker = dataBroker;
this.entityOwnershipService = entityOwnershipServiceDependency;
registration = null;
/**
* Used by blueprint when starting the container.
*/
+ @PostConstruct
public void init() {
LOG.info("HwvtepSouthboundProvider Session Initiated");
txInvoker = new TransactionInvokerImpl(dataBroker);
}
@Override
+ @PreDestroy
@SuppressWarnings("checkstyle:IllegalCatch")
public void close() throws Exception {
LOG.info("HwvtepSouthboundProvider Closed");
xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
odl:use-default-for-reference-types="true">
- <reference id="dataBroker"
- interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
- odl:type="default" />
- <reference id="eos"
- interface="org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService" />
- <reference id="ovsdbConnection" interface="org.opendaylight.ovsdb.lib.OvsdbConnection" />
- <reference id="schemaService"
- interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
- <reference id="bindingNormalizedNodeSerializer"
- interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer" />
-
- <bean id="hwvtepProvider"
- class="org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProvider"
- init-method="init" destroy-method="close">
- <argument ref="dataBroker" />
- <argument ref="eos" />
- <argument ref="ovsdbConnection" />
- <argument ref="schemaService" />
- <argument ref="bindingNormalizedNodeSerializer" />
- </bean>
-
<command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
<command>
<action class="org.opendaylight.ovsdb.hwvtepsouthbound.TransactionHistoryCmd">
- <argument ref="hwvtepProvider" />
+ <argument ref="hwvtepSouthboundProvider" />
</action>
</command>
</command-bundle>
</properties>
<dependencies>
+ <dependency>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint-maven-plugin-annotation</artifactId>
+ <optional>true</optional>
+ </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</testResource>
</testResources>
<plugins>
+ <plugin>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint-maven-plugin</artifactId>
+ <configuration>
+ <scanPaths>org.opendaylight.ovsdb.lib</scanPaths>
+ </configuration>
+ </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
import java.util.concurrent.atomic.AtomicBoolean;
import javax.annotation.Nullable;
import javax.inject.Inject;
+import javax.inject.Singleton;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult.HandshakeStatus;
import javax.net.ssl.SSLPeerUnverifiedException;
+import org.apache.aries.blueprint.annotation.service.Reference;
+import org.apache.aries.blueprint.annotation.service.Service;
import org.opendaylight.aaa.cert.api.ICertificateManager;
import org.opendaylight.ovsdb.lib.OvsdbClient;
import org.opendaylight.ovsdb.lib.OvsdbConnection;
* environment. Hence a single instance of the service will be active (via Service Registry in OSGi)
* and a Singleton object in a non-OSGi environment.
*/
+@Singleton
+@Service(classes = OvsdbConnection.class)
public class OvsdbConnectionService implements AutoCloseable, OvsdbConnection {
private static final Logger LOG = LoggerFactory.getLogger(OvsdbConnectionService.class);
private static final int IDLE_READER_TIMEOUT = 30;
private volatile int listenerPort = 6640;
@Inject
- public OvsdbConnectionService(ICertificateManager certManagerSrv) {
+ public OvsdbConnectionService(@Reference(filter = "type=default-certificate-manager")
+ ICertificateManager certManagerSrv) {
this.certManagerSrv = certManagerSrv;
}
--- /dev/null
+/*
+ * Copyright © 2014, 2017 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.ovsdb.lib.impl;
+
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OvsdbConnectionServiceConfigurator {
+
+ private static final Logger LOG = LoggerFactory.getLogger(OvsdbConnectionServiceConfigurator.class);
+
+ private static final String JSON_RPC_DECODER_MAX_FRAME_LENGTH_PARAM = "json-rpc-decoder-max-frame-length";
+ private static final String USE_SSL_PARAM = "use-ssl";
+ private static final String OVSDB_RPC_TASK_TIMEOUT_PARAM = "ovsdb-rpc-task-timeout";
+ private static final String OVSDB_LISTENER_PORT_PARAM = "ovsdb-listener-port";
+ private final OvsdbConnectionService ovsdbconnection;
+
+ public OvsdbConnectionServiceConfigurator(OvsdbConnectionService ovsdbconnection) {
+ this.ovsdbconnection = ovsdbconnection;
+ }
+
+ public void setOvsdbRpcTaskTimeout(int timeout) {
+ ovsdbconnection.setOvsdbRpcTaskTimeout(timeout);
+ }
+
+ public void setUseSsl(boolean flag) {
+ ovsdbconnection.setUseSsl(flag);
+ }
+
+ public void setJsonRpcDecoderMaxFrameLength(int maxFrameLength) {
+ ovsdbconnection.setJsonRpcDecoderMaxFrameLength(maxFrameLength);
+ }
+
+ public void setOvsdbListenerIp(String ip) {
+ ovsdbconnection.setOvsdbListenerIp(ip);
+ }
+
+ public void setOvsdbListenerPort(int portNumber) {
+ ovsdbconnection.setOvsdbListenerPort(portNumber);
+ }
+
+ public void updateConfigParameter(Map<String, Object> configParameters) {
+ if (configParameters != null && !configParameters.isEmpty()) {
+ LOG.debug("Config parameters received : {}", configParameters.entrySet());
+ for (Map.Entry<String, Object> paramEntry : configParameters.entrySet()) {
+ if (paramEntry.getKey().equalsIgnoreCase(OVSDB_RPC_TASK_TIMEOUT_PARAM)) {
+ ovsdbconnection.setOvsdbRpcTaskTimeout(Integer.parseInt((String) paramEntry.getValue()));
+ } else if (paramEntry.getKey().equalsIgnoreCase(USE_SSL_PARAM)) {
+ ovsdbconnection.setUseSsl(Boolean.parseBoolean(paramEntry.getValue().toString()));
+ }
+
+ }
+ }
+ }
+}
+
</cm:default-properties>
</cm:property-placeholder>
- <reference id="aaaCertificateManager"
- interface="org.opendaylight.aaa.cert.api.ICertificateManager"
- odl:type="default-certificate-manager"/>
-
<!-- Notify OvsdbConnectionService with any change in the config properties value-->
- <bean id="ovsdbConnectionService" class="org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService">
- <argument ref="aaaCertificateManager"/>
+ <bean id="ovsdbConnectionServiceConfigurator" class="org.opendaylight.ovsdb.lib.impl.OvsdbConnectionServiceConfigurator">
+ <argument ref="ovsdbConnectionService"/>
<cm:managed-properties persistent-id="org.opendaylight.ovsdb.library"
update-strategy="component-managed"
update-method="updateConfigParameter"/>
<property name="jsonRpcDecoderMaxFrameLength" value="${json-rpc-decoder-max-frame-length}"/>
</bean>
- <service ref="ovsdbConnectionService" interface="org.opendaylight.ovsdb.lib.OvsdbConnection"
- odl:type="default" />
-
</blueprint>
<version>1.5.0-SNAPSHOT</version>
</dependency>
<dependency>
- <groupId>org.apache.aries.blueprint</groupId>
- <artifactId>blueprint-maven-plugin-annotation</artifactId>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
<optional>true</optional>
</dependency>
<dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint-maven-plugin-annotation</artifactId>
+ <optional>true</optional>
</dependency>
<dependency>
<groupId>org.sonarsource.java</groupId>
</dependencies>
<build>
<plugins>
+ <plugin>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint-maven-plugin</artifactId>
+ <configuration>
+ <scanPaths>org.opendaylight.ovsdb.southbound</scanPaths>
+ </configuration>
+ </plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
import com.google.common.util.concurrent.CheckedFuture;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Collection;
-import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.apache.aries.blueprint.annotation.service.Reference;
import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+@Singleton
public class SouthboundProvider implements ClusteredDataTreeChangeListener<Topology>, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(SouthboundProvider.class);
private static final String ENTITY_TYPE = "ovsdb-southbound-provider";
- private static final String SKIP_MONITORING_MANAGER_STATUS_PARAM = "skip-monitoring-manager-status";
public static DataBroker getDb() {
return db;
private ListenerRegistration<SouthboundProvider> operTopologyRegistration;
private final OvsdbDiagStatusProvider ovsdbStatusProvider;
- public SouthboundProvider(final DataBroker dataBroker,
- final EntityOwnershipService entityOwnershipServiceDependency,
- final OvsdbConnection ovsdbConnection,
- final DOMSchemaService schemaService,
- final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer,
- final SystemReadyMonitor systemReadyMonitor,
- final DiagStatusService diagStatusService) {
+ @Inject
+ public SouthboundProvider(@Reference final DataBroker dataBroker,
+ @Reference final EntityOwnershipService entityOwnershipServiceDependency,
+ @Reference final OvsdbConnection ovsdbConnection,
+ @Reference final DOMSchemaService schemaService,
+ @Reference final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer,
+ @Reference final SystemReadyMonitor systemReadyMonitor,
+ @Reference final DiagStatusService diagStatusService) {
this.db = dataBroker;
this.entityOwnershipService = entityOwnershipServiceDependency;
registration = null;
/**
* Used by blueprint when starting the container.
*/
+ @PostConstruct
public void init() {
LOG.info("SouthboundProvider Session Initiated");
ovsdbStatusProvider.reportStatus(ServiceState.STARTING, "OVSDB initialization in progress");
}
@Override
+ @PreDestroy
public void close() {
LOG.info("SouthboundProvider Closed");
try {
}
}
- public void updateConfigParameter(Map<String, Object> configParameters) {
- if (configParameters != null && !configParameters.isEmpty()) {
- LOG.debug("Config parameters received : {}", configParameters.entrySet());
- for (Map.Entry<String, Object> paramEntry : configParameters.entrySet()) {
- if (paramEntry.getKey().equalsIgnoreCase(SKIP_MONITORING_MANAGER_STATUS_PARAM)) {
- setSkipMonitoringManagerStatus(Boolean.parseBoolean((String)paramEntry.getValue()));
- break;
- }
- }
- }
- }
-
public void setSkipMonitoringManagerStatus(boolean flag) {
LOG.debug("skipManagerStatus set to {}", flag);
if (flag) {
--- /dev/null
+/*
+ * Copyright (c) 2019 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.ovsdb.southbound;
+
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Helper to let Blueprint XML configure {@link SouthboundProvider}.
+ *
+ * @author Michael Vorburger.ch
+ */
+public class SouthboundProviderConfigurator {
+
+ private static final Logger LOG = LoggerFactory.getLogger(SouthboundProviderConfigurator.class);
+
+ private static final String SKIP_MONITORING_MANAGER_STATUS_PARAM = "skip-monitoring-manager-status";
+
+ private final SouthboundProvider southboundProvider;
+
+ public SouthboundProviderConfigurator(SouthboundProvider southboundProvider) {
+ this.southboundProvider = southboundProvider;
+ }
+
+ public void setSkipMonitoringManagerStatus(boolean flag) {
+ southboundProvider.setSkipMonitoringManagerStatus(flag);
+ }
+
+ public void updateConfigParameter(Map<String, Object> configParameters) {
+ if (configParameters != null && !configParameters.isEmpty()) {
+ LOG.debug("Config parameters received : {}", configParameters.entrySet());
+ for (Map.Entry<String, Object> paramEntry : configParameters.entrySet()) {
+ if (paramEntry.getKey().equalsIgnoreCase(SKIP_MONITORING_MANAGER_STATUS_PARAM)) {
+ southboundProvider
+ .setSkipMonitoringManagerStatus(Boolean.parseBoolean((String) paramEntry.getValue()));
+ break;
+ }
+ }
+ }
+ }
+}
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
odl:use-default-for-reference-types="true">
- <reference id="dataBroker"
- interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
- odl:type="default" />
- <reference id="eos"
- interface="org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService" />
- <reference id="ovsdbConnection" interface="org.opendaylight.ovsdb.lib.OvsdbConnection" />
- <reference id="schemaService"
- interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
- <reference id="bindingNormalizedNodeSerializer"
- interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer" />
- <reference id="systemReadyMonitor"
- interface="org.opendaylight.infrautils.ready.SystemReadyMonitor" />
- <reference id="diagStatusService" interface="org.opendaylight.infrautils.diagstatus.DiagStatusService" />
-
<cm:property-placeholder persistent-id="org.opendaylight.ovsdb.southbound" update-strategy="none">
<cm:default-properties>
<cm:property name="skip-monitoring-manager-status" value="false"/>
</cm:default-properties>
</cm:property-placeholder>
- <bean id="southboundProvider"
- class="org.opendaylight.ovsdb.southbound.SouthboundProvider"
- init-method="init" destroy-method="close">
+ <bean id="southboundProviderConfigurator"
+ class="org.opendaylight.ovsdb.southbound.SouthboundProviderConfigurator">
<cm:managed-properties persistent-id="org.opendaylight.ovsdb.southbound"
update-strategy="component-managed"
update-method="updateConfigParameter"/>
- <argument ref="dataBroker" />
- <argument ref="eos" />
- <argument ref="ovsdbConnection" />
- <argument ref="schemaService" />
- <argument ref="bindingNormalizedNodeSerializer" />
- <argument ref="systemReadyMonitor" />
- <argument ref="diagStatusService"/>
+ <argument ref="southboundProvider" />
<property name="skipMonitoringManagerStatus" value="${skip-monitoring-manager-status}"/>
</bean>