<type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
<name>binding-rpc-broker</name>
</rpc-registry>
+ <domain-specific-registry>
+ <type xmlns:gbp="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">
+ gbp:domain-specific-registry
+ </type>
+ <name>domain-specific-registry</name>
+ </domain-specific-registry>
</module>
</modules>
</data>
@Override
public java.lang.AutoCloseable createInstance() {
- return new SxpMapperProviderImpl(getDataBrokerDependency(), getRpcRegistryDependency());
+ return new SxpMapperProviderImpl(getDataBrokerDependency(), getRpcRegistryDependency(),
+ getDomainSpecificRegistryDependency());
}
}
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import java.util.AbstractMap;
+import java.util.Map.Entry;
+
+import org.opendaylight.groupbasedpolicy.api.EndpointAugmentor;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.AddressEndpointReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.register.endpoint.input.ContainmentEndpointReg;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.AddressEndpointWithLocation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.endpoints.ContainmentEndpointWithLocation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointAug;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointAugBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointRegAug;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointWithLocationAug;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointWithLocationAugBuilder;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+
+public class SxpEndpointAugmentorImpl implements EndpointAugmentor {
+
+ @Override
+ public Entry<Class<? extends Augmentation<AddressEndpoint>>, Augmentation<AddressEndpoint>> buildAddressEndpointAugmentation(
+ AddressEndpointReg input) {
+ AddressEndpointRegAug addressEndpointRegAug = input.getAugmentation(AddressEndpointRegAug.class);
+ if (addressEndpointRegAug == null) {
+ return null;
+ }
+ AddressEndpointAug addressEndpointAug = new AddressEndpointAugBuilder(addressEndpointRegAug).build();
+ Entry<Class<? extends Augmentation<AddressEndpoint>>, Augmentation<AddressEndpoint>> entry =
+ new AbstractMap.SimpleEntry<>(AddressEndpointAug.class, addressEndpointAug);
+ return entry;
+ }
+
+ @Override
+ public Entry<Class<? extends Augmentation<ContainmentEndpoint>>, Augmentation<ContainmentEndpoint>> buildContainmentEndpointAugmentation(
+ ContainmentEndpointReg input) {
+ return null;
+ }
+
+ @Override
+ public Entry<Class<? extends Augmentation<AddressEndpointWithLocation>>, Augmentation<AddressEndpointWithLocation>> buildAddressEndpointWithLocationAugmentation(
+ AddressEndpoint input) {
+ AddressEndpointAug addressEndpointAug = input.getAugmentation(AddressEndpointAug.class);
+ if (addressEndpointAug == null) {
+ return null;
+ }
+ AddressEndpointWithLocationAug addressEndpointWithLocationAug =
+ new AddressEndpointWithLocationAugBuilder(addressEndpointAug).build();
+ Entry<Class<? extends Augmentation<AddressEndpointWithLocation>>, Augmentation<AddressEndpointWithLocation>> entry =
+ new AbstractMap.SimpleEntry<>(AddressEndpointWithLocationAug.class, addressEndpointWithLocationAug);
+ return entry;
+ }
+
+ @Override
+ public Entry<Class<? extends Augmentation<ContainmentEndpointWithLocation>>, Augmentation<ContainmentEndpointWithLocation>> buildContainmentEndpointWithLocationAugmentation(
+ ContainmentEndpoint input) {
+ return null;
+ }
+
+}
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.api.DomainSpecificRegistry;
+import org.opendaylight.groupbasedpolicy.api.EndpointAugmentor;
import org.opendaylight.groupbasedpolicy.sxp.mapper.api.DSAsyncDao;
import org.opendaylight.groupbasedpolicy.sxp.mapper.api.EPTemplateListener;
import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SimpleCachedDao;
private static final Logger LOG = LoggerFactory.getLogger(SxpMapperProviderImpl.class);
- private final DataBroker dataBrokerDependency;
- private final RpcProviderRegistry rpcRegistryDependency;
private final MasterDatabaseBindingListenerImpl sxpDatabaseListener;
private final SxpMapperReactor sxpMapperReactor;
private final EPTemplateListener epPolicyTemplateListener;
private final EPTemplateListener epForwardingTemplateListener;
+ private final DomainSpecificRegistry domainSpecificRegistry;
+ private final EndpointAugmentor sxpEndpointAugmentor;
- public SxpMapperProviderImpl(final DataBroker dataBroker, final RpcProviderRegistry rpcRegistryDependency) {
+ public SxpMapperProviderImpl(final DataBroker dataBroker, final RpcProviderRegistry rpcRegistryDependency,
+ final DomainSpecificRegistry domainSpecificRegistry) {
LOG.info("starting SxmMapper ..");
- this.dataBrokerDependency = dataBroker;
- this.rpcRegistryDependency = rpcRegistryDependency;
+ this.domainSpecificRegistry = domainSpecificRegistry;
final BaseEndpointService endpointService = rpcRegistryDependency.getRpcService(BaseEndpointService.class);
sxpMapperReactor = new SxpMapperReactorImpl(endpointService, dataBroker);
masterDBBindingDao, epForwardingTemplateDao);
epForwardingTemplateListener = new EPForwardingTemplateListenerImpl(dataBroker, sxpMapperReactor, epForwardingTemplateCachedDao,
masterDBBindingDao, epPolicyTemplateDao);
+ sxpEndpointAugmentor = new SxpEndpointAugmentorImpl();
+ domainSpecificRegistry.getEndpointAugmentorRegistry().register(sxpEndpointAugmentor);
LOG.info("started SxmMapper");
}
sxpDatabaseListener.close();
epPolicyTemplateListener.close();
epForwardingTemplateListener.close();
+ domainSpecificRegistry.getEndpointAugmentorRegistry().unregister(sxpEndpointAugmentor);
}
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.IpPrefixType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.l2_l3.rev160427.L3Context;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointRegAug;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.AddressEndpointRegAugBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.sxp.mapper.EndpointForwardingTemplateBySubnet;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.sxp.mapper.EndpointPolicyTemplateBySgt;
import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.master.database.fields.MasterDatabaseBinding;
.setNetworkDomainType(epForwardingTemplate.getNetworkContainment().getNetworkDomainType())
.setNetworkDomainId(epForwardingTemplate.getNetworkContainment().getNetworkDomainId())
.build())
- .build();
- final RegisterEndpointInput epInput = new RegisterEndpointInputBuilder()
- .setAddressEndpointReg(Collections.singletonList(new AddressEndpointRegBuilder()
- .setAddressType(IpPrefixType.class)
- .setAddress(address.getValue())
- .setContextType(L3Context.class)
- .setContextId(epForwardingTemplate.getL3Context())
- .setNetworkContainment(networkContainment)
- .setCondition(epPolicyTemplate.getConditions())
- .setTenant(epPolicyTemplate.getTenant())
- .setEndpointGroup(epPolicyTemplate.getEndpointGroups())
- .build()))
+ .build();
+ AddressEndpointRegAug sgtAugmentation =
+ new AddressEndpointRegAugBuilder().setSgt(masterDBBinding.getSecurityGroupTag()).build();
+ final RegisterEndpointInput epInput = new RegisterEndpointInputBuilder().setAddressEndpointReg(
+ Collections.singletonList(new AddressEndpointRegBuilder().setAddressType(IpPrefixType.class)
+ .setAddress(address.getValue())
+ .setContextType(L3Context.class)
+ .setContextId(epForwardingTemplate.getL3Context())
+ .setNetworkContainment(networkContainment)
+ .setCondition(epPolicyTemplate.getConditions())
+ .setTenant(epPolicyTemplate.getTenant())
+ .setEndpointGroup(epPolicyTemplate.getEndpointGroups())
+ .addAugmentation(AddressEndpointRegAug.class, sgtAugmentation)
+ .build()))
.build();
epForwardingTemplate.getL3Context();
import config { prefix config; revision-date 2013-04-05; }
import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+ import groupbasedpolicy-cfg {prefix gbpcfg; revision-date 2015-11-06; }
description
"This module contains the base YANG definitions for
}
}
}
+ //Domain specific registry
+ container domain-specific-registry {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity gbpcfg:domain-specific-registry;
+ }
+ }
+ }
}
}
}
import gbp-common { prefix gbp-common; revision-date 2014-04-21; }
import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
import forwarding { prefix forwarding; revision-date 2016-04-27; }
+ import base-endpoint { prefix base-edpoint; revision-date 2016-04-27; }
+ import yang-ext { prefix ext; revision-date 2013-07-09; }
+ import renderer { prefix renderer; revision-date 2015-11-03; }
description
"This module contains the YANG definitions for
}
}
}
+
+ grouping sxp-sgt {
+ description "SGT leaf dedicated for endpoint-rpc, endpoint container and renderer configuration
+ (attach by augmentation)";
+ leaf sgt {
+ type sxp-database:sgt;
+ }
+ }
+
+ augment "/base-endpoint:register-endpoint/base-endpoint:input/base-endpoint:address-endpoint-reg" {
+ ext:augment-identifier "address-endpoint-reg-aug";
+ uses sxp-sgt;
+ }
+
+ augment "/base-endpoint:endpoints/base-endpoint:address-endpoints/base-endpoint:address-endpoint" {
+ ext:augment-identifier "address-endpoint-aug";
+ uses sxp-sgt;
+ }
+
+ augment "renderer:renderers/renderer:renderer/renderer:renderer-policy/renderer:configuration/renderer:endpoints/renderer:address-endpoint-with-location" {
+ ext:augment-identifier "address-endpoint-with-location-aug";
+ uses sxp-sgt;
+ }
}