From 07d023c5c6e7428ef1312efb2438e1e891a24227 Mon Sep 17 00:00:00 2001 From: Vishal Thapar Date: Fri, 8 Jun 2018 09:30:23 +0530 Subject: [PATCH] OVSDB-458 DiagStatus support for OVSDB Change-Id: I5a3d46d612d478746d25f1e7c0ef4095f995c839 Signed-off-by: Vishal Thapar --- .../odl-ovsdb-southbound-impl/pom.xml | 13 +++++- southbound/southbound-impl/pom.xml | 14 ++++++ .../southbound/OvsdbDiagStatusProvider.java | 44 +++++++++++++++++++ .../ovsdb/southbound/SouthboundProvider.java | 14 +++++- .../org/opendaylight/blueprint/southbound.xml | 4 +- .../southbound/SouthboundProviderTest.java | 13 ++++-- 6 files changed, 94 insertions(+), 8 deletions(-) create mode 100644 southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbDiagStatusProvider.java diff --git a/southbound/southbound-features/odl-ovsdb-southbound-impl/pom.xml b/southbound/southbound-features/odl-ovsdb-southbound-impl/pom.xml index aa9458794..ff9721926 100644 --- a/southbound/southbound-features/odl-ovsdb-southbound-impl/pom.xml +++ b/southbound/southbound-features/odl-ovsdb-southbound-impl/pom.xml @@ -1,6 +1,6 @@ + + org.opendaylight.infrautils + diagstatus-api + 1.4.0-SNAPSHOT + + + org.ops4j.pax.cdi + pax-cdi-api + true + + + javax.inject + javax.inject + org.sonarsource.java sonar-jacoco-listeners diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbDiagStatusProvider.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbDiagStatusProvider.java new file mode 100644 index 000000000..71185aec3 --- /dev/null +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/OvsdbDiagStatusProvider.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018 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 org.opendaylight.infrautils.diagstatus.DiagStatusService; +import org.opendaylight.infrautils.diagstatus.ServiceDescriptor; +import org.opendaylight.infrautils.diagstatus.ServiceState; +import org.opendaylight.infrautils.diagstatus.ServiceStatusProvider; +import org.ops4j.pax.cdi.api.OsgiServiceProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@OsgiServiceProvider(classes = ServiceStatusProvider.class) +public class OvsdbDiagStatusProvider implements ServiceStatusProvider { + + private static final Logger LOG = LoggerFactory.getLogger(OvsdbDiagStatusProvider.class); + private static final String OVSDB_SERVICE_NAME = "OVSDB"; + + private final DiagStatusService diagStatusService; + private volatile ServiceDescriptor serviceDescriptor; + + public OvsdbDiagStatusProvider(final DiagStatusService diagStatusService) { + this.diagStatusService = diagStatusService; + diagStatusService.register(OVSDB_SERVICE_NAME); + } + + + public void reportStatus(ServiceState serviceState, String description) { + LOG.debug("reporting status as {} for {}", serviceState, OVSDB_SERVICE_NAME); + serviceDescriptor = new ServiceDescriptor(OVSDB_SERVICE_NAME, serviceState, description); + diagStatusService.report(serviceDescriptor); + } + + @Override + public ServiceDescriptor getServiceDescriptor() { + // TODO Check 6640 port status to report dynamic status + return serviceDescriptor; + } +} diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java index 154c881f0..990a0df76 100644 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2014, 2018 Cisco Systems, 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, @@ -21,6 +21,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.infrautils.diagstatus.DiagStatusService; +import org.opendaylight.infrautils.diagstatus.ServiceState; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.eos.binding.api.Entity; @@ -65,16 +67,20 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener operTopologyRegistration; + private final OvsdbDiagStatusProvider ovsdbStatusProvider; public SouthboundProvider(final DataBroker dataBroker, final EntityOwnershipService entityOwnershipServiceDependency, final OvsdbConnection ovsdbConnection, final DOMSchemaService schemaService, - final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer) { + final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer, + final DiagStatusService diagStatusService) { + this.db = dataBroker; this.entityOwnershipService = entityOwnershipServiceDependency; registration = null; this.ovsdbConnection = ovsdbConnection; + ovsdbStatusProvider = new OvsdbDiagStatusProvider(diagStatusService); this.instanceIdentifierCodec = new InstanceIdentifierCodec(schemaService, bindingNormalizedNodeSerializer); @@ -86,6 +92,7 @@ public class SouthboundProvider implements ClusteredDataTreeChangeListener + - + @@ -32,6 +33,7 @@ + diff --git a/southbound/southbound-impl/src/test/java/org/opendaylight/ovsdb/southbound/SouthboundProviderTest.java b/southbound/southbound-impl/src/test/java/org/opendaylight/ovsdb/southbound/SouthboundProviderTest.java index 7da291c49..254e559d1 100644 --- a/southbound/southbound-impl/src/test/java/org/opendaylight/ovsdb/southbound/SouthboundProviderTest.java +++ b/southbound/southbound-impl/src/test/java/org/opendaylight/ovsdb/southbound/SouthboundProviderTest.java @@ -25,6 +25,7 @@ import org.mockito.Mockito; import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTest; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.infrautils.diagstatus.DiagStatusService; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.eos.binding.api.Entity; @@ -67,7 +68,8 @@ public class SouthboundProviderTest extends AbstractDataBrokerTest { entityOwnershipService, Mockito.mock(OvsdbConnection.class), Mockito.mock(DOMSchemaService.class), - Mockito.mock(BindingNormalizedNodeSerializer.class))) { + Mockito.mock(BindingNormalizedNodeSerializer.class), + Mockito.mock(DiagStatusService.class))) { // Initiate the session southboundProvider.init(); @@ -92,7 +94,8 @@ public class SouthboundProviderTest extends AbstractDataBrokerTest { entityOwnershipService, Mockito.mock(OvsdbConnection.class), Mockito.mock(DOMSchemaService.class), - Mockito.mock(BindingNormalizedNodeSerializer.class))) { + Mockito.mock(BindingNormalizedNodeSerializer.class), + Mockito.mock(DiagStatusService.class))) { // Initiate the session southboundProvider.init(); @@ -119,7 +122,8 @@ public class SouthboundProviderTest extends AbstractDataBrokerTest { entityOwnershipService, Mockito.mock(OvsdbConnection.class), Mockito.mock(DOMSchemaService.class), - Mockito.mock(BindingNormalizedNodeSerializer.class))) { + Mockito.mock(BindingNormalizedNodeSerializer.class), + Mockito.mock(DiagStatusService.class))) { southboundProvider.init(); @@ -141,7 +145,8 @@ public class SouthboundProviderTest extends AbstractDataBrokerTest { entityOwnershipService, Mockito.mock(OvsdbConnection.class), Mockito.mock(DOMSchemaService.class), - Mockito.mock(BindingNormalizedNodeSerializer.class))) { + Mockito.mock(BindingNormalizedNodeSerializer.class), + Mockito.mock(DiagStatusService.class))) { southboundProvider.init(); -- 2.36.6