2 * Copyright (c) 2018 AT&T Intellectual Property. 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.protocol.bgp.openconfig.routing.policy.statement;
11 import static java.util.Objects.requireNonNull;
13 import java.util.ArrayList;
14 import java.util.List;
15 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
16 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.AbstractBGPStatementProviderActivator;
17 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.registry.StatementRegistryProvider;
18 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.AsPathPrepend;
19 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.LocalAsPathPrependHandler;
20 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.NonTransitiveAttributesFilterHandler;
21 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetClusterIdPrependHandler;
22 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetCommunityHandler;
23 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetExtCommunityHandler;
24 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetOriginatorIdPrependHandler;
25 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions.SetOriginatorIdToAdvertizerRouterIdHandler;
26 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchAfiSafiNotInHandler;
27 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchAsPathSetHandler;
28 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchBgpNeighborSetHandler;
29 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchClusterIdSetHandler;
30 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchCommunitySetHandler;
31 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchExtCommunitySetHandler;
32 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchOriginatorIdSetHandler;
33 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.MatchRoleSetHandler;
34 import org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.conditions.VpnNonMemberHandler;
35 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.bgp.match.conditions.MatchAsPathSet;
36 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.bgp.match.conditions.MatchCommunitySet;
37 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.bgp.match.conditions.MatchExtCommunitySet;
38 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.actions.bgp.actions.SetAsPathPrepend;
39 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.actions.bgp.actions.SetCommunity;
40 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.actions.bgp.actions.SetExtCommunity;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.LocalAsPathPrepend;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchAfiSafiNotInCondition;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchBgpNeighborCondition;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchClusterIdSetCondition;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchOriginatorIdSetCondition;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.MatchRoleSetCondition;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.NonTransitiveAttributesFilter;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.SetClusterIdPrepend;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.SetLocalAddressAsNextHop;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.SetOriginatorIdPrepend;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.SetOriginatorIdToAdvertizerRouterId;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev180329.VpnNonMemberCondition;
54 public final class StatementActivator extends AbstractBGPStatementProviderActivator {
55 private final DataBroker dataBroker;
57 public StatementActivator(final DataBroker dataBroker) {
58 this.dataBroker = requireNonNull(dataBroker);
62 protected synchronized List<AutoCloseable> startImpl(final StatementRegistryProvider provider) {
63 final List<AutoCloseable> registration = new ArrayList<>(14);
64 registerActions(provider, registration);
65 registerConditions(provider, registration);
69 private void registerConditions(final StatementRegistryProvider provider, final List<AutoCloseable> registration) {
70 registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchRoleSetCondition.class,
71 new MatchRoleSetHandler(this.dataBroker)));
73 registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchOriginatorIdSetCondition.class,
74 new MatchOriginatorIdSetHandler(this.dataBroker)));
76 registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchClusterIdSetCondition.class,
77 new MatchClusterIdSetHandler(this.dataBroker)));
79 registration.add(provider.registerBgpConditionsPolicy(MatchAsPathSet.class,
80 new MatchAsPathSetHandler(this.dataBroker)));
82 registration.add(provider.registerBgpConditionsPolicy(MatchExtCommunitySet.class,
83 new MatchExtCommunitySetHandler(this.dataBroker)));
85 registration.add(provider.registerBgpConditionsPolicy(MatchCommunitySet.class,
86 new MatchCommunitySetHandler(this.dataBroker)));
88 registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchBgpNeighborCondition.class,
89 new MatchBgpNeighborSetHandler(this.dataBroker)));
91 registration.add(provider.registerBgpConditionsAugmentationPolicy(MatchAfiSafiNotInCondition.class,
92 MatchAfiSafiNotInHandler.getInstance()));
94 registration.add(provider.registerBgpConditionsAugmentationPolicy(VpnNonMemberCondition.class,
95 VpnNonMemberHandler.getInstance()));
98 private void registerActions(final StatementRegistryProvider provider, final List<AutoCloseable> registration) {
99 registration.add(provider.registerBgpActionPolicy(SetAsPathPrepend.class, new AsPathPrepend()));
101 registration.add(provider.registerBgpActionAugmentationPolicy(LocalAsPathPrepend.class,
102 new LocalAsPathPrependHandler()));
104 registration.add(provider.registerBgpActionPolicy(SetCommunity.class,
105 new SetCommunityHandler(this.dataBroker)));
107 registration.add(provider.registerBgpActionPolicy(SetExtCommunity.class,
108 new SetExtCommunityHandler(this.dataBroker)));
110 registration.add(provider.registerBgpActionAugmentationPolicy(SetOriginatorIdPrepend.class,
111 new SetOriginatorIdPrependHandler()));
113 registration.add(provider.registerBgpActionAugmentationPolicy(NonTransitiveAttributesFilter.class,
114 new NonTransitiveAttributesFilterHandler()));
116 registration.add(provider.registerBgpActionAugmentationPolicy(SetClusterIdPrepend.class,
117 new SetClusterIdPrependHandler()));
119 registration.add(provider.registerBgpActionAugmentationPolicy(SetOriginatorIdToAdvertizerRouterId.class,
120 SetOriginatorIdToAdvertizerRouterIdHandler.getInstance()));
122 registration.add(provider.registerBgpActionAugmentationPolicy(SetLocalAddressAsNextHop.class,
123 SetLocalAddressAsNextHopHandler.getInstance()));