Search in sources :

Example 1 with BgpConditionsAugmentationPolicy

use of org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy in project bgpcep by opendaylight.

the class BgpConditionsRegistry method matchImportConditions.

public boolean matchImportConditions(final RouteEntryBaseAttributes entryInfo, final BGPRouteEntryImportParameters routeEntryImportParameters, final Attributes attributes, final Conditions conditions) {
    final Conditions1 bgpConditionsAug = conditions.getAugmentation(Conditions1.class);
    if (bgpConditionsAug != null) {
        final BgpConditions bgpConditions = bgpConditionsAug.getBgpConditions();
        synchronized (this) {
            if (!matchImportCondition(entryInfo, routeEntryImportParameters, attributes, bgpConditions)) {
                return false;
            }
        }
        final Map<Class<? extends Augmentation<?>>, Augmentation<?>> bgpAug = BindingReflections.getAugmentations(bgpConditions);
        for (final Map.Entry<Class<? extends Augmentation<?>>, Augmentation<?>> entry : bgpAug.entrySet()) {
            final BgpConditionsAugmentationPolicy handler = this.bgpConditionsAugRegistry.get(entry.getKey());
            if (handler == null) {
                continue;
            }
            if (!handler.matchImportCondition(entryInfo, routeEntryImportParameters, handler.getConditionParameter(attributes), entry.getValue())) {
                return false;
            }
        }
    }
    return true;
}
Also used : Augmentation(org.opendaylight.yangtools.yang.binding.Augmentation) Conditions1(org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.Conditions1) BgpConditions(org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.conditions.BgpConditions) BgpConditionsAugmentationPolicy(org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy) HashMap(java.util.HashMap) Map(java.util.Map)

Example 2 with BgpConditionsAugmentationPolicy

use of org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy in project bgpcep by opendaylight.

the class BgpConditionsRegistry method registerBgpConditionsAugmentationPolicy.

public AbstractRegistration registerBgpConditionsAugmentationPolicy(final Class<? extends Augmentation<BgpConditions>> conditionPolicyClass, final BgpConditionsAugmentationPolicy conditionPolicy) {
    synchronized (this.bgpConditionsAugRegistry) {
        final BgpConditionsAugmentationPolicy prev = this.bgpConditionsAugRegistry.putIfAbsent(conditionPolicyClass, conditionPolicy);
        Preconditions.checkState(prev == null, "Condition Policy %s already registered %s", conditionPolicyClass, prev);
        return new AbstractRegistration() {

            @Override
            protected void removeRegistration() {
                synchronized (BgpConditionsRegistry.this.bgpConditionsAugRegistry) {
                    BgpConditionsRegistry.this.bgpConditionsAugRegistry.remove(conditionPolicyClass);
                }
            }
        };
    }
}
Also used : AbstractRegistration(org.opendaylight.yangtools.concepts.AbstractRegistration) BgpConditionsAugmentationPolicy(org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy)

Example 3 with BgpConditionsAugmentationPolicy

use of org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy in project bgpcep by opendaylight.

the class BgpConditionsRegistry method matchExportConditions.

@SuppressWarnings("unchecked")
public boolean matchExportConditions(final RouteEntryBaseAttributes entryInfo, final BGPRouteEntryExportParameters routeEntryExportParameters, final Attributes attributes, final Conditions conditions) {
    final Conditions1 bgpConditionsAug = conditions.getAugmentation(Conditions1.class);
    if (bgpConditionsAug != null) {
        final BgpConditions bgpConditions = bgpConditionsAug.getBgpConditions();
        if (!matchExportCondition(entryInfo, routeEntryExportParameters, attributes, bgpConditions)) {
            return false;
        }
        final Map<Class<? extends Augmentation<?>>, Augmentation<?>> bgpAug = BindingReflections.getAugmentations(bgpConditions);
        for (final Map.Entry<Class<? extends Augmentation<?>>, Augmentation<?>> entry : bgpAug.entrySet()) {
            final BgpConditionsAugmentationPolicy handler = this.bgpConditionsAugRegistry.get(entry.getKey());
            if (handler == null) {
                continue;
            }
            if (!handler.matchExportCondition(entryInfo, routeEntryExportParameters, handler.getConditionParameter(attributes), entry.getValue())) {
                return false;
            }
        }
    }
    return true;
}
Also used : Augmentation(org.opendaylight.yangtools.yang.binding.Augmentation) Conditions1(org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.Conditions1) BgpConditions(org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.conditions.BgpConditions) BgpConditionsAugmentationPolicy(org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

BgpConditionsAugmentationPolicy (org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.condition.BgpConditionsAugmentationPolicy)3 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Conditions1 (org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.Conditions1)2 BgpConditions (org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.policy.rev151009.routing.policy.policy.definitions.policy.definition.statements.statement.conditions.BgpConditions)2 Augmentation (org.opendaylight.yangtools.yang.binding.Augmentation)2 AbstractRegistration (org.opendaylight.yangtools.concepts.AbstractRegistration)1