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.elan.recovery.impl;
10 import javax.inject.Inject;
11 import javax.inject.Singleton;
12 import org.opendaylight.genius.srm.ServiceRecoveryInterface;
13 import org.opendaylight.genius.srm.ServiceRecoveryRegistry;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.srm.types.rev170711.NetvirtElan;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
19 public class ElanServiceRecoveryHandler implements ServiceRecoveryInterface {
21 private static final Logger LOG = LoggerFactory.getLogger(ElanServiceRecoveryHandler.class);
23 private final ServiceRecoveryRegistry serviceRecoveryRegistry;
26 public ElanServiceRecoveryHandler(final ServiceRecoveryRegistry serviceRecoveryRegistry) {
27 LOG.info("registering ELAN service recovery handlers");
28 this.serviceRecoveryRegistry = serviceRecoveryRegistry;
29 serviceRecoveryRegistry.registerServiceRecoveryRegistry(buildServiceRegistryKey(), this);
32 private void deregisterListeners() {
33 serviceRecoveryRegistry.getRecoverableListeners(buildServiceRegistryKey())
34 .forEach((recoverableListener -> recoverableListener.deregisterListener()));
37 private void registerListeners() {
38 serviceRecoveryRegistry.getRecoverableListeners(buildServiceRegistryKey())
39 .forEach((recoverableListener -> recoverableListener.registerListener()));
43 public void recoverService(final String entityId) {
44 LOG.info("recover ELAN service by deregistering and registering all relevant listeners");
45 deregisterListeners();
49 public String buildServiceRegistryKey() {
50 return NetvirtElan.class.toString();