2 * Copyright (c) 2016 Cisco Systems, Inc. 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
9 package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl;
11 import com.google.common.base.Preconditions;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
14 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
15 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.api.IosXeRendererProvider;
16 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.cache.EpPolicyCacheImpl;
17 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.listener.EpPolicyTemplateBySgtListenerImpl;
18 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.listener.RendererConfigurationListenerImpl;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
24 * Purpose: bootstrap provider implementation of Ios-xe renderer
26 public class IosXeRendererProviderImpl implements IosXeRendererProvider, BindingAwareProvider {
28 private static final Logger LOG = LoggerFactory.getLogger(IosXeRendererProviderImpl.class);
30 private final DataBroker dataBroker;
31 private final RendererName rendererName;
32 private RendererConfigurationListenerImpl rendererConfigurationListener;
33 private EpPolicyTemplateBySgtListenerImpl epPolicyTemplateBySgtListener;
34 private EpPolicyCacheImpl epPolicyCache;
36 public IosXeRendererProviderImpl(final DataBroker dataBroker, final BindingAwareBroker broker,
37 final RendererName rendererName) {
38 LOG.debug("ios-xe renderer bootstrap");
39 this.dataBroker = Preconditions.checkNotNull(dataBroker, "missing dataBroker dependency");
40 this.rendererName = Preconditions.checkNotNull(rendererName, "missing rendererName param");
41 broker.registerProvider(this);
47 LOG.info("closing ios-xe renderer");
48 if (rendererConfigurationListener != null) {
49 rendererConfigurationListener.close();
51 if (epPolicyTemplateBySgtListener != null) {
52 epPolicyTemplateBySgtListener.close();
54 if (epPolicyCache != null) {
55 epPolicyCache.invalidateAll();
60 public void onSessionInitiated(final BindingAwareBroker.ProviderContext providerContext) {
61 LOG.info("starting ios-xe renderer");
62 //TODO register listeners:
63 // ep-policy-template-by-sgt
64 epPolicyCache = new EpPolicyCacheImpl();
65 epPolicyTemplateBySgtListener = new EpPolicyTemplateBySgtListenerImpl(dataBroker, epPolicyCache);
66 // renderer-configuration endpoints
67 rendererConfigurationListener = new RendererConfigurationListenerImpl(dataBroker, rendererName, epPolicyCache);
68 // supported node list maintenance
69 // TODO: upkeep of available renderer-nodes