From e161790d99cecdb9eecc8dc7214f335953870662 Mon Sep 17 00:00:00 2001 From: Michal Cmarada Date: Wed, 5 Apr 2017 13:22:11 +0200 Subject: [PATCH] Bug 8228 - metadata service fix made cleaner This patch sticks more to the architecture. In OPNFV scenarios, Openstack metadata service may be reached via DHCP port which acts as a GW to metadata server. VMs have a route configured to metadata server via DHCP port. Metadata IP and port are specified in blueprint cfg file and processed by neutron-mapper bundle. An ip-prefix endpoint is registered by neutron-mapper, it points to the same mac- address endpoint as DHCP ip-prefix endpoint, i.e. DHCP ip-prefix EP & Metadata ip-prefix EP point to the same mac address endpoint. This configuration is supported by VPP renderer's implementation of location resolver. In this case both DHCP and Metadata have the same absolute location. When ACL manager recongnizes this fact, it will build ACL for both endpoints behind the same interface. Remote IP prefix is revisioned here too. Remote IP prefix is mapped to GBP as external ip-prefix endpoint. Location resolver then looks for external interfaces and on nodes and create a relative location for this endpoint. Change-Id: Id72d5646fbd7af1a8094749e58ba714bb3d84959 Signed-off-by: Tomas Cechvala --- artifacts/pom.xml | 7 + features/features-groupedpolicy/pom.xml | 6 + .../src/main/features/features.xml | 2 + .../location/resolver/LocationResolver.java | 4 +- .../renderer/EndpointLocationInfo.java | 3 +- .../renderer/util/AddressEndpointUtils.java | 31 ++ .../util/DataTreeChangeHandler.java | 7 + .../groupbasedpolicy/util/EndpointUtils.java | 47 +++ .../groupbasedpolicy/util/IidFactory.java | 69 +--- neutron-mapper/pom.xml | 22 ++ .../impl/NeutronMapperInstance.java | 34 +- .../neutron/mapper/NeutronMapper.java | 11 +- .../infrastructure/MetadataService.java | 169 ++++++++++ .../mapper/infrastructure/NetworkClient.java | 10 +- .../mapper/infrastructure/NetworkService.java | 280 ++++------------ .../mapper/infrastructure/ServiceUtil.java | 166 ++++++++++ .../mapper/mapping/NeutronNetworkAware.java | 18 +- .../mapper/mapping/NeutronPortAware.java | 40 ++- .../rule/NeutronSecurityRuleAware.java | 59 +++- .../opendaylight/blueprint/neutron-mapper.xml | 12 +- neutron-mapper/src/main/resources/startup.cfg | 13 + .../neutron/mapper/NeutronMapperTest.java | 11 +- .../infrastructure/NetworkServiceTest.java | 64 +++- .../NeutronNetworkAwareDataStoreTest.java | 9 +- .../NeutronPortAwareDataStoreTest.java | 6 +- .../NeutronRouterAwareDataStoreTest.java | 6 +- ...eutronSecurityGroupAwareDataStoreTest.java | 21 +- ...NeutronSecurityRuleAwareDataStoreTest.java | 23 +- .../rule/NeutronSecurityRuleAwareTest.java | 11 +- .../test/NeutronMapperDataBrokerTest.java | 23 +- .../vpp/mapper/processors/PortHandler.java | 3 +- .../config/vpp_provider/impl/VppRenderer.java | 2 +- .../renderer/vpp/iface/AclManager.java | 77 ----- .../renderer/vpp/iface/InterfaceManager.java | 2 +- .../iface/VppEndpointLocationProvider.java | 310 +++++++++++++++--- .../renderer/vpp/manager/VppNodeManager.java | 28 ++ .../vpp/policy/ForwardingManager.java | 6 +- .../vpp/policy/VppRendererPolicyManager.java | 5 +- .../vpp/policy/acl/AccessListUtil.java | 64 +--- .../renderer/vpp/policy/acl/AclManager.java | 179 ++++++++++ .../vpp/policy/acl/DestinationMapper.java | 24 +- .../renderer/vpp/policy/acl/SourceMapper.java | 25 +- .../renderer/vpp/util/VppIidFactory.java | 8 +- .../vpp/iface/InterfaceManagerTest.java | 25 +- .../VppEndpointLocationProviderTest.java | 56 ++-- .../policy/BridgeDomainManagerImplTest.java | 2 +- .../vpp/policy/ForwardingManagerTest.java | 2 +- .../policy/VppRendererPolicyManagerTest.java | 14 +- .../vpp/policy/acl/AccessListUtilTest.java | 15 +- 49 files changed, 1465 insertions(+), 566 deletions(-) create mode 100644 neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/MetadataService.java create mode 100644 neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/ServiceUtil.java create mode 100644 neutron-mapper/src/main/resources/startup.cfg delete mode 100644 renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/AclManager.java create mode 100644 renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/acl/AclManager.java diff --git a/artifacts/pom.xml b/artifacts/pom.xml index 61d208d0b..7a603a8ec 100755 --- a/artifacts/pom.xml +++ b/artifacts/pom.xml @@ -174,6 +174,13 @@ xml config + + ${project.groupId} + neutron-mapper + ${project.version} + cfg + config + ${project.groupId} neutron-vpp-mapper diff --git a/features/features-groupedpolicy/pom.xml b/features/features-groupedpolicy/pom.xml index 5dabb6cb9..36ead170d 100644 --- a/features/features-groupedpolicy/pom.xml +++ b/features/features-groupedpolicy/pom.xml @@ -414,5 +414,11 @@ cfg config + + ${project.groupId} + neutron-mapper + cfg + config + diff --git a/features/features-groupedpolicy/src/main/features/features.xml b/features/features-groupedpolicy/src/main/features/features.xml index f32fb7b32..945d05798 100755 --- a/features/features-groupedpolicy/src/main/features/features.xml +++ b/features/features-groupedpolicy/src/main/features/features.xml @@ -135,6 +135,8 @@ mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}} mvn:org.opendaylight.groupbasedpolicy/neutron-mapper/{{VERSION}} mvn:org.opendaylight.groupbasedpolicy/l2-l3-domain-extension/{{VERSION}}/xml/config + + mvn:org.opendaylight.groupbasedpolicy/neutron-mapper/{{VERSION}}/cfg/config