2 * Copyright (c) 2017, 2018 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.genius.interfacemanager.diagstatus;
10 import javax.annotation.PreDestroy;
11 import javax.inject.Inject;
12 import javax.inject.Singleton;
14 import org.apache.aries.blueprint.annotation.service.Reference;
15 import org.apache.aries.blueprint.annotation.service.Service;
16 import org.opendaylight.genius.interfacemanager.IfmConstants;
17 import org.opendaylight.infrautils.diagstatus.DiagStatusService;
18 import org.opendaylight.infrautils.diagstatus.ServiceDescriptor;
19 import org.opendaylight.infrautils.diagstatus.ServiceState;
20 import org.opendaylight.infrautils.diagstatus.ServiceStatusProvider;
23 @Service(classes = ServiceStatusProvider.class)
24 public class IfmDiagStatusProvider implements ServiceStatusProvider {
26 private final DiagStatusService diagStatusService;
27 private volatile ServiceDescriptor serviceDescriptor;
30 public IfmDiagStatusProvider(@Reference final DiagStatusService diagStatusService) {
31 this.diagStatusService = diagStatusService;
32 diagStatusService.register(IfmConstants.INTERFACE_SERVICE_NAME);
33 reportStatus(ServiceState.STARTING);
36 public void reportStatus(ServiceState serviceState) {
37 serviceDescriptor = new ServiceDescriptor(IfmConstants.INTERFACE_SERVICE_NAME, serviceState);
38 diagStatusService.report(serviceDescriptor);
41 public void reportStatus(Throwable exception) {
42 serviceDescriptor = new ServiceDescriptor(IfmConstants.INTERFACE_SERVICE_NAME, exception);
43 diagStatusService.report(serviceDescriptor);
48 reportStatus(ServiceState.UNREGISTERED);
52 public ServiceDescriptor getServiceDescriptor() {
53 // TODO Add logic here to derive the dynamic service state.
54 return serviceDescriptor;