2 * Copyright (c) 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.netvirt.qosservice.recovery;
10 import javax.inject.Inject;
11 import javax.inject.Singleton;
12 import org.opendaylight.serviceutils.srm.RecoverableListener;
13 import org.opendaylight.serviceutils.srm.ServiceRecoveryInterface;
14 import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.serviceutils.srm.types.rev180626.NetvirtQos;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
21 public class QosServiceRecoveryHandler implements ServiceRecoveryInterface {
23 private static final Logger LOG = LoggerFactory.getLogger(QosServiceRecoveryHandler.class);
24 private final ServiceRecoveryRegistry serviceRecoveryRegistry;
27 public QosServiceRecoveryHandler(final ServiceRecoveryRegistry serviceRecoveryRegistry) {
28 LOG.info("Registering Qos for service recovery");
29 this.serviceRecoveryRegistry = serviceRecoveryRegistry;
30 serviceRecoveryRegistry.registerServiceRecoveryRegistry(buildServiceRegistryKey(), this);
34 public void recoverService(final String entityId) {
35 LOG.info("recover QOS service by de-registering and registering all relevant listeners");
36 deregisterListeners();
40 private void deregisterListeners() {
41 LOG.trace("De-Registering QOS Listeners for recovery");
42 serviceRecoveryRegistry.getRecoverableListeners(buildServiceRegistryKey())
43 .forEach((RecoverableListener::deregisterListener));
46 private void registerListeners() {
47 LOG.trace("Re-Registering QOS Listeners for recovery");
48 serviceRecoveryRegistry.getRecoverableListeners(buildServiceRegistryKey())
49 .forEach((RecoverableListener::registerListener));
52 public String buildServiceRegistryKey() {
53 return NetvirtQos.class.toString();