MDSAL-API Migration
[genius.git] / itm / itm-impl / src / main / java / org / opendaylight / genius / itm / diagstatus / ItmDiagStatusProvider.java
1 /*
2  * Copyright (c) 2017, 2018 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.genius.itm.diagstatus;
9
10 import javax.annotation.PreDestroy;
11 import javax.inject.Inject;
12 import javax.inject.Singleton;
13 import org.apache.aries.blueprint.annotation.service.Service;
14 import org.opendaylight.genius.itm.globals.ITMConstants;
15 import org.opendaylight.infrautils.diagstatus.DiagStatusService;
16 import org.opendaylight.infrautils.diagstatus.ServiceDescriptor;
17 import org.opendaylight.infrautils.diagstatus.ServiceState;
18 import org.opendaylight.infrautils.diagstatus.ServiceStatusProvider;
19
20 @Singleton
21 @Service(classes = ServiceStatusProvider.class)
22 public class ItmDiagStatusProvider implements ServiceStatusProvider {
23
24     private final DiagStatusService diagStatusService;
25     private volatile ServiceDescriptor serviceDescriptor;
26
27     @Inject
28     public ItmDiagStatusProvider(final DiagStatusService diagStatusService) {
29         this.diagStatusService = diagStatusService;
30         diagStatusService.register(ITMConstants.ITM_SERVICE_NAME);
31         reportStatus(ServiceState.STARTING);
32     }
33
34     @PreDestroy
35     public void close() {
36         reportStatus(ServiceState.UNREGISTERED);
37     }
38
39     public void reportStatus(ServiceState serviceState) {
40         serviceDescriptor = new ServiceDescriptor(ITMConstants.ITM_SERVICE_NAME, serviceState);
41         diagStatusService.report(serviceDescriptor);
42     }
43
44     public void reportStatus(Exception exception) {
45         serviceDescriptor = new ServiceDescriptor(ITMConstants.ITM_SERVICE_NAME, exception);
46         diagStatusService.report(serviceDescriptor);
47     }
48
49     @Override
50     public ServiceDescriptor getServiceDescriptor() {
51         // TODO Add logic here to derive the dynamic service state.
52         // Currently this is just returning the initial state.
53         return serviceDescriptor;
54     }
55 }