merge to groupid 64/37464/1
authorSam Hague <shague@redhat.com>
Tue, 12 Apr 2016 00:03:25 +0000 (20:03 -0400)
committerSam Hague <shague@redhat.com>
Tue, 12 Apr 2016 01:13:45 +0000 (21:13 -0400)
Change-Id: I47a5c2c4e9afbbdd471887cd17ddbe36f4fdc55e
Signed-off-by: Sam Hague <shague@redhat.com>
399 files changed:
README
commons/it/pom.xml
commons/pom.xml
docker-compose.yml [moved from fig.yml with 62% similarity]
features/pom.xml
features/src/main/features/features.xml
karaf/pom.xml
netvirt-artifacts/pom.xml [moved from ovsdb-artifacts/pom.xml with 88% similarity]
netvirt/api/pom.xml
netvirt/api/src/main/yang/netvirt-common.yang [new file with mode: 0644]
netvirt/api/src/main/yang/netvirt-devices.yang [new file with mode: 0644]
netvirt/api/src/main/yang/netvirt-l2-networks.yang [new file with mode: 0644]
netvirt/api/src/main/yang/netvirt-ports.yang [new file with mode: 0644]
netvirt/api/src/main/yang/netvirt.yang
netvirt/it/pom.xml [new file with mode: 0644]
netvirt/it/src/test/java/org/opendaylight/netvirt/netvirt/it/NetvirtIT.java [new file with mode: 0644]
netvirt/pom.xml
netvirt/renderers/hwgw/pom.xml
netvirt/renderers/hwgw/src/main/config/default-config.xml
netvirt/renderers/hwgw/src/main/java/org/opendaylight/netvirt/netvirt/renderers/hwgw/HwgwProvider.java [moved from netvirt/renderers/hwgw/src/main/java/org/opendaylight/ovsdb/netvirt/renderers/hwgw/HwgwProvider.java with 94% similarity]
netvirt/renderers/hwgw/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/hwgw/rev151227/HwgwModule.java
netvirt/renderers/hwgw/src/test/java/org/opendaylight/netvirt/netvirt/renderers/hwgw/HwgwProviderTest.java [moved from netvirt/renderers/hwgw/src/test/java/org/opendaylight/ovsdb/netvirt/renderers/hwgw/HwgwProviderTest.java with 94% similarity]
netvirt/renderers/hwgw/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/hwgw/rev151227/HwgwModuleTest.java
netvirt/renderers/neutron/pom.xml [new file with mode: 0644]
netvirt/renderers/neutron/src/main/config/default-config.xml [new file with mode: 0644]
netvirt/renderers/neutron/src/main/java/org/opendaylight/netvirt/netvirt/renderers/neutron/NeutronProvider.java [new file with mode: 0644]
netvirt/renderers/neutron/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModule.java [new file with mode: 0644]
netvirt/renderers/neutron/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleFactory.java [new file with mode: 0644]
netvirt/renderers/neutron/src/main/yang/netvirt-neutron.yang [new file with mode: 0644]
netvirt/renderers/neutron/src/test/java/org/opendaylight/netvirt/netvirt/renderers/neutron/NeutronProviderTest.java [new file with mode: 0644]
netvirt/renderers/neutron/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleFactoryTest.java [new file with mode: 0644]
netvirt/renderers/neutron/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleTest.java [new file with mode: 0644]
netvirt/renderers/pom.xml
openstack/net-virt-it/pom.xml
openstack/net-virt-it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/it/NetvirtIT.java [moved from openstack/net-virt-it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/it/NetvirtIT.java with 81% similarity]
openstack/net-virt-it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/it/NetvirtITConstants.java [moved from openstack/net-virt-it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/it/NetvirtITConstants.java with 97% similarity]
openstack/net-virt-it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/it/NeutronUtils.java [moved from openstack/net-virt-it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/it/NeutronUtils.java with 97% similarity]
openstack/net-virt-providers/pom.xml
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/ConfigActivator.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/ConfigActivator.java with 75% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/ConfigInterface.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/ConfigInterface.java with 89% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/NetvirtProvidersConfigImpl.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/NetvirtProvidersConfigImpl.java with 91% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/NetvirtProvidersProvider.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/NetvirtProvidersProvider.java with 96% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/AbstractServiceInstance.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/AbstractServiceInstance.java with 94% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/OF13Provider.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/OF13Provider.java with 93% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/PipelineOrchestrator.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/PipelineOrchestrator.java with 94% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/PipelineOrchestratorImpl.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/PipelineOrchestratorImpl.java with 92% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/Service.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/Service.java with 96% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/ArpResponderService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderService.java with 89% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/ClassifierService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ClassifierService.java with 96% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/EgressAclService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/EgressAclService.java with 64% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/IcmpEchoResponderService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/IcmpEchoResponderService.java with 92% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/InboundNatService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatService.java with 89% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/IngressAclService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/IngressAclService.java with 64% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/L2ForwardingService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L2ForwardingService.java with 98% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/L2RewriteService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L2RewriteService.java with 69% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3ForwardingService.java with 84% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/LoadBalancerService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/LoadBalancerService.java with 92% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/OutboundNatService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatService.java with 91% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/RoutingService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingService.java with 91% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/Arp.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/Arp.java with 98% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpFlowFactory.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpFlowFactory.java with 98% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpMessageAddress.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpMessageAddress.java with 93% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpOperation.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpOperation.java with 91% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpResolverMetadata.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpResolverMetadata.java with 98% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpResolverUtils.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpResolverUtils.java with 95% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpSender.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpSender.java with 98% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/ArpUtils.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/ArpUtils.java with 97% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/arp/GatewayMacResolverService.java [moved from openstack/net-virt-providers/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/arp/GatewayMacResolverService.java with 97% similarity]
openstack/net-virt-providers/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/providers/impl/rev150513/NetvirtProvidersImplModule.java
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/NetvirtProvidersProviderTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/NetvirtProvidersProviderTest.java with 87% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/AbstractServiceInstanceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/AbstractServiceInstanceTest.java with 97% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/OF13ProviderTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/OF13ProviderTest.java with 96% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/PipelineOrchestratorImplTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/PipelineOrchestratorImplTest.java with 94% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/PipelineOrchestratorTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/PipelineOrchestratorTest.java with 95% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/ArpResponderServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ArpResponderServiceTest.java with 91% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/ClassifierServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/ClassifierServiceTest.java with 96% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/EgressAclServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/EgressAclServiceTest.java with 98% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/IcmpEchoResponderServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/IcmpEchoResponderServiceTest.java with 91% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/InboundNatServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/InboundNatServiceTest.java with 91% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/IngressAclServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/IngressAclServiceTest.java with 98% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/L2FowardingServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L2FowardingServiceTest.java with 97% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/L2RewriteServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L2RewriteServiceTest.java with 86% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/L3FowardingServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/L3FowardingServiceTest.java with 88% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/LoadBalancerServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/LoadBalancerServiceTest.java with 67% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/OutboundNatServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/OutboundNatServiceTest.java with 79% similarity]
openstack/net-virt-providers/src/test/java/org/opendaylight/netvirt/openstack/netvirt/providers/openflow13/services/RoutingServiceTest.java [moved from openstack/net-virt-providers/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/providers/openflow13/services/RoutingServiceTest.java with 91% similarity]
openstack/net-virt-sfc/api/pom.xml
openstack/net-virt-sfc/api/src/main/yang/ietf-acl.yang [deleted file]
openstack/net-virt-sfc/api/src/main/yang/packet-fields.yang [deleted file]
openstack/net-virt-sfc/artifacts/pom.xml
openstack/net-virt-sfc/features/pom.xml
openstack/net-virt-sfc/features/production/pom.xml [deleted file]
openstack/net-virt-sfc/features/production/src/main/features/features.xml [deleted file]
openstack/net-virt-sfc/features/src/main/features/features.xml
openstack/net-virt-sfc/features/test/pom.xml [deleted file]
openstack/net-virt-sfc/features/test/src/main/features/features.xml [deleted file]
openstack/net-virt-sfc/impl/pom.xml
openstack/net-virt-sfc/impl/src/main/config/default-config.xml
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/DelegatingDataTreeListener.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/INetvirtSfcDataProcessor.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/INetvirtSfcDataProcessor.java with 85% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/INetvirtSfcOF13Provider.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/INetvirtSfcOF13Provider.java with 97% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/ISfcClassifierService.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/ISfcClassifierService.java with 83% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/ISfcStandaloneClassifierService.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/ISfcStandaloneClassifierService.java with 96% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcAclDataProcessor.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcAclListener.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcClassifierDataProcessor.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NetvirtSfcClassifierListener.java with 54% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcClassifierListener.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcProvider.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NetvirtSfcProvider.java with 74% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NshUtils.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NshUtils.java with 98% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/RspDataProcessor.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/RspListener.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/SfcUtils.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/SfcUtils.java with 88% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/standalone/openflow13/NetvirtSfcStandaloneOF13Provider.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/standalone/openflow13/NetvirtSfcStandaloneOF13Provider.java with 97% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/standalone/openflow13/SfcClassifier.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/standalone/openflow13/SfcClassifier.java with 95% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/standalone/openflow13/services/SfcClassifierService.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/standalone/openflow13/services/SfcClassifierService.java with 79% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/NetvirtSfcWorkaroundOF13Provider.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/NetvirtSfcWorkaroundOF13Provider.java with 92% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/services/AclMatches.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/services/AclMatches.java with 96% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/services/AclUtils.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/services/AclUtils.java with 98% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/services/FlowCache.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/services/FlowCache.java with 94% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/services/FlowNames.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/services/FlowNames.java with 94% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/services/SfcClassifierService.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/services/SfcClassifierService.java with 92% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/AbstractDataTreeListener.java [deleted file]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NetvirtSfcAclListener.java [deleted file]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/RspListener.java [deleted file]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/impl/rev141210/NetvirtSfcImplModule.java [moved from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/rev141210/NetvirtSfcModule.java with 56% similarity]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/impl/rev141210/NetvirtSfcImplModuleFactory.java [new file with mode: 0644]
openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/rev141210/NetvirtSfcModuleFactory.java [deleted file]
openstack/net-virt-sfc/impl/src/main/yang/netvirt-sfc-impl.yang [moved from openstack/net-virt-sfc/impl/src/main/yang/netvirt-sfc.yang with 72% similarity]
openstack/net-virt-sfc/impl/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/workaround/services/AclMatchesTest.java [moved from openstack/net-virt-sfc/impl/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/workaround/services/AclMatchesTest.java with 84% similarity]
openstack/net-virt-sfc/impl/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/impl/rev141210/NetvirtSfcImplModuleFactoryTest.java [moved from openstack/net-virt-sfc/impl/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/rev141210/NetvirtSfcModuleFactoryTest.java with 79% similarity]
openstack/net-virt-sfc/impl/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/impl/rev141210/NetvirtSfcImplModuleTest.java [moved from openstack/net-virt-sfc/impl/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/rev141210/NetvirtSfcModuleTest.java with 80% similarity]
openstack/net-virt-sfc/it/pom.xml
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/NetvirtSfcIT.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/NetvirtSfcIT.java with 77% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/AbstractUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/AbstractUtils.java with 96% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/AclUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/AclUtils.java with 95% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ClassifierUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/ClassifierUtils.java with 97% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/NetvirtConfigUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/NetvirtConfigUtils.java with 91% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/NetvirtSfcUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/NetvirtSfcUtils.java with 89% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/RenderedServicePathUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/RenderedServicePathUtils.java with 92% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionChainUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/ServiceFunctionChainUtils.java with 97% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionForwarderUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/ServiceFunctionForwarderUtils.java with 88% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionPathUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/ServiceFunctionPathUtils.java with 96% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/ServiceFunctionUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/ServiceFunctionUtils.java with 79% similarity]
openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/SfcConfigUtils.java [moved from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/SfcConfigUtils.java with 94% similarity]
openstack/net-virt-sfc/karaf/pom.xml
openstack/net-virt-sfc/pom.xml
openstack/net-virt/pom.xml
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/AbstractEvent.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractEvent.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/AbstractHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractHandler.java with 78% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/ClusterAwareMdsalUtils.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/ClusterAwareMdsalUtils.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/ConfigActivator.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/ConfigActivator.java with 69% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/ConfigInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/ConfigInterface.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/FWaasHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/FWaasHandler.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/FloatingIPHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/FloatingIPHandler.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSHandler.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolHandler.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolMemberHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolMemberHandler.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/MdsalHelper.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/MdsalHelper.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NetvirtProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NetvirtProvider.java with 87% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NetworkHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandler.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NeutronCacheUtils.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NeutronCacheUtils.java with 83% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NeutronL3AdapterEvent.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NeutronL3AdapterEvent.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NodeCacheManagerEvent.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NodeCacheManagerEvent.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NodeConfiguration.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NodeConfiguration.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NorthboundEvent.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NorthboundEvent.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/PortHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/PortHandler.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/PortSecurityHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/PortSecurityHandler.java with 86% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/RouterHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/RouterHandler.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/SouthboundEvent.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/SouthboundEvent.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/SouthboundHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/SouthboundHandler.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/SubnetHandler.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/SubnetHandler.java with 81% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Action.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Action.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/ArpProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/ArpProvider.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/BridgeConfigurationManager.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/BridgeConfigurationManager.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/ClassifierProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/ClassifierProvider.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/ConfigurationService.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/ConfigurationService.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Constants.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Constants.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/EgressAclProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/EgressAclProvider.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/EventDispatcher.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/EventDispatcher.java with 74% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/GatewayMacResolver.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/GatewayMacResolver.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/GatewayMacResolverListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/GatewayMacResolverListener.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/IcmpEchoProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/IcmpEchoProvider.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/InboundNatProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/InboundNatProvider.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/IngressAclProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/IngressAclProvider.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/L2ForwardingProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/L2ForwardingProvider.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/L2RewriteProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/L2RewriteProvider.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/L3ForwardingProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/L3ForwardingProvider.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/LoadBalancerConfiguration.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/LoadBalancerConfiguration.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/LoadBalancerProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/LoadBalancerProvider.java with 83% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/MultiTenantAwareRouter.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantAwareRouter.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NetworkingProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NetworkingProvider.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NetworkingProviderManager.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NetworkingProviderManager.java with 85% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NodeCacheListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NodeCacheListener.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NodeCacheManager.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NodeCacheManager.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OutboundNatProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OutboundNatProvider.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbInventoryListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbInventoryListener.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbInventoryService.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbInventoryService.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbPluginException.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbPluginException.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbTables.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbTables.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Router.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Router.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/RoutingProvider.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/RoutingProvider.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/SecurityGroupCacheManger.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/SecurityGroupCacheManger.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/SecurityServicesManager.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/SecurityServicesManager.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Southbound.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Southbound.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Status.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Status.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/StatusCode.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/StatusCode.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/TenantNetworkManager.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/TenantNetworkManager.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/VlanConfigurationCache.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/VlanConfigurationCache.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/BridgeConfigurationManagerImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/BridgeConfigurationManagerImpl.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/ConfigurationServiceImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/ConfigurationServiceImpl.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/DistributedArpService.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/DistributedArpService.java with 58% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/EventDispatcherImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/EventDispatcherImpl.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/NeutronL3Adapter.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NeutronL3Adapter.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/NodeCacheManagerImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NodeCacheManagerImpl.java with 87% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OpenstackRouter.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OpenstackRouter.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OvsdbDataChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OvsdbDataChangeListener.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OvsdbInventoryServiceImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OvsdbInventoryServiceImpl.java with 72% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/ProviderNetworkManagerImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/ProviderNetworkManagerImpl.java with 89% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/SecurityGroupCacheManagerImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SecurityGroupCacheManagerImpl.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/SecurityServicesImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SecurityServicesImpl.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/SouthboundImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SouthboundImpl.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/TenantNetworkManagerImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/TenantNetworkManagerImpl.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/VlanConfigurationCacheImpl.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/VlanConfigurationCacheImpl.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/INeutronObject.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/INeutronObject.java with 88% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFirewall.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFirewall.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFirewallPolicy.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFirewallPolicy.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFirewallRule.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFirewallRule.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFloatingIP.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFloatingIP.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancer.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancer.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancerHealthMonitor.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancerHealthMonitor.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancerListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancerListener.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancerPool.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancerPool.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancerPoolMember.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancerPoolMember.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancer_SessionPersistence.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancer_SessionPersistence.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronNetwork.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronNetwork.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronNetwork_Segment.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronNetwork_Segment.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronPort.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronPort.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronPort_AllowedAddressPairs.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronPort_AllowedAddressPairs.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronPort_ExtraDHCPOption.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronPort_ExtraDHCPOption.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronPort_VIFDetail.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronPort_VIFDetail.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronRouter.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronRouter.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronRouter_Interface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronRouter_Interface.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronRouter_NetworkReference.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronRouter_NetworkReference.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSecurityGroup.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSecurityGroup.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSecurityRule.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSecurityRule.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSubnet.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSubnet.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSubnetIPAllocationPool.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSubnetIPAllocationPool.java with 99% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSubnet_HostRoute.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSubnet_HostRoute.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/Neutron_ID.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/Neutron_ID.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/Neutron_IPs.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/Neutron_IPs.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronFirewallCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronFirewallCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronFirewallPolicyCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronFirewallPolicyCRUD.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronFirewallRuleCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronFirewallRuleCRUD.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronFloatingIPCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronFloatingIPCRUD.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronLoadBalancerCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronLoadBalancerCRUD.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronLoadBalancerHealthMonitorCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronLoadBalancerHealthMonitorCRUD.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronLoadBalancerListenerCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronLoadBalancerListenerCRUD.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronLoadBalancerPoolCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronLoadBalancerPoolCRUD.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronLoadBalancerPoolMemberCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronLoadBalancerPoolMemberCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronNetworkCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronNetworkCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronPortCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronPortCRUD.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronRouterCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronRouterCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronSecurityGroupCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronSecurityGroupCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronSecurityRuleCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronSecurityRuleCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/INeutronSubnetCRUD.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/INeutronSubnetCRUD.java with 91% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/NeutronCRUDInterfaces.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/NeutronCRUDInterfaces.java with 98% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/AbstractNeutronInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/AbstractNeutronInterface.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronFirewallInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronFirewallInterface.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronFirewallPolicyInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronFirewallPolicyInterface.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronFirewallRuleInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronFirewallRuleInterface.java with 90% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronFloatingIPInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronFloatingIPInterface.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerHealthMonitorInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerHealthMonitorInterface.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerInterface.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerListenerInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerListenerInterface.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerPoolInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerPoolInterface.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerPoolMemberInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronLoadBalancerPoolMemberInterface.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronNetworkInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronNetworkInterface.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronPortInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronPortInterface.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronRouterInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronRouterInterface.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronSecurityGroupInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronSecurityGroupInterface.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronSecurityRuleInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronSecurityRuleInterface.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronSubnetInterface.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronSubnetInterface.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronFirewallAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronFirewallAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronFirewallPolicyAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronFirewallPolicyAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronFirewallRuleAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronFirewallRuleAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronFloatingIPAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronFloatingIPAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronLoadBalancerAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronLoadBalancerAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronLoadBalancerHealthMonitorAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronLoadBalancerHealthMonitorAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronLoadBalancerListenerAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronLoadBalancerListenerAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronLoadBalancerPoolAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronLoadBalancerPoolAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronLoadBalancerPoolMemberAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronLoadBalancerPoolMemberAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronNetworkAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronNetworkAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronPortAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronPortAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronRouterAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronRouterAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronSecurityGroupAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronSecurityGroupAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronSecurityRuleAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronSecurityRuleAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/INeutronSubnetAware.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/INeutronSubnetAware.java with 95% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronFloatingIPChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronFloatingIPChangeListener.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronIAwareUtil.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronIAwareUtil.java with 87% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronLoadBalancerPoolChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronLoadBalancerPoolChangeListener.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronLoadBalancerPoolMemberChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronLoadBalancerPoolMemberChangeListener.java with 96% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronNetworkChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronNetworkChangeListener.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronPortChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronPortChangeListener.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronRouterChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronRouterChangeListener.java with 94% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronSecurityGroupDataChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronSecurityGroupDataChangeListener.java with 92% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronSecurityRuleDataChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronSecurityRuleDataChangeListener.java with 97% similarity]
openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/iaware/impl/NeutronSubnetChangeListener.java [moved from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/iaware/impl/NeutronSubnetChangeListener.java with 93% similarity]
openstack/net-virt/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/impl/rev150513/NetvirtImplModule.java
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/AbstractEventTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractEventTest.java with 91% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/AbstractHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractHandlerTest.java with 91% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/FWaasHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/FWaasHandlerTest.java with 93% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/FloatingIPHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/FloatingIPHandlerTest.java with 89% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSHandlerTest.java with 88% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolHandlerTest.java with 89% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolMemberHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolMemberHandlerTest.java with 89% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NetworkHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandlerTest.java with 91% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NeutronCacheUtilsTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NeutronCacheUtilsTest.java with 83% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NodeCacheManagerEventTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NodeCacheManagerEventTest.java with 93% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NodeConfigurationTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NodeConfigurationTest.java with 88% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/PortHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/PortHandlerTest.java with 90% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/PortSecurityHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/PortSecurityHandlerTest.java with 88% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/RouterHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/RouterHandlerTest.java with 89% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/SouthboundHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/SouthboundHandlerTest.java with 90% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/SubnetHandlerTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/SubnetHandlerTest.java with 89% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/api/LoadBalancerConfigurationTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/api/LoadBalancerConfigurationTest.java with 99% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/BridgeConfigurationManagerImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/BridgeConfigurationManagerImplTest.java with 96% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/ConfigurationServiceImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/ConfigurationServiceImplTest.java with 90% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/DistributedArpServiceTest.java [new file with mode: 0644]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/EventDispatcherImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/EventDispatcherImplTest.java with 93% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/NeutronL3AdapterTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NeutronL3AdapterTest.java with 96% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/NodeCacheManagerImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NodeCacheManagerImplTest.java with 91% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/OvsdbInventoryServiceImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OvsdbInventoryServiceImplTest.java with 91% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/ProviderNetworkManagerImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/ProviderNetworkManagerImplTest.java with 92% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/SecurityGroupCacheManagerImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SecurityGroupCacheManagerImplTest.java with 94% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/SecurityServicesImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SecurityServicesImplTest.java with 96% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/TenantNetworkManagerImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/TenantNetworkManagerImplTest.java with 92% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/VlanConfigurationCacheImplTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/VlanConfigurationCacheImplTest.java with 92% similarity]
openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/translator/crud/impl/NeutronFloatingIPInterfaceTest.java [moved from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronFloatingIPInterfaceTest.java with 98% similarity]
openstack/pom.xml
ovsdb-ui/bundle/pom.xml
ovsdb-ui/module/pom.xml
ovsdb-ui/pom.xml
pom.xml
resources/commons/README
resources/commons/pplog.py [new file with mode: 0755]
resources/commons/readable_flows.py [new file with mode: 0755]
resources/puppet/manifests/mininet.pp
routemgr/pom.xml
routemgr/routemgr-api/pom.xml
routemgr/routemgr-artifacts/pom.xml
routemgr/routemgr-config/pom.xml
routemgr/routemgr-features/pom.xml
routemgr/routemgr-impl/pom.xml
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/IPv6RtrFlow.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/IPv6RtrFlow.java with 97% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/IfMgr.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/IfMgr.java with 99% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/NetDataListener.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/NetDataListener.java with 99% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/OvsdbDataListener.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/OvsdbDataListener.java with 99% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/PktHandler.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/PktHandler.java with 95% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/VirtualPort.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/VirtualPort.java with 98% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/VirtualRouter.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/VirtualRouter.java with 98% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/VirtualSubnet.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/VirtualSubnet.java with 98% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/utils/BitBufferHelper.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/utils/BitBufferHelper.java with 99% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/utils/BufferException.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/utils/BufferException.java with 92% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/utils/NetUtils.java [moved from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/utils/NetUtils.java with 99% similarity]
routemgr/routemgr-impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/routemgr/impl/rev141210/RoutemgrImplModule.java
routemgr/routemgr-karaf/pom.xml
utils/config/pom.xml
utils/config/src/main/java/org/opendaylight/netvirt/utils/config/ConfigProperties.java [moved from utils/config/src/main/java/org/opendaylight/ovsdb/utils/config/ConfigProperties.java with 97% similarity]
utils/config/src/test/java/org/opendaylight/netvirt/utils/config/ConfigPropertiesTest.java [moved from utils/config/src/test/java/org/opendaylight/ovsdb/utils/config/ConfigPropertiesTest.java with 99% similarity]
utils/hwvtepsouthbound-utils/pom.xml [deleted file]
utils/hwvtepsouthbound-utils/src/main/java/org/opendaylight/ovsdb/utils/hwvtepsouthbound/utils/HwvtepSouthboundUtils.java [deleted file]
utils/it-utils/pom.xml [new file with mode: 0644]
utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/ItConstants.java [new file with mode: 0644]
utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/ItUtils.java [new file with mode: 0644]
utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/NodeInfo.java [new file with mode: 0644]
utils/mdsal-node/pom.xml [deleted file]
utils/mdsal-node/src/main/java/org/opendaylight/ovsdb/utils/mdsal/node/NodeUtils.java [deleted file]
utils/mdsal-node/src/main/java/org/opendaylight/ovsdb/utils/mdsal/node/StringConvertor.java [deleted file]
utils/mdsal-node/src/test/java/org/opendaylight/ovsdb/utils/mdsal/node/NodeUtilsTest.java [deleted file]
utils/mdsal-openflow/pom.xml
utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/ActionUtils.java [moved from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/ActionUtils.java with 95% similarity]
utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/FlowUtils.java [moved from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/FlowUtils.java with 87% similarity]
utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/InstructionUtils.java [moved from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/InstructionUtils.java with 98% similarity]
utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/MatchUtils.java [moved from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/MatchUtils.java with 96% similarity]
utils/mdsal-openflow/src/test/java/org/opendaylight/netvirt/utils/mdsal/openflow/MatchUtilsTest.java [moved from utils/mdsal-openflow/src/test/java/org/opendaylight/ovsdb/utils/mdsal/openflow/MatchUtilsTest.java with 90% similarity]
utils/mdsal-utils/pom.xml
utils/mdsal-utils/src/main/java/org/opendaylight/netvirt/utils/mdsal/utils/MdsalUtils.java [moved from utils/mdsal-utils/src/main/java/org/opendaylight/ovsdb/utils/mdsal/utils/MdsalUtils.java with 99% similarity]
utils/mdsal-utils/src/main/java/org/opendaylight/netvirt/utils/mdsal/utils/NotifyingDataChangeListener.java [new file with mode: 0644]
utils/mdsal-utils/src/test/java/org/opendaylight/netvirt/utils/mdsal/utils/MdsalUtilsTest.java [moved from utils/mdsal-utils/src/test/java/org/opendaylight/ovsdb/utils/mdsal/utils/MdsalUtilsTest.java with 98% similarity]
utils/neutron-utils/pom.xml
utils/neutron-utils/src/main/java/org/opendaylight/netvirt/utils/neutron/utils/NeutronModelsDataStoreHelper.java [moved from utils/neutron-utils/src/main/java/org/opendaylight/ovsdb/utils/neutron/utils/NeutronModelsDataStoreHelper.java with 77% similarity]
utils/neutron-utils/src/main/java/org/opendaylight/netvirt/utils/neutron/utils/NeutronUtils.java [new file with mode: 0644]
utils/pom.xml
utils/servicehelper/pom.xml
utils/servicehelper/src/main/java/org/opendaylight/netvirt/utils/servicehelper/ServiceHelper.java [moved from utils/servicehelper/src/main/java/org/opendaylight/ovsdb/utils/servicehelper/ServiceHelper.java with 98% similarity]
utils/servicehelper/src/test/java/org/opendaylight/netvirt/utils/servicehelper/ServiceHelperTest.java [moved from utils/servicehelper/src/test/java/org/opendaylight/ovsdb/utils/servicehelper/ServiceHelperTest.java with 96% similarity]
utils/southbound-utils/pom.xml [deleted file]
utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java [deleted file]
utils/southbound-utils/src/test/java/SouthboundUtilsTest.java [deleted file]

diff --git a/README b/README
index d974d2073ccb8852cee40e687b5080a6d81cc741..1cf47ae7b50255f67c4ef7b1e375876c4b0409a3 100644 (file)
--- a/README
+++ b/README
@@ -4,42 +4,23 @@ DIRECTORY ORGANIZATION
 - commons
   +-- parent : Contains Parent pom.xml for all the ovsdb modules.
 
-- distribution : Builds a working controller distribution based on the controller + ovsdb modules and other
-                 dependant modules such as openflowplugin
-  +-- opendaylight : older, OSGi-based distribution
-  +-- opendaylight-karaf : karaf-based distribution
-
 - features : This folder contains all the Karaf related files.
 
-- library : Contains Schema-independent library that is a reference implementation for RFC 7047.
-            This module doesn't depend on any of the Opendaylight components.
-            This library module can also be used independently in a non-OSGi environment.
+- karaf : Builds a working controller distribution based on the controller + ovsdb modules and other
+          dependant modules such as openflowplugin
 
 - openstack
   +-- net-virt : Handles the Openstack Neutron ML2 and Network Service calls and performs all the logic required
                  for Network Virtualization.
   +-- net-virt-providers : Mostly contains data-path programming functionality via OpenFlow or potentially
                            other protocols.
+  +-- net-virt-sfc : SFC implementation using the OVSDB project.
 
-- ovs-sfc : SFC implementation using the OVSDB project. Currently it is just a shell.
-
-- plugin : Contains Opendaylight Southbound Plugin APIs and provides a simpler API interface on top of library layer.
-           Ideally, this module should also be schema independent. But due to legacy reasons this layer contains some
-           deprecated functionality that assumes openvswitch schema.
-
-- plugin-mdsal-adapter : Adds an MD-SAL Adapter for the OVSDB Plugin. The adapter updates the MD-SAL with nodes
-                         as they are added and removed from the inventory. The Yang model provides a reference
-                         between OVSDB nodes and the OpenFlow nodes (bridges) that they manage.
-
-- plugin-shell : Contains a Karaf shell framework for OVSDB plugin and printCache command-line.
+- ovsdb-ui : Contains the DLUX implementation for displaying network virtualization
 
 - resources : Contains some useful resources such as scripts, testing utilities and tools used for deployment
               or testing the binaries generated from the OVSDB project.
 
-- schemas :
-  +-- openvswitch : Schema wrapper that represents http://openvswitch.org/ovs-vswitchd.conf.db.5.pdf
-  +-- hardwarevtep: Schema wrapper that represents http://openvswitch.org/docs/vtep.5.pdf
-
 - utils : MD-SAL OpenFlow and OVSDB common utilities.
 
 HOW TO BUILD & RUN
@@ -48,29 +29,24 @@ HOW TO BUILD & RUN
 Pre-requisites : JDK 1.7+, Maven 3+
 
 1. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
-   1. This is a new method for Opendaylight distribution wherein there is no defined editions such
-      as Base, Virtualization or SP editions. The end-customer can choose to deploy the required feature
-      based on his/her deployment needs.
-
-   2. From the root ovsdb/ directory, execute "mvn clean install"
+   1. From the root ovsdb/ directory, execute "mvn clean install"
 
-   3. Next unzip the distribution-karaf-<VERSION_NUMBER>-SNAPSHOT.zip file created from step #2 in
-      the directory ovsdb/distribution/opendaylight-karaf/target like so:
-      "unzip distribution-karaf-<VERSION_NUMBER>-SNAPSHOT.zip"
+   2. Unzip the karaf-<VERSION_NUMBER>-SNAPSHOT.zip file created from step 1 in the directory ovsdb/karaf/target/:
+      "unzip karaf-<VERSION_NUMBER>-SNAPSHOT.zip"
 
-   4. Once karaf has started and you see the Opendaylight ascii art in the console, the last step
+   3. Once karaf has started and you see the Opendaylight ascii art in the console, the last step
       is to start the OVSDB plugin framework with the following command in the karaf console:
       "feature:install odl-ovsdb-openstack" (without quotation marks).
 
    Sample output from Karaf console :
 
-   opendaylight-user@root>feature:list | grep -i ovsdb
-   odl-ovsdb-library                | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OVSDB :: Library
-   odl-ovsdb-schema-openvswitch     | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OVSDB :: Schema :: Open_vSwitch
-   odl-ovsdb-schema-hardwarevtep    | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OVSDB :: Schema :: hardware_vtep
-   odl-ovsdb-openstack              | 1.0.0-SNAPSHOT      | x         | ovsdb-1.0.0-SNAPSHOT                  | OpenDaylight :: OVSDB :: OpenStack Network Virtual
-   odl-ovsdb-ovssfc                 | 0.0.1-SNAPSHOT      |           | ovsdb-0.0.1-SNAPSHOT                  | OpenDaylight :: OVSDB :: OVS Service Function Chai
-
+  opendaylight-user@root>feature:list -i | grep ovsdb
+   odl-ovsdb-southbound-api          | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: api
+   odl-ovsdb-southbound-impl         | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl
+   odl-ovsdb-southbound-impl-rest    | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl :: REST
+   odl-ovsdb-southbound-impl-ui      | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-southbound-1.2.1-SNAPSHOT     | OpenDaylight :: southbound :: impl :: UI
+   odl-ovsdb-library                 | 1.2.1-SNAPSHOT   | x         | odl-ovsdb-library-1.2.1-SNAPSHOT        | OpenDaylight :: library
+   odl-ovsdb-openstack               | 1.2.1-SNAPSHOT   | x         | ovsdb-1.2.1-SNAPSHOT                    | OpenDaylight :: OVSDB :: OpenStack Network Virtual
 
 2. Building a bundle and deploying it in an Opendaylight Karaf distribution :
    This method can be used to update and test new code in a bundle. If the bundle of interest is rebuilt as a
@@ -93,74 +69,17 @@ Pre-requisites : JDK 1.7+, Maven 3+
 
    4. karaf will see the changed bundle and reload it.
 
-
-3. Building an OVSDB based Opendaylight Virtualization edition:
-   1. This is the legacy way to build and distribute Opendaylight archives. This method was
-      followed in Hydrogen. It might still work in Helium but it is best effort for support.
-      The preferred method for Helium and later is to use karaf.
-
-   2. From the root folder(that hosts this README), execute "mvn clean install"
-      That should build a full distribution archive and distribution directory that will contain
-      Opendaylight Controller + OVSDB bundles + Openflow Plugins under
-      distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage
-
-   3. Upon successful completion of a build, the Controller with OVSDB can be executed by :
-      cd distribution/opendaylight/target/distribution.ovsdb-X.X.X-osgipackage/opendaylight/
-      ./run.sh -virt ovsdb
-
-4. Building a Karaf Feature and deploying it in an Opendaylight Karaf distribution :
-*** This method is deprecated.
-   1. This is a new method for Opendaylight distribution wherein there is no defined editions such
-      as Base, Virtualization or SP editions. Rather each of the projects will generate features in
-      form of .kar files. The end-customer can choose to deploy the required feature based on his/her
-      deployment needs.
-
-   2. From the features/ directory, execute "mvn clean install"
-      This will generate a kar file such as "features/target/ovsdb-features-1.2.1-SNAPSHOT.kar"
-
-   3. Download (or build from controller project) the Karaf distribution :
-      http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/controller/distribution.opendaylight-karaf/
-      Sample zip file :
-      http://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/org/opendaylight/controller/distribution.opendaylight-karaf/1.4.2-SNAPSHOT/distribution.opendaylight-karaf-1.4.2-20140718.075612-407.zip
-
-   4. unzip the downloaded (or built) distribution and copy the ovsdb-features-x.x.x.kar file (from step 2) into
-      the unzipped distribution.opendaylight-karaf-X.X.X/deploy/ directory.
-
-   5. run Karaf from within the distribution.opendaylight-karaf-X.X.X/ directory using "bin/karaf"
-
-   Sample output from Karaf console :
-
-   opendaylight-user@root>kar:list
-   KAR Name
-   -----------------------------
-   ovsdb-features-1.2.1-SNAPSHOT
-
-   opendaylight-user@root>feature:list | grep ovsdb
-   odl-ovsdb-library | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OVSDB :: Library
-   odl-ovsdb-schema-openvswitch | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OVSDB :: Schema :: Open_vSwitch
-   odl-ovsdb-schema-hardwarevtep | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OVSDB :: Schema :: hardware_vtep
-   odl-ovsdb-plugin | 1.0.0-SNAPSHOT | x | ovsdb-1.2.1-SNAPSHOT | OpenDaylight :: OVSDB :: Plugin
-
-   opendaylight-user@root>bundle:list | grep OVSDB
-   186 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Library
-   199 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB Open_vSwitch Schema
-   200 | Active | 80 | 1.0.0.SNAPSHOT | OVSDB hardware_vtep Schema
-   201 | Active | 80 | 1.0.0.SNAPSHOT | OpenDaylight OVSDB Plugin
-
 Running The Integration Tests
 =============================
 
 To run the integration tests locally the following components are required:
 
  - Docker
- - Fig or Docker Compose
+ - Docker Compose
 
 To install docker, follow the installation guide for your platform:
    http://docs.docker.com/installation/
 
-To install fig:
-   http://www.fig.sh/install.html
-
 To install Docker Compose:
    http://docs.docker.com/compose/install/
 
@@ -168,18 +87,19 @@ To run the integration tests:
 
     mvn clean install
     # The first time you need to set everything up
-    fig up -d
+    docker-compose up -d
     # Later runs only need the containers to be started
-    fig start
+    docker-compose start
     # OSX
     mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=$(boot2docker ip 2>/dev/null) -Dovsdbserver.port=6640
     # Linux
-    mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640
-    fig stop
+    mvn verify -Pintegrationtest -Dovsdbserver.ipaddress=127.0.0.1 -Dovsdbserver.port=6640 -Dovsdb.controller.address=<addr of docker interface> -Dovsdb.userspace.enabled=yes
+    docker-compose stop
 
 On Linux you'll generally need to run fig as root (sudo fig ...).
 
-If you're using Docker Compose, replace "fig" above with "docker-compose" and ignore the warnings.
+Running the docker image manually:
+    sudo docker run -itd --cap-add NET_ADMIN -p 6640:6640 jhershbe/centos7-ovs:latest
 
 Skipping unit tests and karaf tests
 ====================
index ef2a15f46fb520b1f296faf472b89a3fe09a21f0..9c38c58cff3acab697151f279eb5e6736b634b3e 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>it</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
@@ -38,8 +38,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
index 9cd00fa406eac36b67ae19e54ec038cdfc5c8bb7..ac135f1dc590dc9a6f741260f4dbb777a764f2b4 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>parents</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
@@ -39,8 +39,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
similarity index 62%
rename from fig.yml
rename to docker-compose.yml
index 9c9a77a26b519b675adbcf107c32e80d29d496cc..08dc273480a0c04199b4f3852f6ee7c88ba1dce0 100644 (file)
--- a/fig.yml
@@ -1,6 +1,6 @@
 ovs:
- image: davetucker/docker-ovs:2.1.2
- ports: 
+ image: jhershbe/centos7-ovs:2.5.1
+ ports:
    - "6640:6640"
  command: "/usr/bin/supervisord -n"
  privileged: true
index dba16332a488a27937d06970a6a5a838657f3586..52b4a2d9311691fea1fa2304e0a140e810132519 100644 (file)
@@ -18,10 +18,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>features-ovsdb</artifactId>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>features-netvirt</artifactId>
   <version>1.3.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
+  <packaging>jar</packaging>
   <description>The OVSDB Plugin integration project is a project for OpenDaylight that will implement the Open vSwitch Database RFC 7047 management protocol allowing the Southbound configuration of vSwitches and a network virtualization implementation.</description>
   <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   <licenses>
@@ -38,46 +38,29 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
 
   <properties>
-    <odl.karaf.base.version>1.7.0-SNAPSHOT</odl.karaf.base.version>
+    <dlux.version>0.4.0-SNAPSHOT</dlux.version>
     <controller.mdsal.version>1.4.0-SNAPSHOT</controller.mdsal.version>
     <mdsal.model.version>0.9.0-SNAPSHOT</mdsal.model.version>
-    <restconf.version>1.4.0-SNAPSHOT</restconf.version>
     <neutron.version>0.7.0-SNAPSHOT</neutron.version>
+    <odl.karaf.base.version>1.7.0-SNAPSHOT</odl.karaf.base.version>
     <openflowplugin.version>0.3.0-SNAPSHOT</openflowplugin.version>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
+    <restconf.version>1.4.0-SNAPSHOT</restconf.version>
     <yangtools.version>1.0.0-SNAPSHOT</yangtools.version>
-    <dlux.version>0.4.0-SNAPSHOT</dlux.version>
   </properties>
 
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yangtools-artifacts</artifactId>
-        <version>${yangtools.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>mdsal-artifacts</artifactId>
-        <version>${controller.mdsal.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
   <dependencies>
-    <!-- controller dependencies -->
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>features-mdsal</artifactId>
+      <version>${controller.mdsal.version}</version>
       <type>xml</type>
       <classifier>features</classifier>
     </dependency>
@@ -87,7 +70,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${mdsal.model.version}</version>
       <classifier>features</classifier>
       <type>xml</type>
-      <scope>runtime</scope>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.netconf</groupId>
@@ -95,9 +77,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${restconf.version}</version>
       <classifier>features</classifier>
       <type>xml</type>
-      <scope>runtime</scope>
     </dependency>
-    <!-- external dependencies -->
     <!-- TODO clean up based on what is provided by odlparent -->
     <dependency>
       <groupId>org.osgi</groupId>
@@ -165,7 +145,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
     </dependency>
-    <!-- neutron dependencies -->
     <dependency>
       <groupId>org.opendaylight.neutron</groupId>
       <artifactId>features-neutron</artifactId>
@@ -173,7 +152,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <classifier>features</classifier>
       <type>xml</type>
     </dependency>
-    <!-- openflowplugin dependencies -->
     <dependency>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>features-openflowplugin</artifactId>
@@ -188,8 +166,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <classifier>features</classifier>
       <type>xml</type>
     </dependency>
-
-    <!-- openflowplugin dependencies for net-virt clustering-->
     <dependency>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>features-openflowplugin-li</artifactId>
@@ -204,8 +180,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <classifier>features</classifier>
       <type>xml</type>
     </dependency>
-
-    <!-- project specific dependencies -->
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>openstack.net-virt</artifactId>
@@ -231,14 +205,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <classifier>config</classifier>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>schema.openvswitch</artifactId>
-      <version>${project.version}</version>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>schema.hardwarevtep</artifactId>
-      <version>${project.version}</version>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -251,21 +225,25 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>ovsdb-ui-bundle</artifactId>
-      <version>${project.version}</version>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>utils.mdsal-utils</artifactId>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>southbound-features</artifactId>
+      <artifactId>utils.it-utils</artifactId>
       <version>${project.version}</version>
-      <type>xml</type>
-      <classifier>features</classifier>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>library-features</artifactId>
+      <artifactId>ovsdb-ui-bundle</artifactId>
       <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>southbound-features</artifactId>
+      <version>${ovsdb.version}</version>
       <type>xml</type>
       <classifier>features</classifier>
     </dependency>
@@ -281,12 +259,30 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>hwvtepsouthbound-features</artifactId>
+      <artifactId>hwgw</artifactId>
       <version>${project.version}</version>
       <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>hwvtepsouthbound-features</artifactId>
+      <version>${ovsdb.version}</version>
+      <type>xml</type>
       <classifier>features</classifier>
     </dependency>
-    <!-- DLUX dependency for the UI -->
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>neutron</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>neutron</artifactId>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
     <dependency>
       <groupId>org.opendaylight.dlux</groupId>
       <artifactId>features-dlux</artifactId>
index 3a9d94a68c1d3cade872b4180035319ca6d83156..a14ad4c1ddce5766a8e7e670812610bd096ff094 100644 (file)
@@ -2,49 +2,43 @@
 <features name="ovsdb-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
+  <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.dlux/features-dlux/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.netconf/features-restconf/{{VERSION}}/xml/features</repository>
   <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin-extension/{{VERSION}}/xml/features</repository>
   <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/{{VERSION}}/xml/features</repository>
   <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin-extension-li/{{VERSION}}/xml/features</repository>
   <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin-li/{{VERSION}}/xml/features</repository>
   <repository>mvn:org.opendaylight.neutron/features-neutron/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.ovsdb/southbound-features/1.3.0-SNAPSHOT/xml/features</repository>
-  <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.ovsdb/library-features/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.dlux/features-dlux/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.netconf/features-restconf/{{VERSION}}/xml/features</repository>
   <repository>mvn:org.opendaylight.ovsdb/hwvtepsouthbound-features/{{VERSION}}/xml/features</repository>
-
-  <feature name="odl-ovsdb-schema-openvswitch" description="OVSDB :: Schema :: Open_vSwitch"
-           version='${project.version}'>
-    <feature version="${project.version}">odl-ovsdb-library</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/schema.openvswitch/{{VERSION}}</bundle>
-  </feature>
-
-  <feature name="odl-ovsdb-schema-hardwarevtep" description="OVSDB :: Schema :: hardware_vtep"
-           version='${project.version}'>
-    <feature version="${project.version}">odl-ovsdb-library</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/schema.hardwarevtep/{{VERSION}}</bundle>
-  </feature>
+  <repository>mvn:org.opendaylight.ovsdb/southbound-features/{{VERSION}}/xml/features</repository>
 
   <feature name="odl-ovsdb-openstack" description="OpenDaylight :: OVSDB :: OpenStack Network Virtualization"
            version='${project.version}'>
     <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-nsf-model</feature>
     <feature version="${neutron.version}">odl-neutron-service</feature>
-    <feature version="${project.version}">odl-ovsdb-southbound-impl-ui</feature>
+    <feature version="${ovsdb.version}">odl-ovsdb-southbound-impl</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-southbound</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-nsf-services</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-nxm-extensions</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.servicehelper/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.neutron-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.servicehelper/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.neutron-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.mdsal-utils/{{VERSION}}</bundle>
     <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
     <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt-providers/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt-providers/{{VERSION}}</bundle>
     <bundle>mvn:commons-net/commons-net/{{VERSION}}</bundle>
-    <configfile finalname="etc/opendaylight/karaf/netvirt-impl-default-config.xml">mvn:org.opendaylight.ovsdb/openstack.net-virt/{{VERSION}}/xml/config</configfile>
-    <configfile finalname="etc/opendaylight/karaf/netvirt-providers-impl-default-config.xml">mvn:org.opendaylight.ovsdb/openstack.net-virt-providers/{{VERSION}}/xml/config</configfile>
+    <configfile finalname="etc/opendaylight/karaf/netvirt-impl-default-config.xml">mvn:org.opendaylight.netvirt/openstack.net-virt/{{VERSION}}/xml/config</configfile>
+    <configfile finalname="etc/opendaylight/karaf/netvirt-providers-impl-default-config.xml">mvn:org.opendaylight.netvirt/openstack.net-virt-providers/{{VERSION}}/xml/config</configfile>
+  </feature>
+
+  <feature name="odl-ovsdb-openstack-it" description="OpenDaylight :: OVSDB :: OpenStack Network Virtualization IT"
+           version='${project.version}'>
+    <feature version="${project.version}">odl-ovsdb-openstack</feature>
+    <bundle>mvn:org.opendaylight.netvirt/utils.it-utils/{{VERSION}}</bundle>
   </feature>
 
   <feature name="odl-ovsdb-openstack-clusteraware" description="OpenDaylight :: OVSDB :: OpenStack Network Virtualization - Cluster Aware"
     <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-nsf-model-li</feature>
     <feature version="${neutron.version}">odl-neutron-service</feature>
-    <feature version="${project.version}">odl-ovsdb-southbound-impl-ui</feature>
+    <feature version="${ovsdb.version}">odl-ovsdb-southbound-impl</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-flow-services-li</feature>
     <feature version="${openflowplugin.version}">odl-openflowplugin-nxm-extensions-li</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.servicehelper/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.neutron-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.servicehelper/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.neutron-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.mdsal-utils/{{VERSION}}</bundle>
     <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
     <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt-providers/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt-providers/{{VERSION}}</bundle>
     <bundle>mvn:commons-net/commons-net/{{VERSION}}</bundle>
-    <configfile finalname="etc/opendaylight/karaf/netvirt-impl-default-config.xml">mvn:org.opendaylight.ovsdb/openstack.net-virt/{{VERSION}}/xml/config</configfile>
-    <configfile finalname="etc/opendaylight/karaf/netvirt-providers-impl-default-config.xml">mvn:org.opendaylight.ovsdb/openstack.net-virt-providers/{{VERSION}}/xml/config</configfile>
+    <configfile finalname="etc/opendaylight/karaf/netvirt-impl-default-config.xml">mvn:org.opendaylight.netvirt/openstack.net-virt/{{VERSION}}/xml/config</configfile>
+    <configfile finalname="etc/opendaylight/karaf/netvirt-providers-impl-default-config.xml">mvn:org.opendaylight.netvirt/openstack.net-virt-providers/{{VERSION}}/xml/config</configfile>
   </feature>
 
   <feature name="odl-ovsdb-ui" description="OpenDaylight :: OVSDB :: DLUX Integration Plugin" version='${project.version}'>
     <feature version="${dlux.version}">odl-dlux-core</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/ovsdb-ui-bundle/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/ovsdb-ui-bundle/{{VERSION}}</bundle>
   </feature>
+
   <feature name='odl-netvirt-api' version='${project.version}' description='OpenDaylight :: netvirt :: api'>
     <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/netvirt-api/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/netvirt-api/{{VERSION}}</bundle>
   </feature>
+
   <feature name='odl-netvirt-rest' version='${project.version}' description='OpenDaylight :: netvirt :: REST'>
     <feature version="${project.version}">odl-netvirt-api</feature>
     <feature version="${restconf.version}">odl-restconf</feature>
   </feature>
+
   <feature name='odl-netvirt-ui' version='${project.version}' description='OpenDaylight :: netvirt :: UI'>
     <feature version="${project.version}">odl-netvirt-rest</feature>
     <feature version="${restconf.version}">odl-mdsal-apidocs</feature>
     <feature version="${controller.mdsal.version}">odl-mdsal-xsql</feature>
   </feature>
+
   <feature name='odl-netvirt-hwgw' version='${project.version}' description='OpenDaylight :: netvirt :: Hardware Gateway'>
     <feature version="${project.version}">odl-netvirt-api</feature>
-    <feature version='${project.version}'>odl-ovsdb-hwvtepsouthbound</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/hwgw/{{VERSION}}</bundle>
+    <feature version='${ovsdb.version}'>odl-ovsdb-hwvtepsouthbound</feature>
+    <bundle>mvn:org.opendaylight.netvirt/hwgw/{{VERSION}}</bundle>
+    <configfile finalname="etc/opendaylight/karaf/hwgw-default-config.xml">mvn:org.opendaylight.netvirt/hwgw/{{VERSION}}/xml/config</configfile>
+  </feature>
+
+    <feature name='odl-netvirt-neutron' version='${project.version}' description='OpenDaylight :: netvirt :: Neutron Renderer'>
+    <feature version="${neutron.version}">odl-neutron-service</feature>
+    <feature version="${project.version}">odl-netvirt-ui</feature>
+    <bundle>mvn:org.opendaylight.netvirt/neutron/{{VERSION}}</bundle>
+    <configfile finalname="etc/opendaylight/karaf/netvirt-neutron-default-config.xml">mvn:org.opendaylight.netvirt/neutron/{{VERSION}}/xml/config</configfile>
   </feature>
 
+  <feature name='odl-netvirt-it' version='${project.version}' description='OpenDaylight :: netvirt :: IT'>
+    <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
+    <feature version="${neutron.version}">odl-neutron-service</feature>
+    <feature version="${project.version}">odl-netvirt-neutron</feature>
+    <feature version="${ovsdb.version}">odl-ovsdb-southbound-api</feature>
+    <bundle>mvn:org.opendaylight.netvirt/utils.it-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.mdsal-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.neutron-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.servicehelper/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
+  </feature>
 </features>
index 63bcdd159012724ad1316dd025707b7b16ed8789..11d54560ba649e172413006739e95351c7dec576 100644 (file)
@@ -17,7 +17,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>karaf</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
@@ -44,8 +44,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
@@ -53,14 +53,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <dependencies>
       <dependency>
         <groupId>${project.groupId}</groupId>
-        <artifactId>ovsdb-artifacts</artifactId>
-        <version>${project.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>southbound-artifacts</artifactId>
+        <artifactId>netvirt-artifacts</artifactId>
         <version>${project.version}</version>
         <type>pom</type>
         <scope>import</scope>
@@ -85,14 +78,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
 
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>features-ovsdb</artifactId>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>southbound-features</artifactId>
+      <artifactId>features-netvirt</artifactId>
+      <version>${project.version}</version>
       <classifier>features</classifier>
       <type>xml</type>
       <scope>runtime</scope>
@@ -106,4 +93,17 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <scope>runtime</scope>
     </dependency>
   </dependencies>
+
+  <build>
+    <plugins>
+      <!-- DO NOT deploy the karaf artifact -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-deploy-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
similarity index 88%
rename from ovsdb-artifacts/pom.xml
rename to netvirt-artifacts/pom.xml
index de11ea773cc088126eaa556d1fe0bc02b250d4ba..9db829e4300647e013859627f073c7b62e21f67d 100644 (file)
@@ -18,8 +18,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>ovsdb-artifacts</artifactId>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>netvirt-artifacts</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
   <description>The OVSDB Plugin integration project is a project for OpenDaylight that will implement the Open vSwitch Database RFC 7047 management protocol allowing the Southbound configuration of vSwitches and a network virtualization implementation.</description>
@@ -38,8 +38,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
@@ -48,7 +48,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <dependencies>
       <dependency>
         <groupId>${project.groupId}</groupId>
-        <artifactId>features-ovsdb</artifactId>
+        <artifactId>features-netvirt</artifactId>
         <version>${project.version}</version>
         <classifier>features</classifier>
         <type>xml</type>
index afc22132f247998a8f6c522d7c846eeb29d88730..ae85bab86f776f8143f7a4d60ad89c221236d061 100644 (file)
@@ -14,8 +14,27 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-inet-types</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>ietf-yang-types-20130715</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>yang-ext</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>opendaylight-l2-types</artifactId>
+    </dependency>
+  </dependencies>
+
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>netvirt-api</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
diff --git a/netvirt/api/src/main/yang/netvirt-common.yang b/netvirt/api/src/main/yang/netvirt-common.yang
new file mode 100644 (file)
index 0000000..5071142
--- /dev/null
@@ -0,0 +1,105 @@
+module netvirt-common {
+    yang-version 1;
+    namespace "urn:opendaylight:netvirt:common";
+    prefix "common";
+
+    revision "2015-12-27" {
+        description "Initial revision of netvirt common attributes";
+    }
+
+    import ietf-yang-types { prefix yang; }
+
+    identity network-type-base {
+        description "Base network type";
+    }
+
+    identity network-type-flat {
+        base network-type-base;
+        description "network type flat";
+    }
+
+    identity network-type-gre {
+        base network-type-base;
+        description "network type gre";
+    }
+
+    identity network-type-vlan {
+        base network-type-base;
+        description "network type vlan";
+    }
+
+    identity network-type-vxlan {
+        base network-type-base;
+        description "network type vxlan";
+    }
+
+    identity network-type-vxlan-gpe {
+        base network-type-base;
+        description "network type vxlan-gpe";
+    }
+
+    typedef network-type {
+        type identityref {
+            base network-type-base;
+        }
+        description "This type is used to refer to a network Type.";
+    }
+
+    grouping base-attributes {
+        leaf uuid {
+            type yang:uuid;
+            description "UUID to index this object.";
+        }
+
+        leaf name {
+            type string;
+            description "Optional human-readable name for the item. Might not be unique.";
+        }
+
+        leaf description {
+            type string;
+            description "Optional human-readable description for the item. Might not be unique.";
+        }
+
+        list other-config {
+            description "This is used to store information needed by the renderer(s).  In general,
+                         it might be used as a cookie to relate external objects or configuration with
+                         the given NetVirt objed.  For example, we may store neutron logical port
+                         information here so that the OVS southbound renderer can match up the port
+                         reported by OVSDB with the Neutron port configured by Neutron.";
+            key config-key;
+            leaf config-key {
+                description "Key to identify the piece of config info.
+                             This needs to be unique both within and between renderers.
+                             Format: <renderer-name>:<renderer-unique-key>";
+                type string;
+            }
+            leaf config-value {
+                type string;
+            }
+        }
+    }
+
+    grouping admin-attributes {
+        leaf admin-state-up {
+            type boolean;
+            description "The administrative state of the object, which is up (true) or down (false).";
+        }
+        leaf status {
+            type string;
+            description "The object status.";
+        }
+    }
+
+    grouping device-locator-ref {
+        leaf device-uuid {
+            type yang:uuid;
+            description "Reference to the the device for this port";
+        }
+
+        leaf device-locator-uuid {
+            type yang:uuid;
+            description "Reference to the the device locator for this port";
+        }
+    }
+}
diff --git a/netvirt/api/src/main/yang/netvirt-devices.yang b/netvirt/api/src/main/yang/netvirt-devices.yang
new file mode 100644 (file)
index 0000000..2f9bd75
--- /dev/null
@@ -0,0 +1,105 @@
+module netvirt-devices {
+    yang-version 1;
+    namespace "urn:opendaylight:netvirt:devices";
+    prefix "devices";
+
+    revision "2015-12-27" {
+        description "Initial revision of netvirt devices definition";
+    }
+
+    import ietf-yang-types { prefix yang; }
+    import ietf-inet-types { prefix inet; }
+    import netvirt-common { prefix "common"; }
+    import opendaylight-l2-types { prefix l2types; }
+
+
+
+    grouping flat-attributes {
+    }
+
+    grouping vlan-attributes {
+    }
+
+    grouping gre-attributes {
+        leaf ip-addr {
+            type inet:ip-address;
+        }
+        leaf port {
+            type inet:port-number;
+        }
+    }
+
+    grouping vxlan-attributes {
+        leaf ip-addr {
+            type inet:ip-address;
+        }
+        leaf port {
+            type inet:port-number;
+        }
+    }
+
+    grouping vxlan-gpe-attributes {
+        leaf ip-addr {
+            type inet:ip-address;
+        }
+        leaf port {
+            type inet:port-number;
+        }
+    }
+
+    grouping device-locator {
+        uses common:base-attributes;
+
+        leaf locator-type {
+            type common:network-type;
+        }
+
+        choice locator-attr {
+            case flat {
+                uses flat-attributes;
+            }
+            case vlan {
+                uses vlan-attributes;
+            }
+            case gre {
+                uses gre-attributes;
+            }
+            case vxlan {
+                uses vxlan-attributes;
+            }
+            case vxlan-gpe {
+                uses vxlan-gpe-attributes;
+            }
+        }
+    }
+
+    grouping device {
+        uses common:base-attributes;
+
+        leaf device-type {
+            type enumeration {
+                 enum ovs;
+                 enum hwgw;
+             }
+        }
+
+        // TODO: Need to look at info needed per bridge.
+        list bridges {
+            leaf name {
+                type string;
+            }
+        }
+
+        list device-locators {
+            key uuid;
+            uses device-locator;
+        }
+    }
+
+    container devices {
+        list device {
+            key uuid;
+            uses device;
+        }
+    }
+}
diff --git a/netvirt/api/src/main/yang/netvirt-l2-networks.yang b/netvirt/api/src/main/yang/netvirt-l2-networks.yang
new file mode 100644 (file)
index 0000000..2d92742
--- /dev/null
@@ -0,0 +1,53 @@
+module netvirt-l2-networks {
+    yang-version 1;
+    namespace "urn:opendaylight:netvirt:l2-networks";
+    prefix "l2-networks";
+
+    revision "2015-12-27" {
+        description "Initial revision of netvirt l2-networks definition";
+    }
+
+    import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
+    import ietf-yang-types { prefix yang; }
+    import netvirt-common { prefix "common"; }
+
+    container l2-networks {
+        list l2-network {
+            uses common:base-attributes;
+            uses common:admin-attributes;
+
+            description "Description: Logical Layer 2 Networks.  E.g., a Neutron Network.  Typically, an l2-network
+                         defines an L2 broadcast domain and, unless otherwise prohibited, endpoints attached to ports
+                         on an l2-network can communicate with each other.  All l2-network are independent, and
+                         communication between l2-network is only allowed via other means, such as through an
+                         l3-router.";
+
+            key uuid;
+
+            leaf network-type {
+                type common:network-type;
+                description "The type of physical network that maps to this network resource.";
+            }
+
+            leaf segmentation-id {
+                type string;
+                description "An isolated segment on the physical network. The network-type
+                            attribute defines the segmentation model. For example, if network-type
+                            is vlan, this ID is a vlan identifier. If network-type is gre,
+                            this ID is a gre key.";
+            }
+
+            leaf shared {
+                type boolean;
+                default "false";
+                description "Indicates whether this network or subnet is shared across all
+                            tenants. By default, only administrative users can change this
+                            value.";
+            }
+
+            list device-locators {
+                uses common:device-locator-ref;
+            }
+        }
+    }
+}
diff --git a/netvirt/api/src/main/yang/netvirt-ports.yang b/netvirt/api/src/main/yang/netvirt-ports.yang
new file mode 100644 (file)
index 0000000..360a249
--- /dev/null
@@ -0,0 +1,136 @@
+module netvirt-ports {
+    yang-version 1;
+    namespace "urn:opendaylight:netvirt:ports";
+    prefix "ports";
+
+    revision "2015-12-27" {
+        description "Initial revision of netvirt ports definition";
+    }
+
+    import ietf-inet-types { prefix inet; }
+    import ietf-yang-types { prefix yang; }
+    import netvirt-common { prefix "common"; }
+
+
+    identity port-type-base {
+        description "Base port type";
+    }
+
+    identity port-type-l2-network {
+        base port-type-base;
+        description "port type l2-network";
+    }
+
+    identity port-type-router {
+        base port-type-base;
+        description "port type router";
+    }
+
+    typedef port-type {
+        type identityref {
+            base port-type-base;
+        }
+        description "This type is used to refer to an port Type.";
+    }
+
+    identity port-binding-type-base {
+        description "Base port-binding type";
+    }
+
+    identity port-binding-type-vlan {
+        base port-binding-type-base;
+        description "port-binding type vlan";
+    }
+
+    identity port-binding-type-vxlan {
+        base port-binding-type-base;
+        description "port-binding type vxlan";
+    }
+
+    typedef port-binding-type {
+        type identityref {
+            base port-binding-type-base;
+        }
+        description "The port binding is used to bind one port to another in a hierarchical.";
+    }
+
+    grouping end-point {
+        uses common:base-attributes;
+
+        leaf macaddr {
+            type yang:mac-address;
+            description "MAC address entry";
+        }
+
+        leaf-list ipaddrs {
+            description "Mechanism used to bind ports.";
+            type inet:ip-address;
+        }
+    }
+
+    grouping parent-port-binding {
+        description "Optional. Used to bind one port to another hierarchically.  For example, a port
+                     binding may be used to support multiple containers in a single VM. In this model
+                     each container could use a VLAN-based sub-port on a single tap port.";
+
+        leaf type {
+            description "How is this port bound to the other.  E.g., VLAN";
+            type port-binding-type;
+        }
+
+        leaf id {
+            description "Depends on binding type.  E.g., if the type is VLAN, this would be the VLAN ID";
+            type string;
+        }
+
+        leaf parent-port {
+            description "Must be the UUID of another port.";
+            type yang:uuid;
+        }
+    }
+
+    grouping port {
+        uses common:base-attributes;
+        uses common:admin-attributes;
+
+        leaf port-type {
+            type port-type;
+            description "The type of port.";
+        }
+
+        leaf parent {
+            type yang:uuid;
+            description "The UUID of the object this port is a member of.  For example, if the type is
+                         port-type-l2-network, this will be the UUID of the l2-network";
+        }
+
+        uses parent-port-binding;
+
+        // TODO: Can we use a leafref for the device locator?
+        leaf device-uuid {
+            type yang:uuid;
+            description "Reference to the the device for this port";
+        }
+
+        leaf device-locator-uuid {
+            type yang:uuid;
+            description "Reference to the the device locator for this port";
+        }
+
+        list end-points {
+
+            key macaddr;
+
+            uses end-point;
+        }
+    }
+
+    container ports {
+        list port {
+            description "List of ports.  Each port entry contains both logical and physical information.";
+
+            key uuid;
+            uses port;
+        }
+    }
+}
index 1571d6f761a5e850ab7ed3afeef78143965af065..720f99e169a91f3e423586a5bf2e5c704d5f489a 100644 (file)
@@ -1,6 +1,6 @@
 module netvirt {
     yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:netvirt";
+    namespace "urn:opendaylight:netvirt";
     prefix "netvirt";
 
     revision "2015-12-27" {
diff --git a/netvirt/it/pom.xml b/netvirt/it/pom.xml
new file mode 100644 (file)
index 0000000..9130f74
--- /dev/null
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright Â© 2016 Red Hat, 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
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <parent>
+    <groupId>org.opendaylight.netvirt</groupId>
+    <artifactId>it</artifactId>
+    <version>1.3.0-SNAPSHOT</version>
+    <relativePath>../../commons/it</relativePath>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>netvirt-it</artifactId>
+  <version>1.3.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+
+  <properties>
+    <controller.mdsal.version>1.4.0-SNAPSHOT</controller.mdsal.version>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
+    <karaf.distro.groupId>org.opendaylight.ovsdb</karaf.distro.groupId>
+    <karaf.distro.artifactId>karaf</karaf.distro.artifactId>
+    <karaf.distro.version>${project.version}</karaf.distro.version>
+    <karaf.distro.type>zip</karaf.distro.type>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-binding-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-common-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>config-util</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>features-netvirt</artifactId>
+      <version>${project.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>southbound-api</artifactId>
+      <version>${ovsdb.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.it-utils</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.mdsal-utils</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.neutron-utils</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>utils.mdsal-utils</artifactId>
+      <version>${ovsdb.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>utils.southbound-utils</artifactId>
+      <version>${ovsdb.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.sonar-plugins.java</groupId>
+      <artifactId>sonar-jacoco-listeners</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <configuration>
+          <propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-failsafe-plugin</artifactId>
+        <configuration>
+        <!--<excludes>
+            <exclude>**/NetvirtIT.java</exclude>
+          </excludes>-->
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/netvirt/it/src/test/java/org/opendaylight/netvirt/netvirt/it/NetvirtIT.java b/netvirt/it/src/test/java/org/opendaylight/netvirt/netvirt/it/NetvirtIT.java
new file mode 100644 (file)
index 0000000..62a132e
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * Copyright Â© 2016 Red Hat, 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.netvirt.netvirt.it;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.CoreOptions.propagateSystemProperties;
+import static org.ops4j.pax.exam.CoreOptions.vmOption;
+import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
+import static org.ops4j.pax.exam.MavenUtils.asInProject;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.configureConsole;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicBoolean;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.mdsal.it.base.AbstractMdsalTestBase;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.neutron.spi.NeutronNetwork;
+import org.opendaylight.netvirt.utils.it.utils.ItConstants;
+import org.opendaylight.netvirt.utils.it.utils.ItUtils;
+import org.opendaylight.netvirt.utils.neutron.utils.NeutronModelsDataStoreHelper;
+import org.opendaylight.netvirt.utils.neutron.utils.NeutronUtils;
+import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.ovsdb.utils.mdsal.utils.NotifyingDataChangeListener;
+import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.karaf.options.LogLevelOption;
+import org.ops4j.pax.exam.options.MavenUrlReference;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class NetvirtIT extends AbstractMdsalTestBase {
+    private static final Logger LOG = LoggerFactory.getLogger(NetvirtIT.class);
+    private static final String FEATURE = "odl-netvirt-it";
+    private static DataBroker dataBroker = null;
+    private static ItUtils itUtils;
+    private static String addressStr;
+    private static String portStr;
+    private static String connectionType;
+    private static String controllerStr;
+    private static AtomicBoolean setup = new AtomicBoolean(false);
+    private static MdsalUtils mdsalUtils = null;
+    private static SouthboundUtils southboundUtils;
+    private static NeutronUtils neutronUtils = new NeutronUtils();
+    private static NeutronModelsDataStoreHelper neutronModelsDataStoreHelper;
+    private static final String NETWORK_TYPE_VXLAN = "vxlan";
+
+    @Override
+    public String getModuleName() {
+        return "netvirt-neutron";
+    }
+
+    @Override
+    public String getInstanceName() {
+        return "netvirt-neutron-default";
+    }
+
+    @Override
+    public MavenUrlReference getFeatureRepo() {
+        return maven()
+                .groupId("org.opendaylight.netvirt")
+                .artifactId("features-netvirt")
+                .classifier("features")
+                .type("xml")
+                .versionAsInProject();
+    }
+
+    @Override
+    public String getFeatureName() {
+        return FEATURE;
+    }
+
+    @Configuration
+    @Override
+    public Option[] config() {
+        Option[] parentOptions = super.config();
+        Option[] propertiesOptions = getPropertiesOptions();
+        Option[] otherOptions = getOtherOptions();
+        Option[] options = new Option[parentOptions.length + propertiesOptions.length + otherOptions.length];
+        System.arraycopy(parentOptions, 0, options, 0, parentOptions.length);
+        System.arraycopy(propertiesOptions, 0, options, parentOptions.length, propertiesOptions.length);
+        System.arraycopy(otherOptions, 0, options, parentOptions.length + propertiesOptions.length,
+                otherOptions.length);
+        return options;
+    }
+
+    private Option[] getOtherOptions() {
+        return new Option[] {
+                wrappedBundle(
+                        mavenBundle("org.opendaylight.netvirt", "utils.mdsal-openflow")
+                                .version(asInProject())
+                                .type("jar")),
+                configureConsole().startLocalConsole(),
+                //vmOption("-verbose:class"),
+                vmOption("-javaagent:../jars/org.jacoco.agent.jar=destfile=../../jacoco-it.exec"),
+                keepRuntimeFolder()
+        };
+    }
+
+    private Option[] getPropertiesOptions() {
+        return new Option[] {
+                propagateSystemProperties(ItConstants.SERVER_IPADDRESS, ItConstants.SERVER_PORT,
+                        ItConstants.CONNECTION_TYPE, ItConstants.CONTROLLER_IPADDRESS,
+                        ItConstants.USERSPACE_ENABLED),
+        };
+    }
+
+    @Override
+    public Option getLoggingOption() {
+        return composite(
+                editConfigurationFilePut(ItConstants.ORG_OPS4J_PAX_LOGGING_CFG,
+                        "log4j.logger.org.opendaylight.ovsdb",
+                        LogLevelOption.LogLevel.TRACE.name()),
+                editConfigurationFilePut(ItConstants.ORG_OPS4J_PAX_LOGGING_CFG,
+                        logConfiguration(NetvirtIT.class),
+                        LogLevelOption.LogLevel.INFO.name()),
+                editConfigurationFilePut(ItConstants.ORG_OPS4J_PAX_LOGGING_CFG,
+                        "log4j.logger.org.opendaylight.neutron",
+                        LogLevelOption.LogLevel.TRACE.name()),
+                super.getLoggingOption());
+    }
+
+    protected String usage() {
+        return "Integration Test needs a valid connection configuration as follows :\n"
+                + "active connection : mvn -Dovsdbserver.ipaddress=x.x.x.x -Dovsdbserver.port=yyyy verify\n"
+                + "passive connection : mvn -Dovsdbserver.connection=passive verify\n";
+    }
+
+    private void getProperties() {
+        Properties props = System.getProperties();
+        addressStr = props.getProperty(ItConstants.SERVER_IPADDRESS);
+        portStr = props.getProperty(ItConstants.SERVER_PORT, ItConstants.DEFAULT_SERVER_PORT);
+        connectionType = props.getProperty(ItConstants.CONNECTION_TYPE, "active");
+        controllerStr = props.getProperty(ItConstants.CONTROLLER_IPADDRESS, "0.0.0.0");
+        String userSpaceEnabled = props.getProperty(ItConstants.USERSPACE_ENABLED, "no");
+        LOG.info("setUp: Using the following properties: mode= {}, ip:port= {}:{}, controller ip: {}, " +
+                        "userspace.enabled: {}",
+                connectionType, addressStr, portStr, controllerStr, userSpaceEnabled);
+        if (connectionType.equalsIgnoreCase(ItConstants.CONNECTION_TYPE_ACTIVE)) {
+            if (addressStr == null) {
+                fail(usage());
+            }
+        }
+    }
+
+    @After
+    public void teardown() {
+        closeWaitFors();
+    }
+
+    @Before
+    @Override
+    public void setup() throws InterruptedException {
+        if (setup.get()) {
+            LOG.info("Skipping setUp, already initialized");
+            return;
+        }
+
+        try {
+            super.setup();
+        } catch (Exception e) {
+            LOG.warn("Failed to setup test", e);
+            fail("Failed to setup test: " + e);
+        }
+
+        getProperties();
+
+        if (connectionType.equalsIgnoreCase(ItConstants.CONNECTION_TYPE_ACTIVE)) {
+            if (addressStr == null) {
+                fail(usage());
+            }
+        }
+
+        dataBroker = ItUtils.getDatabroker(getProviderContext());
+        itUtils = new ItUtils(dataBroker);
+        mdsalUtils = new MdsalUtils(dataBroker);
+        assertNotNull("mdsalUtils should not be null", mdsalUtils);
+        // TODO: Not used yet since openstack is not running to write the netvirt:1 to mdsal
+        // Only need neutron northbound right now
+        //assertTrue("Did not find " + ItConstants.NETVIRT_TOPOLOGY_ID, itUtils.getNetvirtTopology());
+        southboundUtils = new SouthboundUtils(mdsalUtils);
+        neutronModelsDataStoreHelper = new NeutronModelsDataStoreHelper(dataBroker);
+        setup.set(true);
+    }
+
+    private BindingAwareBroker.ProviderContext getProviderContext() {
+        BindingAwareBroker.ProviderContext providerContext = null;
+        for (int i=0; i < 60; i++) {
+            providerContext = getSession();
+            if (providerContext != null) {
+                break;
+            } else {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    LOG.warn("Interrupted while waiting for provider context", e);
+                }
+            }
+        }
+        assertNotNull("providercontext should not be null", providerContext);
+        /* One more second to let the provider finish initialization */
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+            LOG.warn("Interrupted while waiting for other provider", e);
+        }
+        return providerContext;
+    }
+
+    @Test
+    public void testNetvirtFeatureLoad() {
+        assertTrue("Feature " + FEATURE + " was not loaded", true);
+    }
+
+    private List<NotifyingDataChangeListener> waitList = new ArrayList<>();
+    private void closeWaitFors() {
+        for (Iterator<NotifyingDataChangeListener> iterator = waitList.iterator(); iterator.hasNext();) {
+            NotifyingDataChangeListener listener = iterator.next();
+            iterator.remove();
+            try {
+                listener.close();
+            } catch (Exception ex) {
+                LOG.warn("Failed to close registration {}", listener, ex);
+            }
+        }
+        LOG.info("waitList size {}", waitList.size());
+    }
+
+    @Test
+    public void testNetvirtNeutron() throws InterruptedException {
+        final String networkId = "521e29d6-67b8-4b3c-8633-027d21195111";
+        final String tenantId = "521e29d6-67b8-4b3c-8633-027d21195100";
+
+        InstanceIdentifier<Network> path = neutronModelsDataStoreHelper.getNeutronNetworkPath(new Uuid(networkId));
+        final NotifyingDataChangeListener networkOperationalListener =
+                new NotifyingDataChangeListener(LogicalDatastoreType.CONFIGURATION, path, waitList);
+        networkOperationalListener.registerDataChangeListener(dataBroker);
+
+        NeutronNetwork nn = neutronUtils.createNeutronNetwork(networkId, tenantId,
+                NETWORK_TYPE_VXLAN, "100");
+
+        networkOperationalListener.waitForCreation();
+
+        Network network = mdsalUtils.read(LogicalDatastoreType.CONFIGURATION, path);
+        assertNotNull("the network was not found in mdsal", network);
+    }
+}
index 3e801479f5798ffaeb523cbe8c2e63bbbb718c8c..d9087715ad70f9155d94a8afbbd3e46bea835ecb 100644 (file)
@@ -14,7 +14,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>netvirt-aggregator</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>netvirt</name>
@@ -48,8 +48,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
   </build>
 
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
index 6851445b91dffe81d98e730679690ec0d7ca2c59..cb6e0c7465baf7dd83a2e889ae220b1bae2cd180 100644 (file)
@@ -15,7 +15,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>hwgw</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
index 09926d96a8c096737130540577feaf9fa17627cd..c60959c15adc4f80e86f4d42fb8d8ff2197afabd 100644 (file)
@@ -9,7 +9,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
 -->
 <snapshot>
   <required-capabilities>
-      <capability>urn:opendaylight:params:xml:ns:yang:hwgw?module=hwgw&amp;revision=2015-12-27</capability>
+      <capability>urn:opendaylight:params:xml:ns:yang:netvirt:hwgw?module=hwgw&amp;revision=2015-12-27</capability>
       <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
   </required-capabilities>
   <configuration>
@@ -17,7 +17,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
       <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
         <module>
-          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:hwgw">prefix:hwgw</type>
+          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:netvirt:hwgw">prefix:hwgw</type>
           <name>hwgw-default</name>
           <broker>
             <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
similarity index 94%
rename from netvirt/renderers/hwgw/src/main/java/org/opendaylight/ovsdb/netvirt/renderers/hwgw/HwgwProvider.java
rename to netvirt/renderers/hwgw/src/main/java/org/opendaylight/netvirt/netvirt/renderers/hwgw/HwgwProvider.java
index 5eb4695dfb55af2de2f1f84a11d44ce36123d384..37dd5ffb4bd05c8a6650e35f81eca52e4fc03cfe 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.netvirt.renderers.hwgw;
+package org.opendaylight.netvirt.netvirt.renderers.hwgw;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
index 6834db2c73603a92514e1840d8909e5b7b0b9b62..45a930be399d79bb85ee78425448807cc5e79e52 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.hwgw.rev151227;
 
-import org.opendaylight.ovsdb.netvirt.renderers.hwgw.HwgwProvider;
+import org.opendaylight.netvirt.netvirt.renderers.hwgw.HwgwProvider;
 
 public class HwgwModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.hwgw.rev151227.AbstractHwgwModule {
     public HwgwModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
similarity index 94%
rename from netvirt/renderers/hwgw/src/test/java/org/opendaylight/ovsdb/netvirt/renderers/hwgw/HwgwProviderTest.java
rename to netvirt/renderers/hwgw/src/test/java/org/opendaylight/netvirt/netvirt/renderers/hwgw/HwgwProviderTest.java
index 0ef04c37733050819b4311e354e13e8968ce5c78..54ff725a144c41259c2ce2ab8a69bdbf9366dce8 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.netvirt.renderers.hwgw;
+package org.opendaylight.netvirt.netvirt.renderers.hwgw;
 
 import org.junit.Test;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
index ddce57b10f1ae8df3ac6598dd08ba15664bbc5be..ade11ef014416da13876f8010f8ab80fea973555 100644 (file)
@@ -12,7 +12,7 @@ import org.opendaylight.controller.config.api.DependencyResolver;
 import org.opendaylight.controller.config.api.JmxAttribute;
 import org.opendaylight.controller.config.api.ModuleIdentifier;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.ovsdb.netvirt.renderers.hwgw.HwgwProvider;
+import org.opendaylight.netvirt.netvirt.renderers.hwgw.HwgwProvider;
 
 import javax.management.ObjectName;
 
diff --git a/netvirt/renderers/neutron/pom.xml b/netvirt/renderers/neutron/pom.xml
new file mode 100644 (file)
index 0000000..972766b
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: --><!--
+Copyright (c) 2016 Red Hat, 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <parent>
+    <groupId>org.opendaylight.controller</groupId>
+    <artifactId>config-parent</artifactId>
+    <version>0.5.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>neutron</artifactId>
+  <version>1.3.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+
+  <properties>
+    <neutron.model.version>0.7.0-SNAPSHOT</neutron.model.version>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.neutron</groupId>
+      <artifactId>model</artifactId>
+      <version>${neutron.model.version}</version>
+    </dependency>
+      <dependency>
+        <groupId>${project.groupId}</groupId>
+        <artifactId>utils.mdsal-utils</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    <!-- Testing Dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+</project>
diff --git a/netvirt/renderers/neutron/src/main/config/default-config.xml b/netvirt/renderers/neutron/src/main/config/default-config.xml
new file mode 100644 (file)
index 0000000..0955167
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+Copyright (c) 2016 Red Hat, 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
+-->
+<snapshot>
+  <required-capabilities>
+      <capability>urn:opendaylight:params:xml:ns:yang:netvirt:neutron?module=netvirt-neutron&amp;revision=2016-03-08</capability>
+      <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
+  </required-capabilities>
+  <configuration>
+
+    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+        <module>
+          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:netvirt:neutron">prefix:netvirt-neutron</type>
+          <name>netvirt-neutron-default</name>
+          <broker>
+            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
+            <name>binding-osgi-broker</name>
+          </broker>
+        </module>
+      </modules>
+    </data>
+  </configuration>
+</snapshot>
diff --git a/netvirt/renderers/neutron/src/main/java/org/opendaylight/netvirt/netvirt/renderers/neutron/NeutronProvider.java b/netvirt/renderers/neutron/src/main/java/org/opendaylight/netvirt/netvirt/renderers/neutron/NeutronProvider.java
new file mode 100644 (file)
index 0000000..915d44d
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.netvirt.netvirt.renderers.neutron;
+
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
+import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class NeutronProvider implements BindingAwareProvider, AutoCloseable {
+
+    private static final Logger LOG = LoggerFactory.getLogger(NeutronProvider.class);
+
+    @Override
+    public void onSessionInitiated(ProviderContext session) {
+        LOG.info("NeutronProvider Session Initiated");
+    }
+
+    @Override
+    public void close() throws Exception {
+        LOG.info("NeutronProvider Closed");
+    }
+
+}
diff --git a/netvirt/renderers/neutron/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModule.java b/netvirt/renderers/neutron/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModule.java
new file mode 100644 (file)
index 0000000..52cc310
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308;
+
+import org.opendaylight.netvirt.netvirt.renderers.neutron.NeutronProvider;
+
+public class NeutronModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308.AbstractNeutronModule {
+    public NeutronModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+        super(identifier, dependencyResolver);
+    }
+
+    public NeutronModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308.NeutronModule oldModule, java.lang.AutoCloseable oldInstance) {
+        super(identifier, dependencyResolver, oldModule, oldInstance);
+    }
+
+    @Override
+    public void customValidation() {
+        // add custom validation form module attributes here.
+    }
+
+    @Override
+    public java.lang.AutoCloseable createInstance() {
+        NeutronProvider provider = new NeutronProvider();
+        getBrokerDependency().registerProvider(provider);
+        return provider;
+    }
+
+}
diff --git a/netvirt/renderers/neutron/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleFactory.java b/netvirt/renderers/neutron/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleFactory.java
new file mode 100644 (file)
index 0000000..98cd54a
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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
+ */
+/*
+* Generated file
+*
+* Generated from: yang module name: neutron yang module local name: neutron
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308;
+public class NeutronModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308.AbstractNeutronModuleFactory {
+
+}
diff --git a/netvirt/renderers/neutron/src/main/yang/netvirt-neutron.yang b/netvirt/renderers/neutron/src/main/yang/netvirt-neutron.yang
new file mode 100644 (file)
index 0000000..5bf992c
--- /dev/null
@@ -0,0 +1,35 @@
+module netvirt-neutron {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:netvirt:neutron";
+    prefix "neutron";
+
+    import config { prefix config; revision-date 2013-04-05; }
+    import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;}
+
+    description
+        "Service definition for NetVirt Neutron renderer";
+
+    revision "2016-03-08" {
+        description
+            "Initial revision";
+    }
+
+    identity netvirt-neutron {
+        base config:module-type;
+        config:java-name-prefix Neutron;
+    }
+
+    augment "/config:modules/config:module/config:configuration" {
+        case netvirt-neutron {
+            when "/config:modules/config:module/config:type = 'netvirt-neutron'";
+            container broker {
+                uses config:service-ref {
+                    refine type {
+                        mandatory true;
+                        config:required-identity md-sal-binding:binding-broker-osgi-registry;
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/netvirt/renderers/neutron/src/test/java/org/opendaylight/netvirt/netvirt/renderers/neutron/NeutronProviderTest.java b/netvirt/renderers/neutron/src/test/java/org/opendaylight/netvirt/netvirt/renderers/neutron/NeutronProviderTest.java
new file mode 100644 (file)
index 0000000..8cf5586
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.netvirt.netvirt.renderers.neutron;
+
+import org.junit.Test;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+
+import static org.mockito.Mockito.mock;
+
+public class NeutronProviderTest {
+    @Test
+    public void testOnSessionInitiated() {
+        NeutronProvider provider = new NeutronProvider();
+
+        // ensure no exceptions
+        // currently this method is empty
+        provider.onSessionInitiated(mock(BindingAwareBroker.ProviderContext.class));
+    }
+
+    @Test
+    public void testClose() throws Exception {
+        NeutronProvider provider = new NeutronProvider();
+
+        // ensure no exceptions
+        // currently this method is empty
+        provider.close();
+    }
+}
diff --git a/netvirt/renderers/neutron/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleFactoryTest.java b/netvirt/renderers/neutron/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleFactoryTest.java
new file mode 100644 (file)
index 0000000..76bf797
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308;
+
+import org.junit.Test;
+
+public class NeutronModuleFactoryTest {
+    @Test
+    public void testFactoryConstructor() {
+        // ensure no exceptions on construction
+        new NeutronModuleFactory();
+    }
+}
diff --git a/netvirt/renderers/neutron/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleTest.java b/netvirt/renderers/neutron/src/test/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/neutron/rev160308/NeutronModuleTest.java
new file mode 100644 (file)
index 0000000..46b2228
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.neutron.rev160308;
+
+import org.junit.Test;
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.opendaylight.controller.config.api.JmxAttribute;
+import org.opendaylight.controller.config.api.ModuleIdentifier;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.netvirt.netvirt.renderers.neutron.NeutronProvider;
+
+import javax.management.ObjectName;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class NeutronModuleTest {
+    @Test
+    public void testCustomValidation() {
+        NeutronModule module = new NeutronModule(mock(ModuleIdentifier.class), mock(DependencyResolver.class));
+
+        // ensure no exceptions on validation
+        // currently this method is empty
+        module.customValidation();
+    }
+
+    @Test
+    public void testCreateInstance() throws Exception {
+        // configure mocks
+        DependencyResolver dependencyResolver = mock(DependencyResolver.class);
+        BindingAwareBroker broker = mock(BindingAwareBroker.class);
+        when(dependencyResolver.resolveInstance(eq(BindingAwareBroker.class), any(ObjectName.class), any(JmxAttribute.class))).thenReturn(broker);
+
+        // create instance of module with injected mocks
+        NeutronModule module = new NeutronModule(mock(ModuleIdentifier.class), dependencyResolver);
+
+        // getInstance calls resolveInstance to get the broker dependency and then calls createInstance
+        AutoCloseable closeable = module.getInstance();
+
+        // verify that the module registered the returned provider with the broker
+        verify(broker).registerProvider((NeutronProvider)closeable);
+
+        // ensure no exceptions on close
+        closeable.close();
+    }
+}
index ebaeb6ebba1ff347a06d927c0a1a413e43703e51..4fbe752a98640b2fc4b2e3657e0b9c073335dda5 100644 (file)
@@ -13,7 +13,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>renderers-aggregator</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>renderers</name>
@@ -24,6 +24,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
   </prerequisites>
   <modules>
     <module>hwgw</module>
+    <module>neutron</module>
   </modules>
   <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
   <build>
@@ -46,8 +47,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
   </build>
 
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
index ee99fdf04ec6f83650c49f8f0f191b82c4d4e103..4b1aedce0f9a2f63b39b09c8aa501b3a14ccb6bf 100644 (file)
@@ -9,13 +9,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
   <parent>
-    <groupId>org.opendaylight.ovsdb</groupId>
+    <groupId>org.opendaylight.netvirt</groupId>
     <artifactId>it</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <relativePath>../../commons/it</relativePath>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-it</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>jar</packaging>
@@ -35,45 +35,21 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
 
   <properties>
     <controller.mdsal.version>1.4.0-SNAPSHOT</controller.mdsal.version>
-    <karaf.distro.groupId>org.opendaylight.ovsdb</karaf.distro.groupId>
+    <karaf.distro.groupId>org.opendaylight.netvirt</karaf.distro.groupId>
     <karaf.distro.artifactId>karaf</karaf.distro.artifactId>
     <karaf.distro.version>${project.version}</karaf.distro.version>
     <karaf.distro.type>zip</karaf.distro.type>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
   </properties>
 
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>ovsdb-artifacts</artifactId>
-        <version>${project.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>config-artifacts</artifactId>
-        <version>0.5.0-SNAPSHOT</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>mdsal-artifacts</artifactId>
-        <version>${controller.mdsal.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
@@ -85,8 +61,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>features-ovsdb</artifactId>
-      <version>1.3.0-SNAPSHOT</version>
+      <artifactId>features-netvirt</artifactId>
+      <version>${project.version}</version>
       <classifier>features</classifier>
       <type>xml</type>
     </dependency>
@@ -99,7 +75,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>sonar-jacoco-listeners</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.it-utils</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
+
   <build>
     <plugins>
       <plugin>
similarity index 81%
rename from openstack/net-virt-it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/it/NetvirtIT.java
rename to openstack/net-virt-it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/it/NetvirtIT.java
index db101d6164f09a90a0921ed130c1ddec17636a0a..af067bb1f1980f62812899137b57f8f0e8a62262 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * Copyright (c) 2015 Red Hat, Inc. and others.  All rights reserved.
+ * Copyright (c) 2015 - 2016 Red Hat, 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.ovsdb.openstack.netvirt.it;
+package org.opendaylight.netvirt.openstack.netvirt.it;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
@@ -50,13 +50,14 @@ import org.opendaylight.neutron.spi.NeutronSecurityRule;
 import org.opendaylight.neutron.spi.NeutronNetwork;
 import org.opendaylight.neutron.spi.NeutronSubnet;
 import org.opendaylight.ovsdb.lib.notation.Version;
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.utils.it.utils.ItUtils;
+import org.opendaylight.netvirt.utils.it.utils.NodeInfo;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
 import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
 import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
 import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
@@ -64,7 +65,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.OpenvswitchOtherConfigs;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
@@ -93,6 +93,7 @@ import org.slf4j.LoggerFactory;
 public class NetvirtIT extends AbstractMdsalTestBase {
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtIT.class);
     private static DataBroker dataBroker = null;
+    private static ItUtils itUtils;
     private static String addressStr;
     private static String portStr;
     private static String connectionType;
@@ -118,8 +119,8 @@ public class NetvirtIT extends AbstractMdsalTestBase {
     @Override
     public MavenUrlReference getFeatureRepo() {
         return maven()
-                .groupId("org.opendaylight.ovsdb")
-                .artifactId("features-ovsdb")
+                .groupId("org.opendaylight.netvirt")
+                .artifactId("features-netvirt")
                 .classifier("features")
                 .type("xml")
                 .versionAsInProject();
@@ -127,7 +128,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
 
     @Override
     public String getFeatureName() {
-        return "odl-ovsdb-openstack";
+        return "odl-ovsdb-openstack-it";
     }
 
     @Configuration
@@ -147,11 +148,11 @@ public class NetvirtIT extends AbstractMdsalTestBase {
     private Option[] getOtherOptions() {
         return new Option[] {
                 wrappedBundle(
-                        mavenBundle("org.opendaylight.ovsdb", "utils.mdsal-openflow")
+                        mavenBundle("org.opendaylight.netvirt", "utils.mdsal-openflow")
                                 .version(asInProject())
                                 .type("jar")),
                 wrappedBundle(
-                        mavenBundle("org.opendaylight.ovsdb", "utils.config")
+                        mavenBundle("org.opendaylight.netvirt", "utils.config")
                                 .version(asInProject())
                                 .type("jar")),
                 configureConsole().startLocalConsole(),
@@ -227,7 +228,8 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         try {
             super.setup();
         } catch (Exception e) {
-            e.printStackTrace();
+            LOG.warn("Failed to setup test", e);
+            fail("Failed to setup test: " + e);
         }
 
         getProperties();
@@ -239,6 +241,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         }
 
         dataBroker = getDatabroker(getProviderContext());
+        itUtils = new ItUtils(dataBroker);
         mdsalUtils = new MdsalUtils(dataBroker);
         assertNotNull("mdsalUtils should not be null", mdsalUtils);
         assertTrue("Did not find " + NETVIRT_TOPOLOGY_ID, getNetvirtTopology());
@@ -261,7 +264,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException e) {
-                    e.printStackTrace();
+                    LOG.warn("Interrupted while waiting for provider context", e);
                 }
             }
         }
@@ -270,7 +273,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         try {
             Thread.sleep(1000);
         } catch (InterruptedException e) {
-            e.printStackTrace();
+            LOG.warn("Interrupted while waiting for other provider", e);
         }
         return providerContext;
     }
@@ -298,7 +301,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException e) {
-                    e.printStackTrace();
+                    LOG.warn("Interrupted while waiting for {}", NETVIRT_TOPOLOGY_ID, e);
                 }
             }
         }
@@ -349,7 +352,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         LOG.info("testNetVirt: should be connected: {}", ovsdbNode.getNodeId());
 
         assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
-                + " is not connected", isControllerConnected(connectionInfo));
+                + " is not connected", itUtils.isControllerConnected(connectionInfo));
 
         Assert.assertTrue(southboundUtils.deleteBridge(connectionInfo, NetvirtITConstants.INTEGRATION_BRIDGE_NAME));
         Thread.sleep(1000);
@@ -371,7 +374,7 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         LOG.info("testNetVirt: should be connected: {}", ovsdbNode.getNodeId());
 
         assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
-                + " is not connected", isControllerConnected(connectionInfo));
+                + " is not connected", itUtils.isControllerConnected(connectionInfo));
 
         // Verify the pipeline flows were installed
         Node bridgeNode = southbound.getBridgeNode(ovsdbNode, NetvirtITConstants.INTEGRATION_BRIDGE_NAME);
@@ -402,38 +405,6 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         LOG.info("testAddDeleteOvsdbNodeWithTableOffset exit");
     }
 
-    private boolean isControllerConnected(ConnectionInfo connectionInfo) throws InterruptedException {
-        LOG.info("isControllerConnected enter");
-        Boolean connected = false;
-        ControllerEntry controllerEntry;
-        Node ovsdbNode = southboundUtils.getOvsdbNode(connectionInfo);
-        assertNotNull("ovsdb node not found", ovsdbNode);
-
-        BridgeConfigurationManager bridgeConfigurationManager =
-                (BridgeConfigurationManager) ServiceHelper.getGlobalInstance(BridgeConfigurationManager.class, this);
-        assertNotNull("Could not find BridgeConfigurationManager Service", bridgeConfigurationManager);
-        String controllerTarget = bridgeConfigurationManager.getControllersFromOvsdbNode(ovsdbNode).get(0);
-        Assert.assertNotNull("Failed to get controller target", controllerTarget);
-
-        for (int i = 0; i < 10; i++) {
-            LOG.info("isControllerConnected try {}: looking for controller: {}", i, controllerTarget);
-            OvsdbBridgeAugmentation bridge =
-                    southboundUtils.getBridge(connectionInfo, NetvirtITConstants.INTEGRATION_BRIDGE_NAME);
-            Assert.assertNotNull(bridge);
-            Assert.assertNotNull(bridge.getControllerEntry());
-            controllerEntry = bridge.getControllerEntry().iterator().next();
-            Assert.assertEquals(controllerTarget, controllerEntry.getTarget().getValue());
-            if (controllerEntry.isIsConnected()) {
-                Assert.assertTrue("Controller is not connected", controllerEntry.isIsConnected());
-                connected = true;
-                break;
-            }
-            Thread.sleep(1000);
-        }
-        LOG.info("isControllerConnected exit: {} - {}", connected, controllerTarget);
-        return connected;
-    }
-
     @Ignore
     @Test
     public void testOpenVSwitchOtherConfig() throws InterruptedException {
@@ -472,21 +443,9 @@ public class NetvirtIT extends AbstractMdsalTestBase {
     public void testNetVirt() throws InterruptedException {
         LOG.info("testNetVirt: starting test");
         ConnectionInfo connectionInfo = SouthboundUtils.getConnectionInfo(addressStr, portStr);
-        Node ovsdbNode = connectOvsdbNode(connectionInfo);
-        assertNotNull("connection failed", ovsdbNode);
-        LOG.info("testNetVirt: should be connected: {}", ovsdbNode.getNodeId());
-
-        //TODO use controller value rather that ovsdb connectionInfo or change log
-        assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
-                + " is not connected", isControllerConnected(connectionInfo));
-
-        // Verify the pipeline flows were installed
-        Node bridgeNode = southbound.getBridgeNode(ovsdbNode, NetvirtITConstants.INTEGRATION_BRIDGE_NAME);
-        assertNotNull("bridge " + NetvirtITConstants.INTEGRATION_BRIDGE_NAME + " was not found", bridgeNode);
-        long datapathId = southbound.getDataPathId(bridgeNode);
-        String datapathIdString = southbound.getDatapathId(bridgeNode);
-        LOG.info("testNetVirt: bridgeNode: {}, datapathId: {} - {}", bridgeNode, datapathIdString, datapathId);
-        assertNotEquals("datapathId was not found", datapathId, 0);
+        NodeInfo nodeInfo = itUtils.createNodeInfo(connectionInfo, null);
+        nodeInfo.connect();
+        LOG.info("testNetVirt: should be connected: {}", nodeInfo.ovsdbNode.getNodeId());
 
         List<Service> staticPipeline = pipelineOrchestrator.getStaticPipeline();
         List<Service> staticPipelineFound = Lists.newArrayList();
@@ -495,19 +454,18 @@ public class NetvirtIT extends AbstractMdsalTestBase {
                 staticPipelineFound.add(service);
             }
             String flowId = "DEFAULT_PIPELINE_FLOW_" + pipelineOrchestrator.getTable(service);
-            verifyFlow(datapathId, flowId, service);
+            verifyFlow(nodeInfo.datapathId, flowId, service);
         }
         assertEquals("did not find all expected flows in static pipeline",
                 staticPipeline.size(), staticPipelineFound.size());
 
-        southboundUtils.addTerminationPoint(bridgeNode, NetvirtITConstants.PORT_NAME, "internal", null, null, 0L);
+        southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, NetvirtITConstants.PORT_NAME, "internal", null, null, 0L);
         Thread.sleep(1000);
         OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation =
-                southbound.getTerminationPointOfBridge(bridgeNode, NetvirtITConstants.PORT_NAME);
+                southbound.getTerminationPointOfBridge(nodeInfo.bridgeNode, NetvirtITConstants.PORT_NAME);
         Assert.assertNotNull("Did not find " + NetvirtITConstants.PORT_NAME, ovsdbTerminationPointAugmentation);
-        Assert.assertTrue(southboundUtils.deleteBridge(connectionInfo, NetvirtITConstants.INTEGRATION_BRIDGE_NAME));
-        Thread.sleep(1000);
-        Assert.assertTrue(disconnectOvsdbNode(connectionInfo));
+
+        nodeInfo.disconnect();
     }
 
     @Test
@@ -521,12 +479,12 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         final String dhcpPortId ="521e29d6-67b8-4b3c-8633-027d21195115";
 
         ConnectionInfo connectionInfo = SouthboundUtils.getConnectionInfo(addressStr, portStr);
-        Node ovsdbNode = connectOvsdbNode(connectionInfo);
-        assertNotNull("connection failed", ovsdbNode);
-        LOG.info("testNetVirtFixedSG: should be connected: {}", ovsdbNode.getNodeId());
+        NodeInfo nodeInfo = itUtils.createNodeInfo(connectionInfo, null);
+        nodeInfo.connect();
+        LOG.info("testNetVirtFixedSG: should be connected: {}", nodeInfo.ovsdbNode.getNodeId());
 
         // Verify the minimum version required for this test
-        OvsdbNodeAugmentation ovsdbNodeAugmentation = ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class);
+        OvsdbNodeAugmentation ovsdbNodeAugmentation = nodeInfo.ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class);
         Assert.assertNotNull(ovsdbNodeAugmentation);
         assertNotNull(ovsdbNodeAugmentation.getOvsVersion());
         String ovsVersion = ovsdbNodeAugmentation.getOvsVersion();
@@ -540,16 +498,6 @@ public class NetvirtIT extends AbstractMdsalTestBase {
             return;
         }
 
-        assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
-                + " is not connected", isControllerConnected(connectionInfo));
-
-        Node bridgeNode = southbound.getBridgeNode(ovsdbNode, NetvirtITConstants.INTEGRATION_BRIDGE_NAME);
-        assertNotNull("bridge " + NetvirtITConstants.INTEGRATION_BRIDGE_NAME + " was not found", bridgeNode);
-        long datapathId = southbound.getDataPathId(bridgeNode);
-        String datapathIdString = southbound.getDatapathId(bridgeNode);
-        LOG.info("testNetVirtFixedSG: bridgeNode: {}, datapathId: {} - {}", bridgeNode, datapathIdString, datapathId);
-        assertNotEquals("datapathId was not found", datapathId, 0);
-
         NeutronNetwork nn = neutronUtils.createNeutronNetwork(networkId, tenantId,
                 NetworkHandler.NETWORK_TYPE_VXLAN, "100");
         NeutronSubnet ns = neutronUtils.createNeutronSubnet(subnetId, tenantId, networkId, "10.0.0.0/24");
@@ -562,23 +510,22 @@ public class NetvirtIT extends AbstractMdsalTestBase {
         Map<String, String> externalIds = Maps.newHashMap();
         externalIds.put("attached-mac", "f6:00:00:0f:00:01");
         externalIds.put("iface-id", portId);
-        southboundUtils.addTerminationPoint(bridgeNode, portName, "internal", null, externalIds, 3L);
-        southboundUtils.addTerminationPoint(bridgeNode, "vm1", "internal", null, null, 0L);
-        southboundUtils.addTerminationPoint(bridgeNode, "vm2", "internal", null, null, 0L);
+        southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, portName, "internal", null, externalIds, 3L);
+        southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, "vm1", "internal", null, null, 0L);
+        southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, "vm2", "internal", null, null, 0L);
         Map<String, String> options = Maps.newHashMap();
         options.put("key", "flow");
         options.put("remote_ip", "192.168.120.32");
-        southboundUtils.addTerminationPoint(bridgeNode, "vx", "vxlan", options, null, 4L);
+        southboundUtils.addTerminationPoint(nodeInfo.bridgeNode, "vx", "vxlan", options, null, 4L);
         Thread.sleep(1000);
 
         String flowId = "Egress_DHCP_Client"  + "_Permit_";
-        verifyFlow(datapathId, flowId, Service.EGRESS_ACL);
+        verifyFlow(nodeInfo.datapathId, flowId, Service.EGRESS_ACL);
 
-        testDefaultSG(nport, datapathId, nn, tenantId, portId);
-        Thread.sleep(1000);
-        Assert.assertTrue(southboundUtils.deleteBridge(connectionInfo, NetvirtITConstants.INTEGRATION_BRIDGE_NAME));
+        testDefaultSG(nport, nodeInfo.datapathId, nn, tenantId, portId);
         Thread.sleep(1000);
-        Assert.assertTrue(disconnectOvsdbNode(connectionInfo));
+
+        nodeInfo.disconnect();
     }
 
     private void testDefaultSG(NeutronPort nport, long datapathId, NeutronNetwork nn, String tenantId, String portId)
similarity index 97%
rename from openstack/net-virt-it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/it/NetvirtITConstants.java
rename to openstack/net-virt-it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/it/NetvirtITConstants.java
index 347be949553c2f0723a59f629473578a82a14b4e..4665b1d3811a2ebb5b4fca2d348a08c745a1acd4 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.it;
+package org.opendaylight.netvirt.openstack.netvirt.it;
 
 /**
  * Constants for SouthboundIT
index 6b51fe93171185835afcce47a88fcbc8cbf2261b..f610e0535057ad4f9854317543abed64b0596025 100644 (file)
@@ -17,7 +17,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
   <modelVersion>4.0.0</modelVersion>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-providers</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
@@ -37,8 +37,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
@@ -46,33 +46,31 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <properties>
     <liblldp.version>0.11.0-SNAPSHOT</liblldp.version>
     <openflowplugin.version>0.3.0-SNAPSHOT</openflowplugin.version>
-    <powermock.version>1.6.4</powermock.version>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
     <sonar.jacoco.itReportPath>../net-virt-it/target/jacoco-it.exec</sonar.jacoco.itReportPath>
   </properties>
 
   <dependencies>
-    <!-- project specific dependencies -->
     <dependency>
-      <groupId>org.opendaylight.ovsdb</groupId>
+      <groupId>org.opendaylight.netvirt</groupId>
       <artifactId>openstack.net-virt</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.opendaylight.ovsdb</groupId>
+      <groupId>org.opendaylight.netvirt</groupId>
       <artifactId>utils.mdsal-openflow</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>southbound-api</artifactId>
-      <version>${project.version}</version>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.opendaylight.ovsdb</groupId>
+      <groupId>org.opendaylight.netvirt</groupId>
       <artifactId>utils.servicehelper</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <!-- openflowplugin dependencies -->
     <dependency>
       <groupId>org.opendaylight.openflowplugin.model</groupId>
       <artifactId>model-flow-base</artifactId>
@@ -98,7 +96,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>openflowplugin-api</artifactId>
       <version>${openflowplugin.version}</version>
     </dependency>
-    <!-- mdsal dependencies -->
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>ietf-inet-types</artifactId>
@@ -115,13 +112,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>ietf-topology</artifactId>
     </dependency>
-    <!-- controller dependencies -->
     <dependency>
       <groupId>org.opendaylight.controller</groupId>
       <artifactId>liblldp</artifactId>
       <version>${liblldp.version}</version>
     </dependency>
-    <!-- external dependencies -->
     <dependency>
       <groupId>com.google.code.findbugs</groupId>
       <artifactId>jsr305</artifactId>
@@ -145,7 +140,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
-    <!-- testing dependencies -->
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
@@ -155,31 +149,26 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-core</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-module-junit4</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-api-mockito</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-api-support</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-reflect</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -200,8 +189,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
             <Embed-Dependency>utils.config,utils.mdsal-openflow;type=!pom;inline=false</Embed-Dependency>
             <Embed-Transitive>true</Embed-Transitive>
             <Export-Package>
-              org.opendaylight.ovsdb.openstack.netvirt.providers,
-              org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13,
+              org.opendaylight.netvirt.openstack.netvirt.providers,
+              org.opendaylight.netvirt.openstack.netvirt.providers.openflow13,
               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109
             </Export-Package>
           </instructions>
@@ -211,7 +200,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <configuration>
-          <excludes>
+         <excludes>
             <exclude>**/services/*Test.java</exclude>
           </excludes>
           <properties>
@@ -6,48 +6,48 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers;
+package org.opendaylight.netvirt.openstack.netvirt.providers;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ClassifierProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolver;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IcmpEchoProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L2RewriteProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.OF13Provider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.ArpResponderService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.ClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.EgressAclService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.IcmpEchoResponderService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.InboundNatService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.IngressAclService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L2ForwardingService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L2RewriteService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.L3ForwardingService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.LoadBalancerService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.OutboundNatService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.RoutingService;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.arp.GatewayMacResolverService;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ClassifierProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IcmpEchoProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L2ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L2RewriteProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OutboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.OF13Provider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.ArpResponderService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.ClassifierService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.EgressAclService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.IcmpEchoResponderService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.InboundNatService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.IngressAclService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.L2ForwardingService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.L2RewriteService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.L3ForwardingService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.LoadBalancerService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.OutboundNatService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.RoutingService;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp.GatewayMacResolverService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
+import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers;
+package org.opendaylight.netvirt.openstack.netvirt.providers;
 
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.providers;
+package org.opendaylight.netvirt.openstack.netvirt.providers;
 
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
@@ -15,12 +15,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -6,9 +6,10 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers;
+package org.opendaylight.netvirt.openstack.netvirt.providers;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.clustering.Entity;
@@ -20,7 +21,6 @@ import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipL
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId;
 import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
@@ -6,18 +6,18 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
@@ -166,7 +166,7 @@ public abstract class AbstractServiceInstance {
                 commitFuture.checkedGet();  // TODO: Make it async (See bug 1362)
                 LOG.debug("Transaction success for write of Flow {}", flowBuilder.getFlowName());
             } catch (Exception e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("Failed to write flow {}", flowBuilder.getFlowName(), e);
                 modification.cancel();
             }
         }
@@ -182,7 +182,7 @@ public abstract class AbstractServiceInstance {
                 commitFuture.get();  // TODO: Make it async (See bug 1362)
                 LOG.debug("Transaction success for deletion of Flow {}", flowBuilder.getFlowName());
             } catch (Exception e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("Failed to remove flow {}", flowBuilder.getFlowName(), e);
                 modification.cancel();
             }
         }
@@ -197,7 +197,7 @@ public abstract class AbstractServiceInstance {
                 return data.get();
             }
         } catch (InterruptedException|ExecutionException e) {
-            LOG.error(e.getMessage(), e);
+            LOG.error("Failed to get flow {}", flowBuilder.getFlowName(), e);
         }
 
         LOG.debug("Cannot find data for Flow {}", flowBuilder.getFlowName());
@@ -215,7 +215,7 @@ public abstract class AbstractServiceInstance {
                 return data.get();
             }
         } catch (InterruptedException|ExecutionException e) {
-            LOG.error(e.getMessage(), e);
+            LOG.error("Failed to get openflow node {}", nodeId, e);
         }
 
         LOG.debug("Cannot find data for Node {}", nodeId);
@@ -6,11 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
 import java.net.InetAddress;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ExecutionException;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -19,32 +21,32 @@ import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.MdsalHelper;
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ClassifierProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.MdsalHelper;
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.ClassifierProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L2ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
@@ -56,12 +58,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase;
@@ -88,6 +88,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.N
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -134,6 +135,9 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
     private volatile BundleContext bundleContext;
     private volatile Southbound southbound;
 
+    private Set<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId>
+                    intBridgesWithoutVmPorts = new HashSet<>();
+
     public OF13Provider() {
         this.dataBroker = NetvirtProvidersProvider.getDataBroker();
     }
@@ -772,7 +776,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                 programLocalBridgeRules(node, dpid, segmentationId, attachedMac, localPort);
             }
         } catch (Exception e) {
-            LOG.error("Exception in programming Local Rules for " + intf + " on " + node, e);
+            LOG.error("Exception in programming Local Rules for {} on {}", intf, node, e);
         }
     }
 
@@ -811,14 +815,10 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                 programLocalSecurityGroupRules(attachedMac, node, intf, dpid, localPort, segmentationId, false);
             }
         } catch (Exception e) {
-            LOG.error("Exception in removing Local Rules for " + intf + " on " + node, e);
+            LOG.error("Exception in removing Local Rules for {} on {}", intf, node, e);
         }
     }
 
-    // TODO SB_MIGRATION
-    // Need to handle case where a node comes online after a network and tunnels have
-    // already been created. The interface update is what triggers creating the l2 forwarding flows
-    // so we don't see those updates in this case - we only see the new nodes interface updates.
     private void programTunnelRules (String tunnelType, String segmentationId, InetAddress dst, Node node,
                                      OvsdbTerminationPointAugmentation intf, boolean local) {
         LOG.debug("programTunnelRules: node: {}, intf: {}, local: {}, tunnelType: {}, "
@@ -844,7 +844,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
             }
 
             OvsdbTerminationPointAugmentation tunnelPort= southbound.getTerminationPointOfBridge(node, getTunnelName(tunnelType, dst));
-            if(tunnelPort != null){
+            if (tunnelPort != null){
                 long tunnelOFPort = southbound.getOFPort(tunnelPort);
                 if (tunnelOFPort == 0) {
                     LOG.error("programTunnelRules: Could not Identify Tunnel port {} -> OF ({}) on {}",
@@ -867,7 +867,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                 }
             }
         } catch (Exception e) {
-            LOG.trace("", e);
+            LOG.warn("Failed to program tunnel rules, node {}, intf {}", node, intf, e);
         }
     }
 
@@ -919,7 +919,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                 }
             }
         } catch (Exception e) {
-            LOG.error("", e);
+            LOG.error("Failed to remove tunnel rules, node {}, intf {}", node, intf, e);
         }
     }
 
@@ -1064,9 +1064,12 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                                              InetAddress src, InetAddress dst,
                                              Node srcBridgeNode, Node dstBridgeNode,
                                              OvsdbTerminationPointAugmentation intf){
+        LOG.debug("programTunnelRulesInNewNode: network {} networkType {} segId {} src {} dst {} srcBridgeNode {} dstBridgeNode {} intf {}",
+                    network.getNetworkName(), networkType, segmentationId, src.getHostAddress(),
+                    dst.getHostAddress(), srcBridgeNode, dstBridgeNode, intf);
         try {
             long localPort = southbound.getOFPort(intf);
-            if(localPort != 0)
+            if (localPort != 0)
             {
                 LOG.debug("Interface update details {}", intf);
 
@@ -1077,7 +1080,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                  * VM, the tunnelin and broadcast rule will not be present in C1.
                  * So, handling it in the case below to make ping work.
                  */
-                if(securityServicesManager.getNeutronPortFromDhcpIntf(intf) == null){
+                if (securityServicesManager.getNeutronPortFromDhcpIntf(intf) == null){
                     programTunnelRules(networkType, segmentationId, src, dstBridgeNode, intf, true);
                 }
 
@@ -1090,7 +1093,19 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                  */
                 List<OvsdbTerminationPointAugmentation> ports = southbound.getTerminationPointsOfBridge(dstBridgeNode);
                 for (OvsdbTerminationPointAugmentation port : ports) {
-                    if(network == tenantNetworkManager.getTenantNetwork(port)){
+
+                    NeutronNetwork neutronNetwork = tenantNetworkManager.getTenantNetwork(port);
+                    if (neutronNetwork != null) {
+                        String netType = neutronNetwork.getProviderNetworkType();
+                        String segId = neutronNetwork.getProviderSegmentationID();
+                        InetAddress dstAddr = configurationService.getTunnelEndPoint(dstBridgeNode);
+
+                        if (segId != null && netType != null && dstAddr != null) {
+                            programTunnelRules(netType, segId, dstAddr, srcBridgeNode, port, false);
+                        }
+                    }
+
+                    if (network == tenantNetworkManager.getTenantNetwork(port)){
                         programTunnelRules(networkType, segmentationId, dst, srcBridgeNode, port, false);
                     }
                     else{
@@ -1103,16 +1118,41 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
         }
     }
 
+    private boolean bridgeHasVmPort(Node bridgeNode) {
+        String intBridgeName = configurationService.getIntegrationBridgeName();
+        String extBridgeName = configurationService.getExternalBridgeName();
+        List<TerminationPoint> terminationPoints = bridgeNode.getTerminationPoint();
+        if (terminationPoints == null) return false;
+
+        for (TerminationPoint tp : terminationPoints) {
+            String tpName = tp.getTpId().getValue();
+            if (tpName != null && !tpName.equals(intBridgeName) && !tpName.equals(extBridgeName)) {
+                OvsdbTerminationPointAugmentation tpAug = tp.getAugmentation(OvsdbTerminationPointAugmentation.class);
+                if (tpAug != null && southbound.getOFPort(tpAug) != 0) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
     @Override
-    public boolean handleInterfaceUpdate(NeutronNetwork network, Node srcNode,
-                                         OvsdbTerminationPointAugmentation intf) {
+    public boolean handleInterfaceUpdate(NeutronNetwork network, Node srcNode, OvsdbTerminationPointAugmentation intf) {
+        LOG.debug("handleInterfaceUpdate: network: {} srcNode: {}, intf: {}",
+                    network.getProviderSegmentationID(), srcNode.getNodeId(), intf.getName());
         Preconditions.checkNotNull(nodeCacheManager);
+
+        org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId srcNodeId =
+                srcNode.getNodeId();
         Map<org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId,Node> nodes =
                 nodeCacheManager.getOvsdbNodes();
+
         nodes.remove(southbound.extractBridgeOvsdbNodeId(srcNode));
         String networkType = network.getProviderNetworkType();
         String segmentationId = network.getProviderSegmentationID();
         Node srcBridgeNode = southbound.getBridgeNode(srcNode, configurationService.getIntegrationBridgeName());
+
         programLocalRules(networkType, network.getProviderSegmentationID(), srcBridgeNode, intf);
 
         if (isVlan(networkType)) {
@@ -1130,7 +1170,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                     Node dstBridgeNode = southbound.getBridgeNode(dstNode,
                             configurationService.getIntegrationBridgeName());
 
-                    if(dstBridgeNode != null){
+                    if (dstBridgeNode != null){
                         destTunnelStatus = addTunnelPort(dstBridgeNode, networkType, dst, src);
                     }
 
@@ -1139,8 +1179,12 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                     }
                     if (destTunnelStatus) {
                         programTunnelRules(networkType, segmentationId, src, dstBridgeNode, intf, false);
-                        programTunnelRulesInNewNode(network, networkType, segmentationId, src, dst,
-                                                    srcBridgeNode, dstBridgeNode, intf);
+
+                        if (srcNodeId != null && intBridgesWithoutVmPorts.contains(srcNodeId)) {
+                            programTunnelRulesInNewNode(network, networkType, segmentationId, src, dst,
+                                    srcBridgeNode, dstBridgeNode, intf);
+                            intBridgesWithoutVmPorts.remove(srcNodeId);
+                        }
                     }
                 } else {
                     LOG.warn("Tunnel end-point configuration missing. Please configure it in OpenVSwitch Table. "
@@ -1151,6 +1195,10 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
             }
         }
 
+        if (srcNodeId != null && !bridgeHasVmPort(srcNode)) {
+            intBridgesWithoutVmPorts.add(srcNodeId);
+        }
+
         return true;
     }
 
@@ -1191,7 +1239,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                         MdsalHelper.createOvsdbInterfaceType(intf.getInterfaceType()),
                         src, dst);
             } catch (Exception e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("handleInterfaceDelete: failed to delete tunnel port", e);
             }
         } else if (phyIfName.contains(intf.getName())) {
             deletePhysicalPort(srcNode, intf.getName());
@@ -1213,7 +1261,7 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                         removeTunnelRules(tunnelType, network.getProviderSegmentationID(),
                                 dst, srcNode, intf, true, isLastInstanceOnNode);
                         Node dstBridgeNode = southbound.getBridgeNode(dstNode, Constants.INTEGRATION_BRIDGE);
-                        if(dstBridgeNode != null){
+                        if (dstBridgeNode != null){
                             LOG.info("Remove tunnel rules for interface "
                                     + intf.getName() + " on dstNode " + dstNode.getNodeId().getValue());
                             removeTunnelRules(tunnelType, network.getProviderSegmentationID(),
@@ -1556,10 +1604,10 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
                 return data.get();
             }
         } catch (InterruptedException|ExecutionException e) {
-            LOG.error(e.getMessage(), e);
+            LOG.error("Failed to get group {}", groupBuilder.getGroupName(), e);
         }
 
-        LOG.debug("Cannot find data for Group " + groupBuilder.getGroupName());
+        LOG.debug("Cannot find data for Group {}", groupBuilder.getGroupName());
         return null;
     }
 
@@ -1574,9 +1622,9 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
             CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
             try {
                 commitFuture.get();  // TODO: Make it async (See bug 1362)
-                LOG.debug("Transaction success for write of Group " + groupBuilder.getGroupName());
+                LOG.debug("Transaction success for write of Group {}", groupBuilder.getGroupName());
             } catch (InterruptedException|ExecutionException e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("Failed to write group {}", groupBuilder.getGroupName(), e);
             }
         }
     }
@@ -1592,9 +1640,9 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
 
             try {
                 commitFuture.get();  // TODO: Make it async (See bug 1362)
-                LOG.debug("Transaction success for deletion of Group " + groupBuilder.getGroupName());
+                LOG.debug("Transaction success for deletion of Group {}", groupBuilder.getGroupName());
             } catch (InterruptedException|ExecutionException e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("Failed to remove group {}", groupBuilder.getGroupName(), e);
             }
         }
     }
@@ -1616,9 +1664,9 @@ public class OF13Provider implements ConfigInterface, NetworkingProvider {
             CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
             try {
                 commitFuture.get();  // TODO: Make it async (See bug 1362)
-                LOG.debug("Transaction success for write of Flow " + flowBuilder.getFlowName());
+                LOG.debug("Transaction success for write of Flow {}", flowBuilder.getFlowName());
             } catch (InterruptedException|ExecutionException e) {
-                LOG.error(e.getMessage(), e);
+                LOG.error("Failed to write flows {}", flowBuilder.getFlowName(), e);
             }
         }
     }
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
 import java.util.Collections;
 import java.util.List;
@@ -16,13 +16,13 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -6,24 +6,24 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
@@ -6,19 +6,19 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.ClassifierProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.ClassifierProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
@@ -1,50 +1,41 @@
 /*
- * Copyright (c) 2014, 2015 Red Hat, Inc. and others. All rights reserved.
+ * Copyright (c) 2014 - 2016 Red Hat, 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import com.google.common.collect.Lists;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityGroupCacheManger;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
@@ -101,9 +92,9 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
              *
              */
 
-            if (portSecurityRule == null ||
-                    portSecurityRule.getSecurityRuleEthertype() == null ||
-                    portSecurityRule.getSecurityRuleDirection() == null) {
+            if (portSecurityRule == null
+                    || portSecurityRule.getSecurityRuleEthertype() == null
+                    || portSecurityRule.getSecurityRuleDirection() == null) {
                 continue;
             }
 
@@ -146,13 +137,14 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         String securityRuleEtherType = portSecurityRule.getSecurityRuleEthertype();
         boolean isIpv6 = NeutronSecurityRule.ETHERTYPE_IPV6.equals(securityRuleEtherType);
         if (!isIpv6 && !NeutronSecurityRule.ETHERTYPE_IPV4.equals(securityRuleEtherType)) {
-            LOG.debug("programPortSecurityRule: SecurityRuleEthertype {} does not match IPv4/v6.", securityRuleEtherType);
+            LOG.debug("programPortSecurityRule: SecurityRuleEthertype {} does not match IPv4/v6.",
+                      securityRuleEtherType);
             return;
         }
 
         if (null == portSecurityRule.getSecurityRuleProtocol()) {
             /* TODO Rework on the priority values */
-            egressAclIP(dpid, isIpv6, segmentationId, attachedMac,
+            egressAclIp(dpid, isIpv6, segmentationId, attachedMac,
                           write, Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
         } else {
             String ipaddress = null;
@@ -161,42 +153,43 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                 try {
                     InetAddress address = InetAddress.getByName(ipaddress);
                     if ((isIpv6 && (address instanceof Inet4Address)) || (!isIpv6 && address instanceof Inet6Address)) {
-                        LOG.debug("programPortSecurityRule: Remote vmIP {} does not match with SecurityRuleEthertype {}.", ipaddress, securityRuleEtherType);
+                        LOG.debug("programPortSecurityRule: Remote vmIP {} does not match with "
+                                + "SecurityRuleEthertype {}.", ipaddress, securityRuleEtherType);
                         return;
                     }
                 } catch (UnknownHostException e) {
-                    LOG.warn("Invalid IP address {}", ipaddress);
+                    LOG.warn("Invalid IP address {}", ipaddress, e);
                     return;
                 }
             }
 
             switch (portSecurityRule.getSecurityRuleProtocol()) {
-              case MatchUtils.TCP:
-                  LOG.debug("programPortSecurityRule: Rule matching TCP", portSecurityRule);
-                  egressAclTcp(dpid, segmentationId, attachedMac,
-                               portSecurityRule,ipaddress, write,
-                               Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
-              case MatchUtils.UDP:
-                  LOG.debug("programPortSecurityRule: Rule matching UDP", portSecurityRule);
-                  egressAclUdp(dpid, segmentationId, attachedMac,
-                               portSecurityRule, ipaddress, write,
-                               Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
-              case MatchUtils.ICMP:
-              case MatchUtils.ICMPV6:
-                  LOG.debug("programPortSecurityRule: Rule matching ICMP", portSecurityRule);
-                  egressAclIcmp(dpid, segmentationId, attachedMac,
-                                portSecurityRule, ipaddress,write,
-                                Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
-              default:
-                  LOG.info("programPortSecurityAcl: Protocol is not TCP/UDP/ICMP but other " +
-                          "protocol = ", portSecurityRule.getSecurityRuleProtocol());
-                  egressOtherProtocolAclHandler(dpid, segmentationId, attachedMac,
-                                      portSecurityRule, ipaddress, write,
-                                      Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
+                case MatchUtils.TCP:
+                    LOG.debug("programPortSecurityRule: Rule matching TCP", portSecurityRule);
+                    egressAclTcp(dpid, segmentationId, attachedMac,
+                             portSecurityRule,ipaddress, write,
+                             Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
+                    break;
+                case MatchUtils.UDP:
+                    LOG.debug("programPortSecurityRule: Rule matching UDP", portSecurityRule);
+                    egressAclUdp(dpid, segmentationId, attachedMac,
+                             portSecurityRule, ipaddress, write,
+                             Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
+                    break;
+                case MatchUtils.ICMP:
+                case MatchUtils.ICMPV6:
+                    LOG.debug("programPortSecurityRule: Rule matching ICMP", portSecurityRule);
+                    egressAclIcmp(dpid, segmentationId, attachedMac,
+                              portSecurityRule, ipaddress,write,
+                              Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
+                    break;
+                default:
+                    LOG.info("programPortSecurityAcl: Protocol is not TCP/UDP/ICMP but other "
+                            + "protocol = ", portSecurityRule.getSecurityRuleProtocol());
+                    egressOtherProtocolAclHandler(dpid, segmentationId, attachedMac,
+                                              portSecurityRule, ipaddress, write,
+                                              Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
+                    break;
             }
         }
     }
@@ -206,7 +199,7 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                                                boolean write, Integer priority) {
         MatchBuilder matchBuilder = new MatchBuilder();
         String flowId = "Egress_Other_" + segmentationId + "_" + srcMac + "_";
-        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null);
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null,MatchUtils.ETHERTYPE_IPV4);
 
         short proto = 0;
         try {
@@ -230,7 +223,9 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         }
         flowId = flowId + "_Permit";
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
-        syncFlow(flowId, nodeBuilder, matchBuilder, priority, write, false, securityServicesManager.isConntrackEnabled());
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, priority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     @Override
@@ -239,9 +234,9 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                                         boolean isLastPortinBridge, boolean isComputePort ,boolean write) {
         // If it is the only port in the bridge add the rule to allow any DHCP client traffic
         //if (isLastPortinBridge) {
-            egressAclDhcpAllowClientTrafficFromVm(dpid, write, Constants.PROTO_DHCP_CLIENT_TRAFFIC_MATCH_PRIORITY);
-            egressAclDhcpv6AllowClientTrafficFromVm(dpid, write, Constants.PROTO_DHCP_CLIENT_TRAFFIC_MATCH_PRIORITY);
-       // }
+        egressAclDhcpAllowClientTrafficFromVm(dpid, write, Constants.PROTO_DHCP_CLIENT_TRAFFIC_MATCH_PRIORITY);
+        egressAclDhcpv6AllowClientTrafficFromVm(dpid, write, Constants.PROTO_DHCP_CLIENT_TRAFFIC_MATCH_PRIORITY);
+        // }
         if (isComputePort) {
             programArpRule(dpid, segmentationId, localPort, attachedMac, write);
             if (securityServicesManager.isConntrackEnabled()) {
@@ -265,163 +260,133 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                         egressAclAllowTrafficFromVmIpV6MacPair(dpid, localPort, attachedMac, addressWithPrefix,
                                                                Constants.PROTO_VM_IP_MAC_MATCH_PRIORITY,write);
                     }
-                } catch(UnknownHostException e) {
-                    LOG.warn("Invalid IP address {}", srcAddress.getIpAddress());
+                } catch (UnknownHostException e) {
+                    LOG.warn("Invalid IP address {}", srcAddress.getIpAddress(), e);
                 }
             }
         }
     }
 
     private void programArpRule(Long dpid, String segmentationId, long localPort, String attachedMac, boolean write) {
-        String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
         MatchBuilder matchBuilder = new MatchBuilder();
-        NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
         String flowId = "Egress_ARP_" + segmentationId + "_" + localPort + "_";
+        MatchUtils.createV4EtherMatchWithType(matchBuilder,null,null,MatchUtils.ETHERTYPE_ARP);
+        MatchUtils.addArpMacMatch(matchBuilder, attachedMac, null);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, Constants.PROTO_MATCH_PRIORITY,
+                                                              matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
 
-        EthernetMatchBuilder ethernetType = new EthernetMatchBuilder();
-        EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
-        ethTypeBuilder.setType(new EtherType(0x0806L));
-        ethernetType.setEthernetType(ethTypeBuilder.build());
-        matchBuilder.setEthernetMatch(ethernetType.build());
+    private void programEgressAclFixedConntrackRule(Long dpid,
+                                             String segmentationId, long localPort, String attachMac, boolean write) {
+        try {
+            programConntrackUntrackRule(dpid, segmentationId, localPort,attachMac,
+                                        Constants.CT_STATE_UNTRACKED_PRIORITY, write );
+            programConntrackTrackedPlusEstRule(dpid, segmentationId, localPort,
+                                               Constants.CT_STATE_TRACKED_EXIST_PRIORITY, write );
+            programConntrackTrackedPlusRelRule(dpid, segmentationId, localPort,
+                                               Constants.CT_STATE_TRACKED_EXIST_PRIORITY, write );
+            programConntrackNewDropRule(dpid, segmentationId, localPort,
+                                        Constants.CT_STATE_NEW_PRIORITY_DROP, write );
+            programConntrackInvDropRule(dpid, segmentationId, localPort,
+                                        Constants.CT_STATE_NEW_PRIORITY_DROP, write );
+            LOG.info("programEgressAclFixedConntrackRule :  default connection tracking rule are added.");
+        } catch (Exception e) {
+            LOG.error("Failed to add default conntrack rules : " , e);
+        }
+    }
+
+    private void programConntrackUntrackRule(Long dpidLong, String segmentationId,
+                                             long localPort, String attachMac, Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowName = "Egress_Fixed_Conntrk_Untrk_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder, attachMac, null,MatchUtils.ETHERTYPE_IPV4);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.UNTRACKED_CT_STATE,
+                                             MatchUtils.UNTRACKED_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addInstructionWithConntrackRecirc(flowBuilder);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
 
-        ArpMatchBuilder arpDstMatch = new ArpMatchBuilder();
-        ArpSourceHardwareAddressBuilder arpSrc = new ArpSourceHardwareAddressBuilder();
-        arpSrc.setAddress(new MacAddress(attachedMac));
-        arpDstMatch.setArpSourceHardwareAddress(arpSrc.build());
-        matchBuilder.setLayer3Match(arpDstMatch.build());
+    private void programConntrackTrackedPlusEstRule(Long dpidLong, String segmentationId,
+                                                    long localPort,Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowName = "Egress_Fixed_Conntrk_TrkEst_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_EST_CT_STATE,
+                                             MatchUtils.TRACKED_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
 
-        syncFlow(flowId, nodeBuilder, matchBuilder, Constants.PROTO_MATCH_PRIORITY, write, false, false);
+    private void programConntrackTrackedPlusRelRule(Long dpidLong, String segmentationId,
+                                                    long localPort,Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowName = "Egress_Fixed_Conntrk_TrkRel_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_REL_CT_STATE,
+                                             MatchUtils.TRACKED_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
-    private void programEgressAclFixedConntrackRule(Long dpid,
-            String segmentationId, long localPort, String attachMac, boolean write) {
-         try {
-             String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
-             programConntrackUntrackRule(nodeName, segmentationId, localPort,attachMac,
-                                         Constants.CT_STATE_UNTRACKED_PRIORITY, write );
-             programConntrackTrackedPlusEstRule(nodeName, dpid, segmentationId, localPort,
-                                         Constants.CT_STATE_TRACKED_EST_PRIORITY, write );
-             programConntrackNewDropRule(nodeName, dpid, segmentationId, localPort,
-                                              Constants.CT_STATE_NEW_PRIORITY_DROP, write );
-             LOG.info("programEgressAclFixedConntrackRule :  default connection tracking rule are added.");
-         } catch (Exception e) {
-             LOG.error("Failed to add default conntrack rules : " , e);
-         }
-     }
-
-     private void programConntrackUntrackRule(String nodeName, String segmentationId,
-                                              long localPort, String attachMac, Integer priority, boolean write) {
-         MatchBuilder matchBuilder = new MatchBuilder();
-         NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
-         String flowName = "Egress_Fixed_Conntrk_Untrk_" + segmentationId + "_" + localPort + "_";
-         matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder, attachMac, null);
-         matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.UNTRACKED_CT_STATE,
-                                              MatchUtils.UNTRACKED_CT_STATE_MASK);
-         FlowBuilder flowBuilder = new FlowBuilder();
-         flowBuilder.setMatch(matchBuilder.build());
-         FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-         if (write) {
-             InstructionBuilder ib = new InstructionBuilder();
-             List<Instruction> instructionsList = Lists.newArrayList();
-             InstructionsBuilder isb = new InstructionsBuilder();
-             ActionBuilder ab = new ActionBuilder();
-             ab.setAction(ActionUtils.nxConntrackAction(0, 0L, 0, (short)0x0));
-             // 0xff means no table, 0x0 is table = 0
-             ab.setOrder(0);
-             ab.setKey(new ActionKey(0));
-             List<Action> actionList = Lists.newArrayList();
-             actionList.add(ab.build());
-             ApplyActionsBuilder aab = new ApplyActionsBuilder();
-             aab.setAction(actionList);
-             ib.setOrder(0);
-             ib.setKey(new InstructionKey(0));
-             ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
-             instructionsList.add(ib.build());
-             isb.setInstruction(instructionsList);
-             flowBuilder.setInstructions(isb.build());
-             writeFlow(flowBuilder, nodeBuilder);
-             LOG.info("EGRESS:default programConntrackUntrackRule() flows are written");
-         } else {
-             removeFlow(flowBuilder, nodeBuilder);
-         }
-     }
-
-     private void programConntrackTrackedPlusEstRule(String nodeName, Long dpid, String segmentationId,
-                                                   long localPort,Integer priority, boolean write) {
-         MatchBuilder matchBuilder = new MatchBuilder();
-         NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
-         String flowName = "Egress_Fixed_Conntrk_TrkEst_" + segmentationId + "_" + localPort + "_";
-         matchBuilder = MatchUtils.createInPortMatch(matchBuilder, dpid, localPort);
-         matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_EST_CT_STATE,
-                                              MatchUtils.TRACKED_EST_CT_STATE_MASK);
-         FlowBuilder flowBuilder = new FlowBuilder();
-         flowBuilder.setMatch(matchBuilder.build());
-         FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-         if (write) {
-             InstructionBuilder ib = new InstructionBuilder();
-             List<Instruction> instructionsList = Lists.newArrayList();
-             InstructionsBuilder isb = new InstructionsBuilder();
-             // got to next table instruction
-             ib = this.getMutablePipelineInstructionBuilder();
-             ib.setOrder(0);
-             ib.setKey(new InstructionKey(0));
-             instructionsList.add(ib.build());
-             isb.setInstruction(instructionsList);
-             flowBuilder.setInstructions(isb.build());
-             writeFlow(flowBuilder, nodeBuilder);
-             LOG.info("EGRESS:default programConntrackTrackedPlusEstRule() flows are written");
-         } else {
-             removeFlow(flowBuilder, nodeBuilder);
-         }
-     }
-
-     private void programConntrackNewDropRule(String nodeName, Long dpid, String segmentationId,
-                                              long localPort, Integer priority, boolean write) {
-         MatchBuilder matchBuilder = new MatchBuilder();
-         NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
-         String flowName = "Egress_Fixed_Conntrk_NewDrop_" + segmentationId + "_" + localPort + "_";
-         matchBuilder = MatchUtils.createInPortMatch(matchBuilder, dpid, localPort);
-         matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.NEW_CT_STATE, MatchUtils.NEW_CT_STATE_MASK);
-         FlowBuilder flowBuilder = new FlowBuilder();
-         flowBuilder.setMatch(matchBuilder.build());
-         FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-         if (write) {
-             InstructionBuilder ib = new InstructionBuilder();
-             InstructionsBuilder isb = new InstructionsBuilder();
-             List<Instruction> instructions = Lists.newArrayList();
-             InstructionUtils.createDropInstructions(ib);
-             ib.setOrder(0);
-             ib.setKey(new InstructionKey(0));
-             instructions.add(ib.build());
-             isb.setInstruction(instructions);
-             LOG.debug("Instructions contain: {}", ib.getInstruction());
-             flowBuilder.setInstructions(isb.build());
-             writeFlow(flowBuilder, nodeBuilder);
-             LOG.info("EGRESS:default programConntrackNewDropRule() flows are written");
-         } else {
-             removeFlow(flowBuilder, nodeBuilder);
-         }
-     }
+    private void programConntrackNewDropRule(Long dpidLong, String segmentationId,
+                                             long localPort, Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+
+        String flowName = "Egress_Fixed_Conntrk_NewDrop_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_NEW_CT_STATE,
+                                             MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, true);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
+
+    private void programConntrackInvDropRule(Long dpidLong, String segmentationId,
+                                             long localPort, Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowName = "Egress_Fixed_Conntrk_InvDrop_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_INV_CT_STATE,
+                                             MatchUtils.TRACKED_INV_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, true);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
 
     /**
      * Allows IPv4/v6 packet egress from the src mac address.
      * @param dpidLong the dpid
+     * @param isIpv6 whether the rule is for ipv6
      * @param segmentationId the segementation id
      * @param srcMac the src mac address
      * @param write add or remove
      * @param protoPortMatchPriority the protocol match priority.
      */
-    private void egressAclIP(Long dpidLong, boolean isIpv6, String segmentationId, String srcMac,
+    private void egressAclIp(Long dpidLong, boolean isIpv6, String segmentationId, String srcMac,
                                boolean write, Integer protoPortMatchPriority ) {
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
         MatchBuilder matchBuilder = new MatchBuilder();
         String flowId = "Egress_IP" + segmentationId + "_" + srcMac + "_Permit_";
         if (isIpv6) {
             matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,srcMac,null);
         } else {
-            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null);
+            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null,MatchUtils.ETHERTYPE_IPV4);
         }
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, false);
+        addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -446,7 +411,7 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         if (isIpv6) {
             matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,srcMac,null);
         } else {
-            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null);
+            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null,MatchUtils.ETHERTYPE_IPV4);
         }
 
         /* Custom TCP Match */
@@ -494,11 +459,19 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                 rangeflowId = rangeflowId + "_Permit";
                 MatchUtils.addLayer4MatchWithMask(matchBuilder, MatchUtils.TCP_SHORT,
                                                   0, port, portMaskMap.get(port));
-                syncFlow(rangeflowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+                addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+                FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(rangeflowId, protoPortMatchPriority,
+                                                                      matchBuilder, getTable());
+                addInstructionWithConntrackCommit(flowBuilder, false);
+                syncFlow(flowBuilder ,nodeBuilder, write);
             }
         } else {
             flowId = flowId + "_Permit";
-            syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+            addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+            FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority,
+                                                                  matchBuilder, getTable());
+            addInstructionWithConntrackCommit(flowBuilder, false);
+            syncFlow(flowBuilder ,nodeBuilder, write);
         }
     }
 
@@ -508,9 +481,11 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
 
         boolean isIpv6 = NeutronSecurityRule.ETHERTYPE_IPV6.equals(portSecurityRule.getSecurityRuleEthertype());
         if (isIpv6) {
-            egressAclIcmpV6(dpidLong, segmentationId, srcMac, portSecurityRule, dstAddress, write, protoPortMatchPriority);
+            egressAclIcmpV6(dpidLong, segmentationId, srcMac, portSecurityRule, dstAddress, write,
+                            protoPortMatchPriority);
         } else {
-            egressAclIcmpV4(dpidLong, segmentationId, srcMac, portSecurityRule, dstAddress, write, protoPortMatchPriority);
+            egressAclIcmpV4(dpidLong, segmentationId, srcMac, portSecurityRule, dstAddress, write,
+                            protoPortMatchPriority);
         }
     }
 
@@ -532,10 +507,10 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
 
         MatchBuilder matchBuilder = new MatchBuilder();
         String flowId = "Egress_ICMP_" + segmentationId + "_" + srcMac + "_";
-        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null);
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null,MatchUtils.ETHERTYPE_IPV4);
         /*Custom ICMP Match */
-        if (portSecurityRule.getSecurityRulePortMin() != null &&
-                             portSecurityRule.getSecurityRulePortMax() != null) {
+        if (portSecurityRule.getSecurityRulePortMin() != null
+                && portSecurityRule.getSecurityRulePortMax() != null) {
             flowId = flowId + portSecurityRule.getSecurityRulePortMin().shortValue() + "_"
                     + portSecurityRule.getSecurityRulePortMax().shortValue() + "_";
             matchBuilder = MatchUtils.createICMPv4Match(matchBuilder,
@@ -558,8 +533,11 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
             }
         }
         flowId = flowId + "_Permit";
+        addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -583,8 +561,8 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,srcMac,null);
 
         /*Custom ICMP Match */
-        if (portSecurityRule.getSecurityRulePortMin() != null &&
-                             portSecurityRule.getSecurityRulePortMax() != null) {
+        if (portSecurityRule.getSecurityRulePortMin() != null
+                && portSecurityRule.getSecurityRulePortMax() != null) {
             flowId = flowId + portSecurityRule.getSecurityRulePortMin().shortValue() + "_"
                     + portSecurityRule.getSecurityRulePortMax().shortValue() + "_";
             matchBuilder = MatchUtils.createICMPv6Match(matchBuilder,
@@ -605,8 +583,11 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                     new Ipv6Prefix(portSecurityRule.getSecurityRuleRemoteIpPrefix()));
         }
         flowId = flowId + "_Permit";
+        addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -631,7 +612,7 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         if (isIpv6) {
             matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,srcMac,null);
         } else {
-            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null);
+            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,srcMac,null,MatchUtils.ETHERTYPE_IPV4);
         }
 
         /* Custom UDP Match */
@@ -681,11 +662,19 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
                 rangeflowId = rangeflowId + "_Permit";
                 MatchUtils.addLayer4MatchWithMask(matchBuilder, MatchUtils.UDP_SHORT,
                                                   0, port, portMaskMap.get(port));
-                syncFlow(rangeflowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+                addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+                FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(rangeflowId, protoPortMatchPriority,
+                                                                      matchBuilder, getTable());
+                addInstructionWithConntrackCommit(flowBuilder, false);
+                syncFlow(flowBuilder ,nodeBuilder, write);
             }
         } else {
             flowId = flowId + "_Permit";
-            syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+            addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+            FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority,
+                                                                  matchBuilder, getTable());
+            addInstructionWithConntrackCommit(flowBuilder, false);
+            syncFlow(flowBuilder ,nodeBuilder, write);
         }
     }
 
@@ -702,7 +691,9 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         String flowName = "Egress_DHCP_Client"  + "_Permit_";
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createDhcpMatch(matchBuilder, DHCP_DESTINATION_PORT, DHCP_SOURCE_PORT);
-        syncFlow(flowName, nodeBuilder, matchBuilder, priority, write, false, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -718,7 +709,9 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
         String flowName = "Egress_DHCPv6_Client"  + "_Permit_";
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createDhcpv6Match(matchBuilder, DHCPV6_DESTINATION_PORT, DHCPV6_SOURCE_PORT);
-        syncFlow(flowName, nodeBuilder, matchBuilder, priority, write, false, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -731,13 +724,14 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
      */
     private void egressAclDhcpDropServerTrafficfromVm(Long dpidLong, long localPort,
                                                       boolean write, Integer priority) {
-
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
         String flowName = "Egress_DHCP_Server" + "_" + localPort + "_DROP_";
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
         MatchUtils.createDhcpMatch(matchBuilder, DHCP_SOURCE_PORT, DHCP_DESTINATION_PORT);
-        syncFlow(flowName, nodeBuilder, matchBuilder, priority, write, true, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, true);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -751,12 +745,14 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
     private void egressAclDhcpv6DropServerTrafficfromVm(Long dpidLong, long localPort,
                                                         boolean write, Integer priority) {
 
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
         String flowName = "Egress_DHCPv6_Server" + "_" + localPort + "_DROP_";
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
         MatchUtils.createDhcpv6Match(matchBuilder, DHCPV6_SOURCE_PORT, DHCPV6_DESTINATION_PORT);
-        syncFlow(flowName, nodeBuilder, matchBuilder, priority, write, true, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, true);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -772,13 +768,15 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
     private void egressAclAllowTrafficFromVmIpMacPair(Long dpidLong, long localPort,
                                                       String attachedMac, String srcIp,
                                                       Integer priority, boolean write) {
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
-        String flowName = "Egress_Allow_VM_IP_MAC" + "_" + localPort + attachedMac + "_Permit_";
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createSrcL3Ipv4MatchWithMac(matchBuilder, new Ipv4Prefix(srcIp),new MacAddress(attachedMac));
         MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
         LOG.debug("egressAclAllowTrafficFromVmIpMacPair: MatchBuilder contains: {}", matchBuilder);
-        syncFlow(flowName, nodeBuilder, matchBuilder, priority, write, false, false);
+        String flowName = "Egress_Allow_VM_IP_MAC" + "_" + localPort + attachedMac + "_Permit_";
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -794,72 +792,91 @@ public class EgressAclService extends AbstractServiceInstance implements EgressA
     private void egressAclAllowTrafficFromVmIpV6MacPair(Long dpidLong, long localPort,
                                                         String attachedMac, String srcIp,
                                                         Integer priority, boolean write) {
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
-        String flowName = "Egress_Allow_VM_IPv6_MAC" + "_" + localPort + attachedMac + "_Permit_";
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createSrcL3Ipv6MatchWithMac(matchBuilder, new Ipv6Prefix(srcIp),new MacAddress(attachedMac));
         MatchUtils.createInPortMatch(matchBuilder, dpidLong, localPort);
         LOG.debug("egressAclAllowTrafficFromVmIpMacPair: MatchBuilder contains: {}", matchBuilder);
-        syncFlow(flowName, nodeBuilder, matchBuilder, priority, write, false, false);
+        String flowName = "Egress_Allow_VM_IPv6_MAC" + "_" + localPort + attachedMac + "_Permit_";
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
+
+    private void addConntrackMatch(MatchBuilder matchBuilder, int state, int mask) {
+        if (securityServicesManager.isConntrackEnabled()) {
+            MatchUtils.addCtState(matchBuilder, state, mask );
+        }
+
+    }
+
+    private FlowBuilder addInstructionWithConntrackCommit( FlowBuilder flowBuilder , boolean isDrop) {
+        InstructionBuilder instructionBuilder = null;
+        if (securityServicesManager.isConntrackEnabled()) {
+            Action conntrackAction = ActionUtils.nxConntrackAction(1, 0L, 0, (short)0xff);
+            instructionBuilder = InstructionUtils
+                    .createInstructionBuilder(ActionUtils.conntrackActionBuilder(conntrackAction), 1, false);
+        }
+        return addPipelineInstruction(flowBuilder,instructionBuilder, isDrop);
+    }
+
+    private FlowBuilder addInstructionWithConntrackRecirc( FlowBuilder flowBuilder) {
+        InstructionBuilder instructionBuilder = null;
+        if (securityServicesManager.isConntrackEnabled()) {
+            Action conntrackAction = ActionUtils.nxConntrackAction(0, 0L, 0, (short)0x0);
+
+            instructionBuilder = InstructionUtils
+                    .createInstructionBuilder(ActionUtils.conntrackActionBuilder(conntrackAction), 1, false);
+            List<Instruction> instructionsList = Lists.newArrayList();
+            instructionsList.add(instructionBuilder.build());
+            InstructionsBuilder isb = new InstructionsBuilder();
+            isb.setInstruction(instructionsList);
+            flowBuilder.setInstructions(isb.build());
+        }
+        return flowBuilder;
+    }
+
+    private FlowBuilder addPipelineInstruction( FlowBuilder flowBuilder ,
+                                                InstructionBuilder instructionBuilder,boolean isDrop) {
+        InstructionBuilder pipeLineIndstructionBuilder = createPipleLineInstructionBuilder(isDrop);
+        List<Instruction> instructionsList = Lists.newArrayList();
+        instructionsList.add(pipeLineIndstructionBuilder.build());
+        if (null != instructionBuilder) {
+            instructionsList.add(instructionBuilder.build());
+        }
+        InstructionsBuilder isb = new InstructionsBuilder();
+        isb.setInstruction(instructionsList);
+        flowBuilder.setInstructions(isb.build());
+        return flowBuilder;
     }
 
+    private InstructionBuilder createPipleLineInstructionBuilder(boolean drop) {
+        InstructionBuilder ib = this.getMutablePipelineInstructionBuilder();
+        if (drop) {
+            InstructionUtils.createDropInstructions(ib);
+        }
+        ib.setOrder(0);
+        List<Instruction> instructionsList = Lists.newArrayList();
+        ib.setKey(new InstructionKey(0));
+        instructionsList.add(ib.build());
+        return ib;
+    }
     /**
      * Add or remove flow to the node.
-     *
-     * @param flowName the the flow id
+     * @param flowBuilder the flow builder
      * @param nodeBuilder the node builder
-     * @param matchBuilder the matchbuilder
-     * @param priority the protocol priority
      * @param write whether it is a write
-     * @param drop whether it is a drop or forward
-     * @param isCtCommit commit the connection or CT to track
      */
-    private void syncFlow(String flowName, NodeBuilder nodeBuilder,
-                          MatchBuilder matchBuilder, Integer priority,
-                          boolean write, boolean drop, boolean isCtCommit) {
-        MatchBuilder matchBuilder1 = matchBuilder;
-        if (isCtCommit) {
-            matchBuilder1 = MatchUtils.addCtState(matchBuilder1, MatchUtils.TRACKED_NEW_CT_STATE,
-                                                  MatchUtils.TRACKED_NEW_CT_STATE_MASK);
-        }
-        FlowBuilder flowBuilder = new FlowBuilder();
-        flowBuilder.setMatch(matchBuilder1.build());
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-
+    private void syncFlow(FlowBuilder flowBuilder, NodeBuilder nodeBuilder,
+                          boolean write) {
         if (write) {
-            InstructionBuilder ib = this.getMutablePipelineInstructionBuilder();
-            InstructionBuilder ib1 = new InstructionBuilder();
-            ActionBuilder ab = new ActionBuilder();
-            ApplyActionsBuilder aab = new ApplyActionsBuilder();
-            if (drop) {
-                InstructionUtils.createDropInstructions(ib);
-            }
-            ib.setOrder(0);
-            ib.setKey(new InstructionKey(0));
-            InstructionsBuilder isb = new InstructionsBuilder();
-            List<Instruction> instructionsList = Lists.newArrayList();
-            instructionsList.add(ib.build());
-            if (isCtCommit) {
-                LOG.info("Adding Conntarck rule, flowname = " + flowName);
-                ab.setAction(ActionUtils.nxConntrackAction(1, 0L, 0, (short)0xff));
-                ab.setOrder(0);
-                ab.setKey(new ActionKey(0));
-                List<Action> actionList = Lists.newArrayList();
-                actionList.add(ab.build());
-                aab.setAction(actionList);
-                ib1.setOrder(1);
-                ib1.setKey(new InstructionKey(1));
-                ib1.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
-                instructionsList.add(ib1.build());
-            }
-            isb.setInstruction(instructionsList);
-            flowBuilder.setInstructions(isb.build());
             writeFlow(flowBuilder, nodeBuilder);
         } else {
             removeFlow(flowBuilder, nodeBuilder);
         }
     }
 
+
     @Override
     public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
         super.setDependencies(bundleContext.getServiceReference(EgressAclProvider.class.getName()), this);
@@ -5,16 +5,19 @@
  * 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import com.google.common.collect.Lists;
-import org.opendaylight.ovsdb.openstack.netvirt.api.*;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.IcmpEchoProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.net.InetAddress;
@@ -14,17 +14,17 @@ import java.net.Inet6Address;
 import java.net.UnknownHostException;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
@@ -1,61 +1,45 @@
 /*
- * Copyright (c) 2014, 2015 Red Hat, Inc. and others. All rights reserved.
+ * Copyright (c) 2014 - 2016 Red Hat, 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import com.google.common.collect.Lists;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityGroupCacheManger;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefixBuilder;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.math.BigInteger;
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetAddress;
@@ -101,9 +85,9 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
              *
              */
 
-            if (portSecurityRule == null ||
-                    portSecurityRule.getSecurityRuleEthertype() == null ||
-                    portSecurityRule.getSecurityRuleDirection() == null) {
+            if (portSecurityRule == null
+                    || portSecurityRule.getSecurityRuleEthertype() == null
+                    || portSecurityRule.getSecurityRuleDirection() == null) {
                 continue;
             }
 
@@ -145,12 +129,13 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         String securityRuleEtherType = portSecurityRule.getSecurityRuleEthertype();
         boolean isIpv6 = NeutronSecurityRule.ETHERTYPE_IPV6.equals(securityRuleEtherType);
         if (!isIpv6 && !NeutronSecurityRule.ETHERTYPE_IPV4.equals(securityRuleEtherType)) {
-            LOG.debug("programPortSecurityRule: SecurityRuleEthertype {} does not match IPv4/v6.", securityRuleEtherType);
+            LOG.debug("programPortSecurityRule: SecurityRuleEthertype {} does not match IPv4/v6.",
+                      securityRuleEtherType);
             return;
         }
 
         if (null == portSecurityRule.getSecurityRuleProtocol()) {
-            ingressAclIP(dpid, isIpv6, segmentationId, attachedMac,
+            ingressAclIp(dpid, isIpv6, segmentationId, attachedMac,
                          write, Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
         } else {
             String ipaddress = null;
@@ -159,38 +144,39 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
                 try {
                     InetAddress address = InetAddress.getByName(vmIp.getIpAddress());
                     if ((isIpv6 && (address instanceof Inet4Address)) || (!isIpv6 && address instanceof Inet6Address)) {
-                        LOG.debug("programPortSecurityRule: Remote vmIP {} does not match with SecurityRuleEthertype {}.", ipaddress, securityRuleEtherType);
+                        LOG.debug("programPortSecurityRule: Remote vmIP {} does not match "
+                                + "with SecurityRuleEthertype {}.", ipaddress, securityRuleEtherType);
                         return;
                     }
-                } catch(UnknownHostException e) {
-                    LOG.warn("Invalid IP address {}", ipaddress);
+                } catch (UnknownHostException e) {
+                    LOG.warn("Invalid IP address {}", ipaddress, e);
                     return;
                 }
             }
 
             switch (portSecurityRule.getSecurityRuleProtocol()) {
-              case MatchUtils.TCP:
-                  LOG.debug("programPortSecurityRule: Rule matching TCP", portSecurityRule);
-                  ingressAclTcp(dpid, segmentationId, attachedMac, portSecurityRule, ipaddress,
+                case MatchUtils.TCP:
+                    LOG.debug("programPortSecurityRule: Rule matching TCP", portSecurityRule);
+                    ingressAclTcp(dpid, segmentationId, attachedMac, portSecurityRule, ipaddress,
                               write, Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
-              case MatchUtils.UDP:
-                  LOG.debug("programPortSecurityRule: Rule matching UDP", portSecurityRule);
-                  ingressAclUdp(dpid, segmentationId, attachedMac, portSecurityRule, ipaddress,
+                    break;
+                case MatchUtils.UDP:
+                    LOG.debug("programPortSecurityRule: Rule matching UDP", portSecurityRule);
+                    ingressAclUdp(dpid, segmentationId, attachedMac, portSecurityRule, ipaddress,
                                 write, Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
-              case MatchUtils.ICMP:
-              case MatchUtils.ICMPV6:
-                  LOG.debug("programPortSecurityRule: Rule matching ICMP", portSecurityRule);
-                  ingressAclIcmp(dpid, segmentationId, attachedMac, portSecurityRule, ipaddress,
+                    break;
+                case MatchUtils.ICMP:
+                case MatchUtils.ICMPV6:
+                    LOG.debug("programPortSecurityRule: Rule matching ICMP", portSecurityRule);
+                    ingressAclIcmp(dpid, segmentationId, attachedMac, portSecurityRule, ipaddress,
                                  write, Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
-              default:
-                  LOG.info("programPortSecurityAcl: Protocol is not TCP/UDP/ICMP but other " +
-                          "protocol = ", portSecurityRule.getSecurityRuleProtocol());
-                  ingressOtherProtocolAclHandler(dpid, segmentationId, attachedMac, portSecurityRule,
+                    break;
+                default:
+                    LOG.info("programPortSecurityAcl: Protocol is not TCP/UDP/ICMP but other "
+                            + "protocol = ", portSecurityRule.getSecurityRuleProtocol());
+                    ingressOtherProtocolAclHandler(dpid, segmentationId, attachedMac, portSecurityRule,
                               null, write, Constants.PROTO_PORT_PREFIX_MATCH_PRIORITY);
-                  break;
+                    break;
             }
         }
     }
@@ -198,31 +184,33 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
     private void ingressOtherProtocolAclHandler(Long dpidLong, String segmentationId, String dstMac,
           NeutronSecurityRule portSecurityRule, String srcAddress,
           boolean write, Integer protoPortMatchPriority) {
-
-          MatchBuilder matchBuilder = new MatchBuilder();
-          String flowId = "Ingress_Other_" + segmentationId + "_" + dstMac + "_";
-          matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac);
-          short proto = 0;
-          try {
-              Integer protocol = new Integer(portSecurityRule.getSecurityRuleProtocol());
-              proto = protocol.shortValue();
-              flowId = flowId + proto;
-          } catch (NumberFormatException e) {
-              LOG.error("Protocol vlaue conversion failure", e);
-          }
-          matchBuilder = MatchUtils.createIpProtocolMatch(matchBuilder, proto);
-          if (null != srcAddress) {
-              flowId = flowId + srcAddress;
-              matchBuilder = MatchUtils.addRemoteIpPrefix(matchBuilder,
-                                        MatchUtils.iPv4PrefixFromIPv4Address(srcAddress), null);
-          } else if (null != portSecurityRule.getSecurityRuleRemoteIpPrefix()) {
-              flowId = flowId + portSecurityRule.getSecurityRuleRemoteIpPrefix();
-              matchBuilder = MatchUtils.addRemoteIpPrefix(matchBuilder,
-                                        new Ipv4Prefix(portSecurityRule.getSecurityRuleRemoteIpPrefix()),null);
-          }
-          NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
-          flowId = flowId + "_Permit";
-          syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowId = "Ingress_Other_" + segmentationId + "_" + dstMac + "_";
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac,MatchUtils.ETHERTYPE_IPV4);
+        short proto = 0;
+        try {
+            Integer protocol = new Integer(portSecurityRule.getSecurityRuleProtocol());
+            proto = protocol.shortValue();
+            flowId = flowId + proto;
+        } catch (NumberFormatException e) {
+            LOG.error("Protocol vlaue conversion failure", e);
+        }
+        matchBuilder = MatchUtils.createIpProtocolMatch(matchBuilder, proto);
+        if (null != srcAddress) {
+            flowId = flowId + srcAddress;
+            matchBuilder = MatchUtils.addRemoteIpPrefix(matchBuilder,
+                                                        MatchUtils.iPv4PrefixFromIPv4Address(srcAddress), null);
+        } else if (null != portSecurityRule.getSecurityRuleRemoteIpPrefix()) {
+            flowId = flowId + portSecurityRule.getSecurityRuleRemoteIpPrefix();
+            matchBuilder = MatchUtils.addRemoteIpPrefix(matchBuilder,
+                                           new Ipv4Prefix(portSecurityRule.getSecurityRuleRemoteIpPrefix()),null);
+        }
+        flowId = flowId + "_Permit";
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority,
+                                                              matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     @Override
@@ -245,33 +233,30 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
     }
 
     private void programArpRule(Long dpid, String segmentationId, long localPort, String attachMac, boolean write) {
-        String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
         MatchBuilder matchBuilder = new MatchBuilder();
-        NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
         String flowId = "Ingress_ARP_" + segmentationId + "_" + localPort + "_";
-        EthernetMatchBuilder ethernetType = new EthernetMatchBuilder();
-        EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
-        ethTypeBuilder.setType(new EtherType(0x0806L));
-        ethernetType.setEthernetType(ethTypeBuilder.build());
-        matchBuilder.setEthernetMatch(ethernetType.build());
-
-        ArpMatchBuilder arpDstMatch = new ArpMatchBuilder();
-        ArpTargetHardwareAddressBuilder arpDst = new ArpTargetHardwareAddressBuilder();
-        arpDst.setAddress(new MacAddress(attachMac));
-        arpDstMatch.setArpTargetHardwareAddress(arpDst.build());
-        matchBuilder.setLayer3Match(arpDstMatch.build());
-        syncFlow(flowId, nodeBuilder, matchBuilder, Constants.PROTO_MATCH_PRIORITY, write, false, securityServicesManager.isConntrackEnabled());
+        MatchUtils.createV4EtherMatchWithType(matchBuilder,null,null,MatchUtils.ETHERTYPE_ARP);
+        MatchUtils.addArpMacMatch(matchBuilder, null, attachMac);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, Constants.PROTO_MATCH_PRIORITY,
+                                                              matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpid);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     private void programIngressAclFixedConntrackRule(Long dpid,
            String segmentationId, String attachMac, long localPort, boolean write) {
         try {
             String nodeName = Constants.OPENFLOW_NODE_PREFIX + dpid;
-            programConntrackUntrackRule(nodeName, segmentationId, localPort, attachMac,
+            programConntrackUntrackRule(dpid, segmentationId, localPort, attachMac,
                                         Constants.CT_STATE_UNTRACKED_PRIORITY, write );
-            programConntrackTrackedPlusEstRule(nodeName, segmentationId, localPort, attachMac,
-                                        Constants.CT_STATE_TRACKED_EST_PRIORITY, write );
-            programConntrackNewDropRule(nodeName, segmentationId, localPort, attachMac,
+            programConntrackTrackedPlusEstRule(dpid, segmentationId, localPort, attachMac,
+                                        Constants.CT_STATE_TRACKED_EXIST_PRIORITY, write );
+            programConntrackTrackedPlusRelRule(dpid, segmentationId, localPort, attachMac,
+                                               Constants.CT_STATE_TRACKED_EXIST_PRIORITY, write );
+            programConntrackInvDropRule(dpid, segmentationId, localPort, attachMac,
+                                        Constants.CT_STATE_NEW_PRIORITY_DROP, write );
+            programConntrackNewDropRule(dpid, segmentationId, localPort, attachMac,
                                              Constants.CT_STATE_NEW_PRIORITY_DROP, write );
             LOG.info("programIngressAclFixedConntrackRule :  default connection tracking rule are added.");
         } catch (Exception e) {
@@ -279,129 +264,95 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         }
     }
 
-    private void programConntrackUntrackRule(String nodeName, String segmentationId,
+    private void programConntrackUntrackRule(Long dpidLong, String segmentationId,
                                              long localPort, String attachMac, Integer priority, boolean write) {
         MatchBuilder matchBuilder = new MatchBuilder();
-        NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
         String flowName = "Ingress_Fixed_Conntrk_Untrk_" + segmentationId + "_" + localPort + "_";
-        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac);
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac,MatchUtils.ETHERTYPE_IPV4);
         matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.UNTRACKED_CT_STATE,
                                              MatchUtils.UNTRACKED_CT_STATE_MASK);
-        FlowBuilder flowBuilder = new FlowBuilder();
-        flowBuilder.setMatch(matchBuilder.build());
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-        if (write) {
-            InstructionBuilder ib = new InstructionBuilder();
-            List<Instruction> instructionsList = Lists.newArrayList();
-            InstructionsBuilder isb = new InstructionsBuilder();
-            ActionBuilder ab = new ActionBuilder();
-            ab.setAction(ActionUtils.nxConntrackAction(0, 0L, 0, (short)0x0));
-            // 0xff means no table, 0x0 is table = 0
-            // nxConntrackAction(Integer flags, Long zoneSrc,Integer conntrackZone, Short recircTable)
-            ab.setOrder(0);
-            ab.setKey(new ActionKey(0));
-            List<Action> actionList = Lists.newArrayList();
-            actionList.add(ab.build());
-            ApplyActionsBuilder aab = new ApplyActionsBuilder();
-            aab.setAction(actionList);
-
-            ib.setOrder(0);
-            ib.setKey(new InstructionKey(0));
-            ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
-            instructionsList.add(ib.build());
-            isb.setInstruction(instructionsList);
-            flowBuilder.setInstructions(isb.build());
-            writeFlow(flowBuilder, nodeBuilder);
-            LOG.info("INGRESS:default programConntrackUntrackRule() flows are written");
-        } else {
-            removeFlow(flowBuilder, nodeBuilder);
-        }
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addInstructionWithConntrackRecirc(flowBuilder);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
-    private void programConntrackTrackedPlusEstRule(String nodeName, String segmentationId,
+    private void programConntrackTrackedPlusEstRule(Long dpidLong, String segmentationId,
                                                   long localPort, String attachMac,Integer priority, boolean write) {
         MatchBuilder matchBuilder = new MatchBuilder();
-        NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
         String flowName = "Ingress_Fixed_Conntrk_TrkEst_" + segmentationId + "_" + localPort + "_";
-        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac);
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac,MatchUtils.ETHERTYPE_IPV4);
         matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_EST_CT_STATE,
-                                             MatchUtils.TRACKED_EST_CT_STATE_MASK);
-        FlowBuilder flowBuilder = new FlowBuilder();
-        flowBuilder.setMatch(matchBuilder.build());
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-        if (write) {
-            InstructionBuilder ib = new InstructionBuilder();
-            List<Instruction> instructionsList = Lists.newArrayList();
-            InstructionsBuilder isb = new InstructionsBuilder();
+                                             MatchUtils.TRACKED_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
 
-            ib = this.getMutablePipelineInstructionBuilder();
-            ib.setOrder(0);
-            ib.setKey(new InstructionKey(0));
-            instructionsList.add(ib.build());
-             isb.setInstruction(instructionsList);
-            flowBuilder.setInstructions(isb.build());
-            writeFlow(flowBuilder, nodeBuilder);
-            LOG.info("INGRESS:default programConntrackTrackedPlusEstRule() flows are written");
-        } else {
-            removeFlow(flowBuilder, nodeBuilder);
-        }
+    private void programConntrackTrackedPlusRelRule(Long dpidLong, String segmentationId,
+                                                    long localPort, String attachMac,Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowName = "Ingress_Fixed_Conntrk_TrkRel_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac,MatchUtils.ETHERTYPE_IPV4);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_REL_CT_STATE,
+                                             MatchUtils.TRACKED_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
-    private void programConntrackNewDropRule(String nodeName, String segmentationId,
+    private void programConntrackNewDropRule(Long dpidLong, String segmentationId,
                                              long localPort, String attachMac, Integer priority, boolean write) {
         MatchBuilder matchBuilder = new MatchBuilder();
-        NodeBuilder nodeBuilder = createNodeBuilder(nodeName);
-        String flowName = "Ingress_Fixed_Conntrk_NewDrop_" + segmentationId + "_" + localPort + "_";
-        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac);
-        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.NEW_CT_STATE, MatchUtils.NEW_CT_STATE_MASK);
-        FlowBuilder flowBuilder = new FlowBuilder();
-        flowBuilder.setMatch(matchBuilder.build());
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-        if (write) {
-            // Instantiate the Builders for the OF Actions and Instructions
-            InstructionBuilder ib = new InstructionBuilder();
-            InstructionsBuilder isb = new InstructionsBuilder();
 
-            // Instructions List Stores Individual Instructions
-            List<Instruction> instructions = Lists.newArrayList();
+        String flowName = "Ingress_Fixed_Conntrk_NewDrop_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac,0x0800L);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_NEW_CT_STATE,
+                                             MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, true);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
 
-            // Set the Output Port/Iface
-            InstructionUtils.createDropInstructions(ib);
-            ib.setOrder(0);
-            ib.setKey(new InstructionKey(0));
-            instructions.add(ib.build());
-
-            // Add InstructionBuilder to the Instruction(s)Builder List
-            isb.setInstruction(instructions);
-            LOG.debug("Instructions contain: {}", ib.getInstruction());
-            // Add InstructionsBuilder to FlowBuilder
-            flowBuilder.setInstructions(isb.build());
-            writeFlow(flowBuilder, nodeBuilder);
-            LOG.info("INGRESS:default programConntrackNewDropRule flows are written");
-        } else {
-            removeFlow(flowBuilder, nodeBuilder);
-        }
+    private void programConntrackInvDropRule(Long dpidLong, String segmentationId,
+                                             long localPort, String attachMac, Integer priority, boolean write) {
+        MatchBuilder matchBuilder = new MatchBuilder();
+        String flowName = "Ingress_Fixed_Conntrk_InvDrop_" + segmentationId + "_" + localPort + "_";
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,attachMac, MatchUtils.ETHERTYPE_IPV4);
+        matchBuilder = MatchUtils.addCtState(matchBuilder,MatchUtils.TRACKED_INV_CT_STATE,
+                                             MatchUtils.TRACKED_INV_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowName, priority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, true);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
      * Allows an IPv4/v6 packet ingress to the destination mac address.
      * @param dpidLong the dpid
+     * @param isIpv6 indicates whether this is an Ipv
      * @param segmentationId the segementation id
      * @param dstMac the destination mac address
      * @param write add or remove
      * @param protoPortMatchPriority the protocol match priority.
      */
-    private void ingressAclIP(Long dpidLong, boolean isIpv6, String segmentationId, String dstMac,
+    private void ingressAclIp(Long dpidLong, boolean isIpv6, String segmentationId, String dstMac,
                               boolean write, Integer protoPortMatchPriority ) {
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
         MatchBuilder matchBuilder = new MatchBuilder();
         String flowId = "Ingress_IP" + segmentationId + "_" + dstMac + "_Permit_";
         if (isIpv6) {
             matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,null,dstMac);
-        }else {
-            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac);
+        } else {
+            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac,MatchUtils.ETHERTYPE_IPV4);
         }
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+        addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -426,7 +377,7 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         if (isIpv6) {
             matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,null,dstMac);
         } else {
-            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac);
+            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac,MatchUtils.ETHERTYPE_IPV4);
         }
 
         /* Custom TCP Match*/
@@ -476,11 +427,19 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
                 rangeflowId = rangeflowId + "_Permit";
                 MatchUtils.addLayer4MatchWithMask(matchBuilder, MatchUtils.TCP_SHORT,
                                                   0, port, portMaskMap.get(port));
-                syncFlow(rangeflowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+                addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+                FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(rangeflowId, protoPortMatchPriority,
+                                                                      matchBuilder, getTable());
+                addInstructionWithConntrackCommit(flowBuilder, false);
+                syncFlow(flowBuilder ,nodeBuilder, write);
             }
         } else {
             flowId = flowId + "_Permit";
-            syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+            addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+            FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority,
+                                                                  matchBuilder, getTable());
+            addInstructionWithConntrackCommit(flowBuilder, false);
+            syncFlow(flowBuilder ,nodeBuilder, write);
         }
     }
 
@@ -505,8 +464,8 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         String flowId = "Ingress_UDP_" + segmentationId + "_" + dstMac + "_";
         if (isIpv6)  {
             matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,null,dstMac);
-        }else {
-            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac);
+        } else {
+            matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac,MatchUtils.ETHERTYPE_IPV4);
         }
 
         /* Custom UDP Match */
@@ -556,11 +515,19 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
                 rangeflowId = rangeflowId + "_Permit";
                 MatchUtils.addLayer4MatchWithMask(matchBuilder, MatchUtils.UDP_SHORT,
                                                    0, port, portMaskMap.get(port));
-                syncFlow(rangeflowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+                addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+                FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(rangeflowId, protoPortMatchPriority,
+                                                                      matchBuilder, getTable());
+                addInstructionWithConntrackCommit(flowBuilder, false);
+                syncFlow(flowBuilder ,nodeBuilder, write);
             }
         } else {
             flowId = flowId + "_Permit";
-            syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+            addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+            FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority,
+                                                                  matchBuilder, getTable());
+            addInstructionWithConntrackCommit(flowBuilder, false);
+            syncFlow(flowBuilder ,nodeBuilder, write);
         }
     }
 
@@ -570,9 +537,11 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
 
         boolean isIpv6 = NeutronSecurityRule.ETHERTYPE_IPV6.equals(portSecurityRule.getSecurityRuleEthertype());
         if (isIpv6) {
-            ingressAclIcmpV6(dpidLong, segmentationId, dstMac, portSecurityRule, srcAddress, write, protoPortMatchPriority);
+            ingressAclIcmpV6(dpidLong, segmentationId, dstMac, portSecurityRule, srcAddress,
+                             write, protoPortMatchPriority);
         } else {
-            ingressAclIcmpV4(dpidLong, segmentationId, dstMac, portSecurityRule, srcAddress, write, protoPortMatchPriority);
+            ingressAclIcmpV4(dpidLong, segmentationId, dstMac, portSecurityRule, srcAddress,
+                             write, protoPortMatchPriority);
         }
     }
 
@@ -594,11 +563,11 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
 
         MatchBuilder matchBuilder = new MatchBuilder();
         String flowId = "Ingress_ICMP_" + segmentationId + "_" + dstMac + "_";
-        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac);
+        matchBuilder = MatchUtils.createV4EtherMatchWithType(matchBuilder,null,dstMac,MatchUtils.ETHERTYPE_IPV4);
 
         /* Custom ICMP Match */
-        if (portSecurityRule.getSecurityRulePortMin() != null &&
-                portSecurityRule.getSecurityRulePortMax() != null) {
+        if (portSecurityRule.getSecurityRulePortMin() != null
+                && portSecurityRule.getSecurityRulePortMax() != null) {
             flowId = flowId + portSecurityRule.getSecurityRulePortMin().shortValue() + "_"
                     + portSecurityRule.getSecurityRulePortMax().shortValue() + "_";
             matchBuilder = MatchUtils.createICMPv4Match(matchBuilder,
@@ -620,9 +589,12 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
                                          new Ipv4Prefix(portSecurityRule.getSecurityRuleRemoteIpPrefix()),null);
             }
         }
-        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
         flowId = flowId + "_Permit";
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, securityServicesManager.isConntrackEnabled());
+        addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -646,8 +618,8 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         matchBuilder = MatchUtils.createV6EtherMatchWithType(matchBuilder,null,dstMac);
 
         /* Custom ICMP Match */
-        if (portSecurityRule.getSecurityRulePortMin() != null &&
-                portSecurityRule.getSecurityRulePortMax() != null) {
+        if (portSecurityRule.getSecurityRulePortMin() != null
+                && portSecurityRule.getSecurityRulePortMax() != null) {
             flowId = flowId + portSecurityRule.getSecurityRulePortMin().shortValue() + "_"
                     + portSecurityRule.getSecurityRulePortMax().shortValue() + "_";
             matchBuilder = MatchUtils.createICMPv6Match(matchBuilder,
@@ -668,9 +640,12 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
                     new Ipv6Prefix(portSecurityRule
                                    .getSecurityRuleRemoteIpPrefix()),null);
         }
+        addConntrackMatch(matchBuilder, MatchUtils.TRACKED_NEW_CT_STATE,MatchUtils.TRACKED_NEW_CT_STATE_MASK);
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dpidLong);
         flowId = flowId + "_Permit";
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addInstructionWithConntrackCommit(flowBuilder, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -689,7 +664,9 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createDhcpServerMatch(matchBuilder, dhcpMacAddress, 67, 68).build();
         String flowId = "Ingress_DHCP_Server" + segmentationId + "_" + dhcpMacAddress + "_Permit_";
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
     }
 
     /**
@@ -708,60 +685,77 @@ public class IngressAclService extends AbstractServiceInstance implements Ingres
         MatchBuilder matchBuilder = new MatchBuilder();
         MatchUtils.createDhcpv6ServerMatch(matchBuilder, dhcpMacAddress, 547, 546).build();
         String flowId = "Ingress_DHCPv6_Server" + segmentationId + "_" + dhcpMacAddress + "_Permit_";
-        syncFlow(flowId, nodeBuilder, matchBuilder, protoPortMatchPriority, write, false, false);
+        FlowBuilder flowBuilder = FlowUtils.createFlowBuilder(flowId, protoPortMatchPriority, matchBuilder, getTable());
+        addPipelineInstruction(flowBuilder, null, false);
+        syncFlow(flowBuilder ,nodeBuilder, write);
+    }
+
+    private void addConntrackMatch(MatchBuilder matchBuilder, int state, int mask) {
+        if (securityServicesManager.isConntrackEnabled()) {
+            MatchUtils.addCtState(matchBuilder, state, mask );
+        }
+
+    }
+
+    private FlowBuilder addInstructionWithConntrackCommit( FlowBuilder flowBuilder , boolean isDrop) {
+        InstructionBuilder instructionBuilder = null;
+        if (securityServicesManager.isConntrackEnabled()) {
+            Action conntrackAction = ActionUtils.nxConntrackAction(1, 0L, 0, (short)0xff);
+            instructionBuilder = InstructionUtils
+                    .createInstructionBuilder(ActionUtils.conntrackActionBuilder(conntrackAction), 1, false);
+        }
+        return addPipelineInstruction(flowBuilder,instructionBuilder, isDrop);
+    }
+
+    private FlowBuilder addInstructionWithConntrackRecirc( FlowBuilder flowBuilder) {
+        InstructionBuilder instructionBuilder = null;
+        if (securityServicesManager.isConntrackEnabled()) {
+            Action conntrackAction = ActionUtils.nxConntrackAction(0, 0L, 0, (short)0x0);
+            instructionBuilder = InstructionUtils
+                    .createInstructionBuilder(ActionUtils.conntrackActionBuilder(conntrackAction), 1, false);
+            List<Instruction> instructionsList = Lists.newArrayList();
+            instructionsList.add(instructionBuilder.build());
+            InstructionsBuilder isb = new InstructionsBuilder();
+            isb.setInstruction(instructionsList);
+            flowBuilder.setInstructions(isb.build());
+        }
+        return flowBuilder;
     }
 
+    private FlowBuilder addPipelineInstruction( FlowBuilder flowBuilder , InstructionBuilder instructionBuilder,
+                                                boolean isDrop) {
+        InstructionBuilder pipeLineIndstructionBuilder = createPipleLineInstructionBuilder(isDrop);
+        List<Instruction> instructionsList = Lists.newArrayList();
+        instructionsList.add(pipeLineIndstructionBuilder.build());
+        if (null != instructionBuilder) {
+            instructionsList.add(instructionBuilder.build());
+        }
+        InstructionsBuilder isb = new InstructionsBuilder();
+        isb.setInstruction(instructionsList);
+        flowBuilder.setInstructions(isb.build());
+        return flowBuilder;
+    }
+
+    private InstructionBuilder createPipleLineInstructionBuilder(boolean drop) {
+        InstructionBuilder ib = this.getMutablePipelineInstructionBuilder();
+        if (drop) {
+            InstructionUtils.createDropInstructions(ib);
+        }
+        ib.setOrder(0);
+        List<Instruction> instructionsList = Lists.newArrayList();
+        ib.setKey(new InstructionKey(0));
+        instructionsList.add(ib.build());
+        return ib;
+    }
     /**
      * Add or remove flow to the node.
-     *
-     * @param flowName the the flow id
+     * @param flowBuilder the flow builder
      * @param nodeBuilder the node builder
-     * @param matchBuilder the matchbuilder
-     * @param priority the protocol priority
      * @param write whether it is a write
-     * @param drop whether it is a drop or forward
-     * @param isCtCommit commit the connection or CT to track
      */
-    private void syncFlow(String flowName, NodeBuilder nodeBuilder,
-                          MatchBuilder matchBuilder, Integer priority,
-                          boolean write, boolean drop, boolean isCtCommit) {
-        MatchBuilder matchBuilder1 = matchBuilder;
-        if (isCtCommit) {
-            matchBuilder1 = MatchUtils.addCtState(matchBuilder1,MatchUtils.TRACKED_NEW_CT_STATE,
-                                                  MatchUtils.TRACKED_NEW_CT_STATE_MASK);
-        }
-        FlowBuilder flowBuilder = new FlowBuilder();
-        flowBuilder.setMatch(matchBuilder1.build());
-        FlowUtils.initFlowBuilder(flowBuilder, flowName, getTable()).setPriority(priority);
-
+    private void syncFlow(FlowBuilder flowBuilder, NodeBuilder nodeBuilder,
+                          boolean write) {
         if (write) {
-            InstructionBuilder ib = this.getMutablePipelineInstructionBuilder();
-            InstructionBuilder ib1 = new InstructionBuilder();
-            ActionBuilder ab = new ActionBuilder();
-            ApplyActionsBuilder aab = new ApplyActionsBuilder();
-            if (drop) {
-                InstructionUtils.createDropInstructions(ib);
-            }
-            ib.setOrder(0);
-            InstructionsBuilder isb = new InstructionsBuilder();
-            List<Instruction> instructionsList = Lists.newArrayList();
-            ib.setKey(new InstructionKey(0));
-            instructionsList.add(ib.build());
-            if (isCtCommit) {
-                LOG.info("Adding Conntarck rule, flowname = " + flowName);
-                ab.setAction(ActionUtils.nxConntrackAction(1, 0L, 0, (short)0xff));
-                ab.setOrder(0);
-                ab.setKey(new ActionKey(0));
-                List<Action> actionList = Lists.newArrayList();
-                actionList.add(ab.build());
-                aab.setAction(actionList);
-                ib1.setOrder(1);
-                ib1.setKey(new InstructionKey(1));
-                ib1.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
-                instructionsList.add(ib1.build());
-            }
-            isb.setInstruction(instructionsList);
-            flowBuilder.setInstructions(isb.build());
             writeFlow(flowBuilder, nodeBuilder);
         } else {
             removeFlow(flowBuilder, nodeBuilder);
@@ -6,21 +6,21 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.L2ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCase;
@@ -6,12 +6,12 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.L2RewriteProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.L2RewriteProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
@@ -6,23 +6,23 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
@@ -5,27 +5,27 @@
  * 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.util.List;
 import java.util.Map;
 
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
@@ -95,7 +95,7 @@ public class LoadBalancerService extends AbstractServiceInstance implements Load
     @Override
     public Status programLoadBalancerPoolMemberRules(Node node,
                                                      LoadBalancerConfiguration lbConfig, LoadBalancerPoolMember member,
-                                                     org.opendaylight.ovsdb.openstack.netvirt.api.Action action) {
+                                                     org.opendaylight.netvirt.openstack.netvirt.api.Action action) {
         if (lbConfig == null || member == null) {
             LOG.error("Null value for LB config {} or Member {}", lbConfig, member);
             return new Status(StatusCode.BADREQUEST);
@@ -114,7 +114,7 @@ public class LoadBalancerService extends AbstractServiceInstance implements Load
         //Update the multipath rule
         manageLoadBalancerVIPRulesFirstPass(nodeBuilder, lbConfig, true);
 
-        if (action.equals(org.opendaylight.ovsdb.openstack.netvirt.api.Action.ADD)) {
+        if (action.equals(org.opendaylight.netvirt.openstack.netvirt.api.Action.ADD)) {
             manageLoadBalancerMemberVIPRulesSecondPass(nodeBuilder, lbConfig, member, true);
             manageLoadBalancerMemberReverseRules(nodeBuilder, lbConfig, member, true);
             return new Status(StatusCode.SUCCESS);
@@ -133,7 +133,7 @@ public class LoadBalancerService extends AbstractServiceInstance implements Load
      */
     @Override
     public Status programLoadBalancerRules(Node node, LoadBalancerConfiguration lbConfig,
-                                           org.opendaylight.ovsdb.openstack.netvirt.api.Action action) {
+                                           org.opendaylight.netvirt.openstack.netvirt.api.Action action) {
         if (lbConfig == null || !lbConfig.isValid()) {
             LOG.error("LB config is invalid: {}", lbConfig);
             return new Status(StatusCode.BADREQUEST);
@@ -144,13 +144,13 @@ public class LoadBalancerService extends AbstractServiceInstance implements Load
         nodeBuilder.setId(new NodeId(Constants.OPENFLOW_NODE_PREFIX + getDpid(node)));
         nodeBuilder.setKey(new NodeKey(nodeBuilder.getId()));
 
-        if (action.equals(org.opendaylight.ovsdb.openstack.netvirt.api.Action.ADD)) {
+        if (action.equals(org.opendaylight.netvirt.openstack.netvirt.api.Action.ADD)) {
             manageLoadBalancerVIPRulesFirstPass(nodeBuilder, lbConfig, true);
             manageLoadBalancerVIPRulesSecondPass(nodeBuilder, lbConfig, true);
             manageLoadBalancerReverseRules(nodeBuilder, lbConfig, true);
             return new Status(StatusCode.SUCCESS);
         }
-        else if (action.equals(org.opendaylight.ovsdb.openstack.netvirt.api.Action.DELETE)) {
+        else if (action.equals(org.opendaylight.netvirt.openstack.netvirt.api.Action.DELETE)) {
             manageLoadBalancerVIPRulesFirstPass(nodeBuilder, lbConfig, false);
             manageLoadBalancerVIPRulesSecondPass(nodeBuilder, lbConfig, false);
             manageLoadBalancerReverseRules(nodeBuilder, lbConfig, false);
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.net.InetAddress;
@@ -14,17 +14,17 @@ import java.net.Inet6Address;
 import java.net.UnknownHostException;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.OutboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import java.math.BigInteger;
 import java.net.Inet6Address;
@@ -14,17 +14,17 @@ import java.net.InetAddress;
 import java.util.List;
 
 import org.apache.commons.net.util.SubnetUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
@@ -40,8 +40,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instru
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
 
 import com.google.common.collect.Lists;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg4;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg5;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.dst.choice.grouping.dst.choice.DstNxRegCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcOfEthSrcCaseBuilder;
 import org.osgi.framework.BundleContext;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.arp;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import io.netty.buffer.Unpooled;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services.arp;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp;
 
 import org.opendaylight.controller.liblldp.EtherTypes;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
@@ -5,10 +5,10 @@
  * 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.ovsdb.openstack.netvirt.providers.openflow13.services.arp;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp;
 
 import org.opendaylight.controller.liblldp.NetUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolverListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolverListener;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.providers.openflow13.services.arp;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services.arp;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
@@ -16,15 +16,15 @@ import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
 import org.opendaylight.openflowplugin.api.OFConstants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolver;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolverListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolverListener;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
index cd0a23c0966a9e9ba32bb5e76c4d666088eb1dd6..e5d97321f91bb1d4ac347f2bf77bcc7cc540089b 100644 (file)
@@ -1,7 +1,7 @@
 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
 import org.osgi.framework.BundleContext;
 
 public class NetvirtProvidersImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.impl.rev150513.AbstractNetvirtProvidersImplModule {
@@ -6,15 +6,12 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers;
+package org.opendaylight.netvirt.openstack.netvirt.providers;
 
 import static org.junit.Assert.assertEquals;
 
-import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestratorImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.osgi.framework.BundleContext;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 
 /**
  * Unit tests for {@link NetvirtProvidersProvider}
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -32,10 +32,10 @@ import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -34,24 +34,24 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.MdsalHelper;
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ClassifierProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.ClassifierProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L2ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.MdsalHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
@@ -22,9 +22,9 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -27,10 +27,10 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
@@ -24,8 +24,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
@@ -1,15 +1,14 @@
 /*
- * Copyright (c) 2015 Inocybe and others.  All rights reserved.
+ * Copyright (c) 2015 - 2016 Inocybe 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
@@ -32,14 +31,14 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityGroupCacheManger;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
@@ -171,7 +170,7 @@ public class EgressAclServiceTest {
 
     /**
      * Test method {@link EgressAclService#programPortSecurityGroup(java.lang.Long, java.lang.String,
-     * java.lang.String, long, org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup,
+     * java.lang.String, long, NeutronSecurityGroup,
      * java.lang.String, boolean)} when portSecurityRule is incomplete
      */
     @Test
@@ -1596,10 +1595,10 @@ public class EgressAclServiceTest {
 
         egressAclServiceSpy.programFixedSecurityGroup(Long.valueOf(1554), "2", MAC_ADDRESS, 1, neutronDestIpList, false, true, true);
 
-        verify(writeTransaction, times(12)).put(any(LogicalDatastoreType.class),
+        verify(writeTransaction, times(14)).put(any(LogicalDatastoreType.class),
                                                any(InstanceIdentifier.class), any(Node.class), eq(true));
-        verify(writeTransaction, times(12)).submit();
-        verify(commitFuture, times(12)).checkedGet();
+        verify(writeTransaction, times(14)).submit();
+        verify(commitFuture, times(14)).checkedGet();
     }
 
     /**
@@ -1611,9 +1610,9 @@ public class EgressAclServiceTest {
 
         egressAclServiceSpy.programFixedSecurityGroup(Long.valueOf(1554), "2", MAC_ADDRESS, 1, neutronDestIpList, false, true, false);
 
-        verify(writeTransaction, times(12)).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
-        verify(writeTransaction, times(12)).submit();
-        verify(commitFuture, times(12)).get();
+        verify(writeTransaction, times(14)).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
+        verify(writeTransaction, times(14)).submit();
+        verify(commitFuture, times(14)).get();
     }
 
 }
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -23,10 +23,10 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -29,12 +29,12 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.powermock.api.support.membermodification.MemberModifier;
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2015 Inocybe and others.  All rights reserved.
+ * Copyright (c) 2015 - 2016 Inocybe 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.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
@@ -31,14 +31,14 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityGroupCacheManger;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
@@ -171,7 +171,7 @@ public class IngressAclServiceTest {
     }
     /**
      * Test method {@link EgressAclService#programPortSecurityGroup(java.lang.Long, java.lang.String,
-     * java.lang.String, long, org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup,
+     * java.lang.String, long, NeutronSecurityGroup,
      * java.lang.String, boolean)} when portSecurityRule is incomplete
      */
     @Test
@@ -1622,9 +1622,9 @@ public class IngressAclServiceTest {
 
         ingressAclServiceSpy.programFixedSecurityGroup(Long.valueOf(1554), "2", DHCP_MAC_ADDRESS, 1, false, true, MAC_ADDRESS, true);
 
-        verify(writeTransaction, times(4)).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class), eq(true));
-        verify(writeTransaction, times(4)).submit();
-        verify(commitFuture, times(4)).checkedGet();
+        verify(writeTransaction, times(6)).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class), eq(true));
+        verify(writeTransaction, times(6)).submit();
+        verify(commitFuture, times(6)).checkedGet();
     }
     /**
      *  Test With isConntrackEnabled true isComputeNode true
@@ -1635,9 +1635,9 @@ public class IngressAclServiceTest {
 
         ingressAclServiceSpy.programFixedSecurityGroup(Long.valueOf(1554), "2", DHCP_MAC_ADDRESS, 1, false, true, MAC_ADDRESS, false);
 
-        verify(writeTransaction, times(4)).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
-        verify(writeTransaction, times(4)).submit();
-        verify(commitFuture, times(4)).get();
+        verify(writeTransaction, times(6)).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
+        verify(writeTransaction, times(6)).submit();
+        verify(commitFuture, times(6)).get();
     }
 
 }
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyBoolean;
@@ -28,9 +28,9 @@ import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -29,12 +29,12 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.NetvirtProvidersProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.providers.NetvirtProvidersProvider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.powermock.api.support.membermodification.MemberModifier;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -19,6 +19,7 @@ import static org.mockito.Mockito.when;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -29,15 +30,14 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
@@ -60,7 +60,7 @@ public class LoadBalancerServiceTest {
     @Mock private CheckedFuture<Void, TransactionCommitFailedException> commitFuture;
 
     @Mock private LoadBalancerConfiguration lbConfig;
-    @Mock private LoadBalancerPoolMember member;
+    @Mock private LoadBalancerConfiguration.LoadBalancerPoolMember member;
     @Mock private Node node;
 
     private static final String SEGMENTATION_ID = "2";
@@ -75,7 +75,7 @@ public class LoadBalancerServiceTest {
 
         when(orchestrator.getNextServiceInPipeline(any(Service.class))).thenReturn(Service.ARP_RESPONDER);
 
-        Map<String, LoadBalancerPoolMember> members = new HashMap<>();
+        Map<String, LoadBalancerConfiguration.LoadBalancerPoolMember> members = new HashMap<>();
         members.put("key", member);
 
         when(lbConfig.isValid()).thenReturn(true);
@@ -93,18 +93,18 @@ public class LoadBalancerServiceTest {
         MemberModifier.field(LoadBalancerService.class, "southbound").set(loadBalancerService, southbound);
     }
     /**
-     * Test method {@link LoadBalancerService#programLoadBalancerPoolMemberRules(Node, LoadBalancerConfiguration, LoadBalancerPoolMember, Action)}
+     * Test method {@link LoadBalancerService#programLoadBalancerPoolMemberRules(Node, LoadBalancerConfiguration, LoadBalancerConfiguration.LoadBalancerPoolMember, Action)}
      */
     @Test
     public void testprogramLoadBalancerPoolMemberRules() throws Exception {
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.BADREQUEST), loadBalancerService.programLoadBalancerPoolMemberRules(node, null, null, Action.ADD));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.BADREQUEST), loadBalancerService.programLoadBalancerPoolMemberRules(node, null, null, Action.ADD));
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.NOTIMPLEMENTED), loadBalancerService.programLoadBalancerPoolMemberRules(node, lbConfig, member, Action.DELETE));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.NOTIMPLEMENTED), loadBalancerService.programLoadBalancerPoolMemberRules(node, lbConfig, member, Action.DELETE));
         verify(writeTransaction, times(2)).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class), anyBoolean());
         verify(writeTransaction, times(1)).submit();
         verify(commitFuture, times(1)).get();
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), loadBalancerService.programLoadBalancerPoolMemberRules(node, lbConfig, member, Action.ADD));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), loadBalancerService.programLoadBalancerPoolMemberRules(node, lbConfig, member, Action.ADD));
         verify(writeTransaction, times(8)).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class), anyBoolean());
         verify(writeTransaction, times(4)).submit();
         verify(commitFuture, times(4)).get();
@@ -115,16 +115,16 @@ public class LoadBalancerServiceTest {
      */
     @Test
     public void testProgramLoadBalancerRules() throws Exception {
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.BADREQUEST), loadBalancerService.programLoadBalancerRules(node, null, Action.ADD));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.BADREQUEST), loadBalancerService.programLoadBalancerRules(node, null, Action.ADD));
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.NOTIMPLEMENTED), loadBalancerService.programLoadBalancerRules(node, lbConfig, Action.UPDATE));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.NOTIMPLEMENTED), loadBalancerService.programLoadBalancerRules(node, lbConfig, Action.UPDATE));
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), loadBalancerService.programLoadBalancerRules(node, lbConfig, Action.ADD));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), loadBalancerService.programLoadBalancerRules(node, lbConfig, Action.ADD));
         verify(writeTransaction, times(6)).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class), anyBoolean());
         verify(writeTransaction, times(3)).submit();
         verify(commitFuture, times(3)).get();
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), loadBalancerService.programLoadBalancerRules(node, lbConfig, Action.DELETE));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), loadBalancerService.programLoadBalancerRules(node, lbConfig, Action.DELETE));
         verify(writeTransaction, times(3)).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
         verify(writeTransaction, times(6)).submit();
         verify(commitFuture, times(6)).get(); // 3 + 3 before
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -18,6 +18,7 @@ import static org.mockito.Mockito.when;
 
 import java.net.InetAddress;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -28,11 +29,11 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
@@ -76,7 +77,7 @@ public class OutboundNatServiceTest {
         InetAddress address = mock(InetAddress.class);
         when(address.getHostAddress()).thenReturn(HOST_ADDRESS);
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS),
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS),
                 outboundNatService.programIpRewriteRule(Long.valueOf(123), SEGMENTATION_ID, MAC_ADDRESS, address,
                                                         MAC_ADDRESS, MAC_ADDRESS, address,
                                                         Long.valueOf(10), Action.ADD));
@@ -84,7 +85,7 @@ public class OutboundNatServiceTest {
         verify(writeTransaction, times(1)).submit();
         verify(commitFuture, times(1)).get();
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS),
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS),
                 outboundNatService.programIpRewriteRule(Long.valueOf(123), SEGMENTATION_ID, MAC_ADDRESS, address,
                                                         MAC_ADDRESS, MAC_ADDRESS, address,
                                                         Long.valueOf(10), Action.DELETE));
@@ -98,12 +99,12 @@ public class OutboundNatServiceTest {
      */
     @Test
     public void testProgramIpRewriteExclusion() throws Exception {
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), outboundNatService.programIpRewriteExclusion(Long.valueOf(123), SEGMENTATION_ID, HOST_ADDRESS_PREFIX, Action.ADD));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), outboundNatService.programIpRewriteExclusion(Long.valueOf(123), SEGMENTATION_ID, HOST_ADDRESS_PREFIX, Action.ADD));
         verify(writeTransaction, times(2)).put(any(LogicalDatastoreType.class), any(InstanceIdentifier.class), any(Node.class), anyBoolean());
         verify(writeTransaction, times(1)).submit();
         verify(commitFuture, times(1)).get();
 
-        assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), outboundNatService.programIpRewriteExclusion(Long.valueOf(123), SEGMENTATION_ID, HOST_ADDRESS_PREFIX, Action.DELETE));
+        Assert.assertEquals("Error, did not return the expected StatusCode", new Status(StatusCode.SUCCESS), outboundNatService.programIpRewriteExclusion(Long.valueOf(123), SEGMENTATION_ID, HOST_ADDRESS_PREFIX, Action.DELETE));
         verify(writeTransaction, times(1)).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
         verify(writeTransaction, times(2)).submit();
         verify(commitFuture, times(2)).get(); // 1 + 1 above
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.services;
+package org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.services;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -28,11 +28,11 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
index cde1c6e7c793c4192234120645b9c7ad2e35e5b2..251387664d2b067acc195d7d070f7301a4dcee41 100644 (file)
@@ -17,7 +17,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-sfc-api</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
@@ -58,6 +58,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
               org.opendaylight.yang.gen.v1.*,
               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.acl.rev150105,
               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105,
+              org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.Classifiers,
               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev150105,
             </Export-Package>
           </instructions>
diff --git a/openstack/net-virt-sfc/api/src/main/yang/ietf-acl.yang b/openstack/net-virt-sfc/api/src/main/yang/ietf-acl.yang
deleted file mode 100644 (file)
index 3549cb4..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-module ietf-acl {
-  yang-version 1;
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-acl";
-
-  prefix acl;
-
-  import ietf-yang-types {
-      prefix "ietf";
-  }
-
-  import packet-fields {
-      prefix "packet-fields";
-  }
-
-  organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-    "WG Web: http://tools.ietf.org/wg/netmod/
-    WG List: netmod@ietf.org
-
-    WG Chair: Juergen Schoenwaelder
-    j.schoenwaelder@jacobs-university.de
-
-    WG Chair: Tom Nadeau
-    tnadeau@lucidvision.com
-
-    Editor: Dean Bogdanovic
-    deanb@juniper.net
-
-    Editor: Kiran Agrahara Sreenivasa
-    kkoushik@brocade.com
-
-    Editor: Lisa Huang
-    yihuan@cisco.com
-
-    Editor: Dana Blair
-    dblair@cisco.com";
-
-  description
-    "This YANG module defines a component that describing the
-    configuration of Access Control Lists (ACLs).";
-
-  revision 2014-10-10 {
-    description "Creating base model for netmod.";
-    reference
-      "RFC 6020: YANG - A Data Modeling Language for the
-      Network Configuration Protocol (NETCONF)";
-  }
-
-  identity acl-base {
-    description "Base acl type for all ACL type identifiers.";
-  }
-
-  identity ip-acl {
-    base "acl:acl-base";
-    description "layer 3 ACL type";
-  }
- identity eth-acl {
-    base "acl:acl-base";
-    description "layer 2 ACL type";
-  }
-
-  typedef acl-type {
-    type identityref {
-      base "acl-base";
-    }
-    description
-      "This type is used to refer to an Access Control List
-      (ACL) type";
-  }
-
-  typedef acl-ref {
-    type leafref {
-      path "/acl:access-lists/acl:access-list/acl:acl-name";
-    }
-    description "This type is used by data models that
-    need to referenced an acl";
-  }
-
-  container access-lists {
-    description
-      "Access control lists.";
-
-    list access-list {
-      key acl-name;
-      description "
-        An access list (acl) is an ordered list of
-        access list entries (ace). Each ace has a
-        sequence number to define the order, list
-        of match criteria, and a list of actions.
-        Since there are several kinds of acls
-        implementeded with different attributes for
-        each and different for each vendor, this
-        model accomodates customizing acls for
-        each kind and for each vendor.
-        ";
-
-      leaf acl-name {
-        type string;
-        description "The name of access-list.
-        A device MAY restrict the length and value of
-        this name, possibly space and special
-        characters are not allowed.";
-      }
-
-      leaf acl-type {
-        type acl-type;
-        description "Type of ACL";
-      }
-
-      container acl-oper-data {
-        config false;
-
-        description "Overall ACL operational data";
-        leaf match-counter {
-          type ietf:counter64;
-          description "Total match count for ACL";
-        }
-
-        leaf-list targets {
-          type string;
-          description "List of targets where ACL is applied";
-        }
-      }
-
-      container access-list-entries {
-        description "The access-list-entries container contains
-          a list of access-list-entry(ACE).";
-
-          list access-list-entry {
-            key rule-name;
-            ordered-by user;
-
-            description "List of access list entries(ACE)";
-            leaf rule-name {
-              type string;
-              description "Entry name.";
-            }
-
-            container matches {
-              description "Define match criteria";
-              choice ace-type {
-                description "Type of ace.";
-                case ace-ip {
-                  uses packet-fields:acl-ip-header-fields;
-                  choice ace-ip-version {
-                    description "Choice of IP version.";
-                    case ace-ipv4 {
-                      uses packet-fields:acl-ipv4-header-fields;
-                    }
-                    case ace-ipv6 {
-                      uses packet-fields:acl-ipv6-header-fields;
-                    }
-                  }
-                }
-                case ace-eth {
-                  uses packet-fields:acl-eth-header-fields;
-                }
-              }
-              uses packet-fields:metadata;
-          }
-
-          container actions {
-            description "Define action criteria";
-            choice packet-handling {
-              default deny;
-
-              description "Packet handling action.";
-              case deny {
-                leaf deny {
-                  type empty;
-                  description "Deny action.";
-                }
-              }
-              case permit {
-                leaf permit {
-                  type empty;
-                  description "Permit action.";
-                }
-              }
-            }
-          }
-
-          container ace-oper-data {
-            config false;
-
-            description "Per ace operational data";
-            leaf match-counter {
-              type ietf:counter64;
-              description "Number of matches for an ace";
-            }
-          }
-        }
-      }
-    }
-  }
-}
diff --git a/openstack/net-virt-sfc/api/src/main/yang/packet-fields.yang b/openstack/net-virt-sfc/api/src/main/yang/packet-fields.yang
deleted file mode 100644 (file)
index bea6777..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-module packet-fields {
-    yang-version 1;
-
-    namespace "urn:ietf:params:xml:ns:yang:packet-fields";
-
-    prefix packet-fields;
-
-    import ietf-inet-types {
-        prefix "inet";
-    }
-
-    import ietf-yang-types {
-        prefix "yang";
-    }
-
-    revision 2014-06-25 {
-        description "Initial version of packet fields used by access-lists";
-    }
-
-    grouping acl-transport-header-fields {
-        description "Transport header fields";
-
-        container source-port-range {
-             description "inclusive range of source ports";
-             leaf lower-port {
-                 mandatory true;
-                 type inet:port-number;
-             }
-             leaf upper-port {
-                 type inet:port-number;
-             }
-        }
-
-        container destination-port-range {
-             description "inclusive range of destination ports";
-             leaf lower-port {
-                 mandatory true;
-                 type inet:port-number;
-             }
-             leaf upper-port {
-                 type inet:port-number;
-             }
-        }
-    }
-
-    grouping acl-ip-header-fields {
-        description "Header fields common to ipv4 and ipv6";
-
-        uses acl-transport-header-fields;
-
-        leaf dscp {
-            type inet:dscp;
-        }
-
-        leaf ip-protocol {
-            type uint8;
-        }
-
-    }
-
-    grouping acl-ipv4-header-fields {
-        description "fields in IPv4 header";
-
-        leaf destination-ipv4-address {
-            type inet:ipv4-prefix;
-        }
-
-        leaf source-ipv4-address {
-            type inet:ipv4-prefix;
-        }
-
-    }
-
-    grouping acl-ipv6-header-fields {
-        description "fields in IPv6 header";
-
-        leaf destination-ipv6-address {
-            type inet:ipv6-prefix;
-        }
-
-        leaf source-ipv6-address {
-            type inet:ipv6-prefix;
-        }
-
-        leaf flow-label {
-            type inet:ipv6-flow-label;
-        }
-
-    }
-
-    grouping acl-eth-header-fields {
-        description "fields in ethernet header";
-
-        leaf destination-mac-address {
-            type yang:mac-address;
-        }
-
-        leaf destination-mac-address-mask {
-            type yang:mac-address;
-        }
-
-        leaf source-mac-address {
-            type yang:mac-address;
-        }
-
-        leaf source-mac-address-mask {
-            type yang:mac-address;
-        }
-    }
-
-    grouping timerange {
-        description "Define time range entries to restrict
-            the access. The time range is identified by a name
-            and then referenced by a function, so that those
-            time restrictions are imposed on the function itself.";
-
-        container absolute {
-            description
-                "Absolute time and date that
-                the associated function starts
-                going into effect.";
-
-            leaf start {
-                type yang:date-and-time;
-                description
-                "Start time and date";
-            }
-            leaf end {
-                type yang:date-and-time;
-                description "Absolute end time and date";
-            }
-            leaf active {
-                type boolean;
-                default "true";
-                description
-                    "Specify the associated function
-                    active or inactive state when
-                    starts going into effect";
-            }
-        } // container absolute
-    } //grouping timerange
-
-    grouping metadata {
-        description "Fields associated with a packet but not in the header";
-
-        leaf input-interface {
-             description "Packet was received on this interface";
-             type string;
-        }
-        uses timerange;
-    }
-}
index a9ac1e40af987a77f83e5b3d3da2d5187b341b12..12f4c4ddf3723a2b3f55093c4a5563ac5e174be0 100644 (file)
@@ -19,7 +19,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-sfc-artifacts</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
index bb3fb99d07bca340ebbebd40187461572718d968..ae12e52358abfe84c4b27ba407ff5a82be79578b 100644 (file)
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 Copyright Â© 2015 Red Hat, 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 INTERNAL
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>odlparent-lite</artifactId>
+    <artifactId>features-parent</artifactId>
     <version>1.7.0-SNAPSHOT</version>
     <relativePath/>
   </parent>
-
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>openstack.net-virt-sfc-features-aggregator</artifactId>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>openstack.net-virt-sfc-features</artifactId>
   <version>1.3.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
+  <name>${project.artifactId}</name>
   <modelVersion>4.0.0</modelVersion>
   <prerequisites>
     <maven>3.1.1</maven>
   </prerequisites>
-  <modules>
-    <module>production</module>
-    <module>test</module>
-  </modules>
-  <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-install-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
-  </scm>
+  <properties>
+    <configfile.directory>etc/opendaylight/karaf</configfile.directory>
+    <controller.mdsal.version>1.4.0-SNAPSHOT</controller.mdsal.version>
+    <dlux.version>0.4.0-SNAPSHOT</dlux.version>
+    <mdsal.model.version>0.9.0-SNAPSHOT</mdsal.model.version>
+    <openflowplugin.version>0.3.0-SNAPSHOT</openflowplugin.version>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
+    <restconf.version>1.4.0-SNAPSHOT</restconf.version>
+    <sfc.version>0.3.0-SNAPSHOT</sfc.version>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.opendaylight.dlux</groupId>
+      <artifactId>features-dlux</artifactId>
+      <classifier>features</classifier>
+      <version>${dlux.version}</version>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>features-mdsal</artifactId>
+      <version>${controller.mdsal.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.mdsal.model</groupId>
+      <artifactId>features-mdsal-model</artifactId>
+      <version>${mdsal.model.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.netconf</groupId>
+      <artifactId>features-restconf</artifactId>
+      <version>${restconf.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.openflowplugin</groupId>
+      <artifactId>features-openflowplugin</artifactId>
+      <version>${openflowplugin.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>features-netvirt</artifactId>
+      <version>${project.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>southbound-features</artifactId>
+      <version>${ovsdb.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.openflowplugin</groupId>
+      <artifactId>features-openflowplugin-extension</artifactId>
+      <version>${openflowplugin.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.sfc</groupId>
+      <artifactId>features-sfc</artifactId>
+      <version>${sfc.version}</version>
+      <classifier>features</classifier>
+      <type>xml</type>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-sfc-impl</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-sfc-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.mdsal-utils</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.servicehelper</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-sfc-impl</artifactId>
+      <version>${project.version}</version>
+      <type>xml</type>
+      <classifier>config</classifier>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.it-utils</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>utils.mdsal-utils</artifactId>
+      <version>${ovsdb.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>utils.southbound-utils</artifactId>
+      <version>${ovsdb.version}</version>
+    </dependency>
+  </dependencies>
 </project>
diff --git a/openstack/net-virt-sfc/features/production/pom.xml b/openstack/net-virt-sfc/features/production/pom.xml
deleted file mode 100644 (file)
index 5067bdb..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright Â© 2015 Red Hat, 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 INTERNAL
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>features-parent</artifactId>
-    <version>1.7.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>openstack.net-virt-sfc-features</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
-  <name>${project.artifactId}</name>
-  <modelVersion>4.0.0</modelVersion>
-  <prerequisites>
-    <maven>3.1.1</maven>
-  </prerequisites>
-  <properties>
-    <configfile.directory>etc/opendaylight/karaf</configfile.directory>
-    <dlux.version>0.4.0-SNAPSHOT</dlux.version>
-    <mdsal.model.version>0.9.0-SNAPSHOT</mdsal.model.version>
-    <controller.mdsal.version>1.4.0-SNAPSHOT</controller.mdsal.version>
-    <openflowplugin.version>0.3.0-SNAPSHOT</openflowplugin.version>
-    <restconf.version>1.4.0-SNAPSHOT</restconf.version>
-    <sfc.version>0.3.0-SNAPSHOT</sfc.version>
-    <yangtools.version>1.0.0-SNAPSHOT</yangtools.version>
-  </properties>
-  <dependencyManagement>
-    <dependencies>
-      <!-- project specific dependencies -->
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>mdsal-artifacts</artifactId>
-        <version>${controller.mdsal.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.netconf</groupId>
-        <artifactId>restconf-artifacts</artifactId>
-        <version>${restconf.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.ovsdb</groupId>
-        <artifactId>ovsdb-artifacts</artifactId>
-        <version>${project.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <dependencies>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>features-yangtools</artifactId>
-      <classifier>features</classifier>
-      <version>${yangtools.version}</version>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>features-mdsal-model</artifactId>
-      <version>${mdsal.model.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>features-mdsal</artifactId>
-      <classifier>features</classifier>
-      <version>${controller.mdsal.version}</version>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.netconf</groupId>
-      <artifactId>features-restconf</artifactId>
-      <classifier>features</classifier>
-      <version>${restconf.version}</version>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>features-dlux</artifactId>
-      <classifier>features</classifier>
-      <version>${dlux.version}</version>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.ovsdb</groupId>
-      <artifactId>features-ovsdb</artifactId>
-      <classifier>features</classifier>
-      <version>${project.version}</version>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.openflowplugin</groupId>
-      <artifactId>features-openflowplugin</artifactId>
-      <version>${openflowplugin.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.openflowplugin</groupId>
-      <artifactId>features-openflowplugin-extension</artifactId>
-      <version>${openflowplugin.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.sfc</groupId>
-      <artifactId>features-sfc</artifactId>
-      <version>${sfc.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-impl</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-impl</artifactId>
-      <version>${project.version}</version>
-      <type>xml</type>
-      <classifier>config</classifier>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>southbound-features</artifactId>
-      <version>${project.version}</version>
-      <type>xml</type>
-      <classifier>features</classifier>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>utils.mdsal-utils</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.ovsdb</groupId>
-      <artifactId>utils.servicehelper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/openstack/net-virt-sfc/features/production/src/main/features/features.xml b/openstack/net-virt-sfc/features/production/src/main/features/features.xml
deleted file mode 100644 (file)
index 6088093..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright Â© 2015 Red Hat, 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
--->
-<features name="odl-ovsdb-sfc-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-  <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.dlux/features-dlux/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.netconf/features-restconf/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin-extension/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.ovsdb/features-ovsdb/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.ovsdb/southbound-features/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.sfc/features-sfc/{{VERSION}}/xml/features</repository>
-  <repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
-  <feature name='odl-ovsdb-sfc-api' version='${project.version}' description='OpenDaylight :: ovsdb-sfc :: api'>
-    <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-api/{{VERSION}}</bundle>
-  </feature>
-  <feature name='odl-ovsdb-sfc' version='${project.version}' description='OpenDaylight :: ovsdb-sfc'>
-    <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
-    <feature version="${openflowplugin.version}">odl-openflowplugin-nsf-model</feature>
-    <feature version="${openflowplugin.version}">odl-openflowplugin-flow-services</feature>
-    <feature version='${openflowplugin.version}'>odl-openflowplugin-nxm-extensions</feature>
-    <feature version='${project.version}'>odl-ovsdb-southbound-impl</feature>
-    <feature version='${project.version}'>odl-ovsdb-openstack</feature>
-    <feature version='${sfc.version}'>odl-sfc-provider</feature>
-    <feature version='${sfc.version}'>odl-sfcofl2</feature>
-    <feature version='${project.version}'>odl-ovsdb-sfc-api</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.servicehelper/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-impl/{{VERSION}}</bundle>
-    <configfile finalname="${configfile.directory}/openstack.net-virt-sfc.xml">mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-impl/{{VERSION}}/xml/config</configfile>
-  </feature>
-  <feature name='odl-ovsdb-sfc-rest' version='${project.version}' description='OpenDaylight :: ovsdb-sfc :: REST'>
-    <feature version="${project.version}">odl-ovsdb-sfc</feature>
-    <feature version="${restconf.version}">odl-restconf</feature>
-  </feature>
-  <feature name='odl-ovsdb-sfc-ui' version='${project.version}' description='OpenDaylight :: ovsdb-sfc :: UI'>
-    <feature version="${project.version}">odl-ovsdb-sfc-rest</feature>
-    <feature version="${restconf.version}">odl-mdsal-apidocs</feature>
-    <feature version="${controller.mdsal.version}">odl-mdsal-xsql</feature>
-    <feature version="${dlux.version}">odl-dlux-yangui</feature>
-  </feature>
-
-</features>
index e64873cc05b76769a9ffb4ce944e38caa56308ac..86e10456701337a3d501f704bb7c40bc9ba55de3 100644 (file)
@@ -10,20 +10,33 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
 <features name="odl-ovsdb-sfc-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-  <repository>mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features</repository>
-  <repository>mvn:org.opendaylight.controller/features-mdsal/${controller.mdsal.version}/xml/features</repository>
-  <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/${mdsal.model.version}/xml/features</repository>
-  <repository>mvn:org.opendaylight.netconf/features-restconf/${restconf.version}/xml/features</repository>
-  <repository>mvn:org.opendaylight.dlux/features-dlux/${dlux.version}/xml/features</repository>
+  <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.dlux/features-dlux/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.netconf/features-restconf/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.netvirt/features-netvirt/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin-extension/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.ovsdb/southbound-features/{{VERSION}}/xml/features</repository>
+  <repository>mvn:org.opendaylight.sfc/features-sfc/{{VERSION}}/xml/features</repository>
   <feature name='odl-ovsdb-sfc-api' version='${project.version}' description='OpenDaylight :: ovsdb-sfc :: api'>
     <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-api/${project.version}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt-sfc-api/{{VERSION}}</bundle>
   </feature>
   <feature name='odl-ovsdb-sfc' version='${project.version}' description='OpenDaylight :: ovsdb-sfc'>
     <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
+    <feature version="${openflowplugin.version}">odl-openflowplugin-flow-services</feature>
+    <feature version='${openflowplugin.version}'>odl-openflowplugin-nxm-extensions</feature>
+    <feature version='${ovsdb.version}'>odl-ovsdb-southbound-impl</feature>
+    <feature version='${project.version}'>odl-ovsdb-openstack</feature>
+    <feature version='${sfc.version}'>odl-sfcofl2</feature>
     <feature version='${project.version}'>odl-ovsdb-sfc-api</feature>
-    <bundle>mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-impl/${project.version}</bundle>
-    <configfile finalname="${configfile.directory}/openstack.net-virt-sfc.xml">mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-impl/${project.version}/xml/config</configfile>
+    <bundle>mvn:org.opendaylight.netvirt/utils.servicehelper/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.mdsal-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt-sfc-impl/{{VERSION}}</bundle>
+    <configfile finalname="${configfile.directory}/openstack.net-virt-sfc.xml">mvn:org.opendaylight.netvirt/openstack.net-virt-sfc-impl/{{VERSION}}/xml/config</configfile>
   </feature>
   <feature name='odl-ovsdb-sfc-rest' version='${project.version}' description='OpenDaylight :: ovsdb-sfc :: REST'>
     <feature version="${project.version}">odl-ovsdb-sfc</feature>
@@ -35,5 +48,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <feature version="${controller.mdsal.version}">odl-mdsal-xsql</feature>
     <feature version="${dlux.version}">odl-dlux-yangui</feature>
   </feature>
-
+  <feature name='odl-ovsdb-sfc-test' version='${project.version}' description='OpenDaylight :: ovsdb-sfc-test'>
+    <bundle>mvn:org.opendaylight.netvirt/utils.it-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.netvirt/utils.mdsal-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
+    <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
+    <feature version='${project.version}'>odl-ovsdb-sfc-ui</feature>
+  </feature>
 </features>
diff --git a/openstack/net-virt-sfc/features/test/pom.xml b/openstack/net-virt-sfc/features/test/pom.xml
deleted file mode 100644 (file)
index 9584ac1..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright Â© 2015 Red Hat, 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 INTERNAL
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>features-parent</artifactId>
-    <version>1.7.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>openstack.net-virt-sfc-features-test</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
-  <name>${project.artifactId}</name>
-  <modelVersion>4.0.0</modelVersion>
-  <prerequisites>
-    <maven>3.1.1</maven>
-  </prerequisites>
-  <dependencies>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-features</artifactId>
-      <version>${project.version}</version>
-      <type>xml</type>
-      <classifier>features</classifier>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>utils.mdsal-utils</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>utils.southbound-utils</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/openstack/net-virt-sfc/features/test/src/main/features/features.xml b/openstack/net-virt-sfc/features/test/src/main/features/features.xml
deleted file mode 100644 (file)
index 11c298e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright Â© 2015 Red Hat, 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
--->
-<features name="odl-ovsdb-sfc-test${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-  <repository>mvn:org.opendaylight.ovsdb/openstack.net-virt-sfc-features/1.3.0-SNAPSHOT/xml/features</repository>
-  <feature name='odl-ovsdb-sfc-test' version='${project.version}' description='OpenDaylight :: ovsdb-sfc-test'>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.mdsal-utils/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.ovsdb/utils.southbound-utils/{{VERSION}}</bundle>
-    <feature version='${project.version}'>odl-ovsdb-sfc-ui</feature>
-  </feature>
-</features>
index 718375495fc4e06a92bbb2858aac6bb7c47aa72b..ba187412d8e7643047df964dd1a8bf6e41baeae9 100644 (file)
@@ -19,24 +19,19 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-sfc-impl</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
 
   <properties>
     <openflowplugin.version>0.3.0-SNAPSHOT</openflowplugin.version>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
     <sfc.version>0.3.0-SNAPSHOT</sfc.version>
     <sonar.jacoco.itReportPath>../it/target/jacoco-it.exec</sonar.jacoco.itReportPath>
   </properties>
 
   <dependencies>
-    <!-- project specific dependencies -->
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>openstack.net-virt</artifactId>
@@ -48,14 +43,14 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>southbound-api</artifactId>
-      <version>${project.version}</version>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>southbound-impl</artifactId>
-      <version>${project.version}</version>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -72,7 +67,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>utils.servicehelper</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <!-- openflowplugin dependencies -->
     <dependency>
       <groupId>org.opendaylight.openflowplugin</groupId>
       <artifactId>openflowplugin-extension-nicira</artifactId>
@@ -93,7 +87,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>model-flow-service</artifactId>
       <version>${openflowplugin.version}</version>
     </dependency>
-    <!-- mdsal dependencies -->
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>ietf-topology</artifactId>
@@ -102,7 +95,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>iana-if-type-2014-05-08</artifactId>
     </dependency>
-    <!-- sfc dependencies -->
     <dependency>
       <groupId>org.opendaylight.sfc</groupId>
       <artifactId>sfc-model</artifactId>
@@ -113,7 +105,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>sfc-provider</artifactId>
       <version>${sfc.version}</version>
     </dependency>
-    <!-- external dependencies -->
     <dependency>
       <groupId>org.codehaus.sonar-plugins.java</groupId>
       <artifactId>sonar-jacoco-listeners</artifactId>
@@ -125,7 +116,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
-    <!-- testing dependencies -->
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
@@ -137,6 +127,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <version>1.10.19</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-sfc-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <build>
@@ -150,8 +145,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
             <Embed-Dependency>utils.mdsal-openflow;type=!pom;inline=false</Embed-Dependency>
             <Embed-Transitive>true</Embed-Transitive>
             <Export-Package>
-              org.opendaylight.ovsdb.openstack.netvirt.sfc,
-              org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services
+              org.opendaylight.netvirt.openstack.netvirt.sfc,
+              org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services
             </Export-Package>
           </instructions>
         </configuration>
index a794e579218c8e05d2352cad7e5c369af812b445..0726eb685a3c682010682b248e7327c3d6ecf5ec 100644 (file)
@@ -8,7 +8,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
 -->
 <snapshot>
   <required-capabilities>
-    <capability>urn:opendaylight:params:xml:ns:yang:netvirt:sfc?module=netvirt-sfc&amp;revision=2014-12-10</capability>
+    <capability>urn:opendaylight:params:xml:ns:yang:netvirt:sfc:impl?module=netvirt-sfc-impl&amp;revision=2014-12-10</capability>
     <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
     <capability>urn:opendaylight:params:xml:ns:yang:southbound:impl?module=southbound-impl&amp;revision=2014-12-10</capability>
     <capability>urn:opendaylight:params:xml:ns:yang:netvirt:impl?module=netvirt-impl&amp;revision=2015-05-13</capability>
@@ -19,9 +19,10 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
       <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
         <module>
-          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:netvirt:sfc">prefix:netvirt-sfc</type>
-          <name>netvirt-sfc-default</name>
+          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:netvirt:sfc:impl">prefix:netvirt-sfc-impl</type>
+          <name>netvirt-sfc-impl</name>
           <of13provider>workaround</of13provider>
+          <addsfflows>false</addsfflows>
           <broker>
             <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
             <name>binding-osgi-broker</name>
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/DelegatingDataTreeListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/DelegatingDataTreeListener.java
new file mode 100644 (file)
index 0000000..4afd0c8
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2013, 2016 Dell, 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.netvirt.openstack.netvirt.sfc;
+
+import java.util.Collection;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.annotation.Nonnull;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Data-tree listener which delegates data processing to a {@link INetvirtSfcDataProcessor}.
+ */
+public class DelegatingDataTreeListener<T extends DataObject> implements AutoCloseable, DataTreeChangeListener<T> {
+    private static final Logger LOG = LoggerFactory.getLogger(DelegatingDataTreeListener.class);
+    protected INetvirtSfcOF13Provider provider;
+    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
+    private final INetvirtSfcDataProcessor<T> dataProcessor;
+    private ListenerRegistration<DelegatingDataTreeListener<T>> listenerRegistration;
+
+    public DelegatingDataTreeListener(INetvirtSfcOF13Provider provider, INetvirtSfcDataProcessor<T> dataProcessor,
+                                      DataBroker db, DataTreeIdentifier<T> treeId) {
+        this.provider = Preconditions.checkNotNull(provider, "provider can not be null!");
+        this.dataProcessor = Preconditions.checkNotNull(dataProcessor, "Data processor can not be null!");
+        registerListener(Preconditions.checkNotNull(db, "Data broker can not be null!"),
+                Preconditions.checkNotNull(treeId, "Tree identifier can not be null!"));
+    }
+
+    private void registerListener(final DataBroker db, DataTreeIdentifier<T> treeId) {
+        try {
+            LOG.info("Registering Data Change Listener for {}", getClass().getSimpleName());
+            listenerRegistration = db.registerDataTreeChangeListener(treeId, this);
+        } catch (final Exception e) {
+            LOG.warn("{} DataChange listener registration fail!", getClass().getSimpleName(), e);
+            throw new IllegalStateException("DataTreeListener startup fail! System needs restart.", e);
+        }
+    }
+
+    private void processChanges(Collection<DataTreeModification<T>> changes) {
+        LOG.info("onDataTreeChanged: Received Data Tree Changed ...", changes);
+        for (DataTreeModification<T> change : changes) {
+            final InstanceIdentifier<T> key = change.getRootPath().getRootIdentifier();
+            final DataObjectModification<T> mod = change.getRootNode();
+            LOG.info("onDataTreeChanged: Received Data Tree Changed Update of Type={} for Key={}",
+                    mod.getModificationType(), key);
+            switch (mod.getModificationType()) {
+                case DELETE:
+                    dataProcessor.remove(key, mod.getDataBefore());
+                    break;
+                case SUBTREE_MODIFIED:
+                    dataProcessor.update(key, mod.getDataBefore(), mod.getDataAfter());
+                    break;
+                case WRITE:
+                    if (mod.getDataBefore() == null) {
+                        dataProcessor.add(key, mod.getDataAfter());
+                    } else {
+                        dataProcessor.update(key, mod.getDataBefore(), mod.getDataAfter());
+                    }
+                    break;
+                default:
+                    throw new IllegalArgumentException("Unhandled modification type " + mod.getModificationType());
+            }
+        }
+    }
+
+    @Override
+    public void onDataTreeChanged(@Nonnull final Collection<DataTreeModification<T>> changes) {
+        Preconditions.checkNotNull(changes, "Changes may not be null!");
+        executorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                processChanges(changes);
+            }
+        });
+    }
+
+    @Override
+    public void close() {
+        if (listenerRegistration != null) {
+            listenerRegistration.close();
+            listenerRegistration = null;
+        }
+    }
+}
@@ -1,14 +1,13 @@
 /*
- * Copyright (c) 2013, 2015 Dell, Inc. and others. All rights reserved.
+ * Copyright (c) 2013, 2016 Dell, 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.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
-import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
@@ -16,7 +15,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
  * netvirt-sfc-dcl processor
  * org.opendaylight.ovsdb.openstack.netvirt.sfc
  */
-public interface INetvirtSfcDataProcessor<D extends DataObject> extends AutoCloseable, DataTreeChangeListener<D> {
+public interface INetvirtSfcDataProcessor<D extends DataObject> {
 
     /**
      * Method removes DataObject which is identified by InstanceIdentifier.
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
@@ -6,12 +6,10 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
-import java.net.InetAddress;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.Matches;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 
 public interface ISfcClassifierService {
     void programIngressClassifier(long dataPathId, String ruleName, Matches matches, long nsp, short nsi,
@@ -28,10 +26,10 @@ public interface ISfcClassifierService {
     void programEgressClassifierBypass(long dataPathId, long vxGpeOfPort, long nsp, short nsi,
                                        long sfOfPort, int tunnelId, String rspName, boolean write);
 
-    void program_sfEgress(long dataPathId, int dstPort, boolean write);
+    void program_sfEgress(long dataPathId, int dstPort, String rspName, boolean write);
 
     void program_sfIngress(long dataPathId, int dstPort, long sfOfPort,
-                           String ipAddress, String sfDplName, boolean write);
+                           String ipAddress, String sfDplName, String rspName, boolean write);
 
     void programStaticArpEntry(long dataPathId, long ofPort, String macAddressStr,
                                String ipAddress, String rspName, boolean write);
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.Matches;
 
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcAclDataProcessor.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcAclDataProcessor.java
new file mode 100644 (file)
index 0000000..27b08f0
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright Â© 2015, 2016 Dell, 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.netvirt.openstack.netvirt.sfc;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Data processor for AccessList.
+ */
+public class NetvirtSfcAclDataProcessor implements INetvirtSfcDataProcessor<Acl> {
+    private final INetvirtSfcOF13Provider provider;
+
+    /**
+     * {@link NetvirtSfcAclDataProcessor} constructor.
+     * @param provider OpenFlow 1.3 Provider
+     */
+    public NetvirtSfcAclDataProcessor(final INetvirtSfcOF13Provider provider) {
+        this.provider = Preconditions.checkNotNull(provider, "Provider can not be null!");
+    }
+
+    @Override
+    public void remove(final InstanceIdentifier<Acl> identifier,
+                       final Acl change) {
+        Preconditions.checkNotNull(change, "Removed object can not be null!");
+        provider.removeClassifierRules(change);
+    }
+
+    @Override
+    public void update(final InstanceIdentifier<Acl> identifier,
+                       final Acl original, final Acl change) {
+        Preconditions.checkNotNull(original, "Updated original object can not be null!");
+        Preconditions.checkNotNull(original, "Updated update object can not be null!");
+        remove(identifier, original);
+        provider.addClassifierRules(change);
+    }
+
+    @Override
+    public void add(final InstanceIdentifier<Acl> identifier,
+                    final Acl change) {
+        Preconditions.checkNotNull(change, "Added object can not be null!");
+        provider.addClassifierRules(change);
+    }
+}
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcAclListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcAclListener.java
new file mode 100644 (file)
index 0000000..fe2d2c6
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright Â© 2015, 2016 Dell, 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.netvirt.openstack.netvirt.sfc;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Data tree listener for AccessList.
+ */
+public class NetvirtSfcAclListener extends DelegatingDataTreeListener<Acl> {
+    /**
+     * {@link NetvirtSfcAclListener} constructor.
+     * @param provider OpenFlow 1.3 Provider
+     * @param db MdSal {@link DataBroker}
+     */
+    public NetvirtSfcAclListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
+        super(provider, new NetvirtSfcAclDataProcessor(provider), db,
+                new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION,
+                        InstanceIdentifier.create(AccessLists.class).child(Acl.class)));
+    }
+}
@@ -1,73 +1,43 @@
 /*
- * Copyright Â© 2015 Dell, Inc. and others.  All rights reserved.
+ * Copyright Â© 2015, 2016 Dell, 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.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
 import com.google.common.base.Preconditions;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.AclKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.Classifiers;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers.Classifier;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers.classifier.sffs.Sff;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers
+        .Classifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Data tree listener for Classifier.
- *
- * @author Arun Yerra
+ * Data processor for Classifier.
  */
-public class NetvirtSfcClassifierListener extends AbstractDataTreeListener<Classifier> {
-    private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcClassifierListener.class);
-    private MdsalUtils mdsalUtils;
-    private ListenerRegistration<NetvirtSfcClassifierListener> listenerRegistration;
+public class NetvirtSfcClassifierDataProcessor implements INetvirtSfcDataProcessor<Classifier> {
+    private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcClassifierDataProcessor.class);
+    private final MdsalUtils mdsalUtils;
+    private final INetvirtSfcOF13Provider provider;
 
     /**
-     * {@link NetvirtSfcClassifierListener} constructor.
+     * {@link NetvirtSfcClassifierDataProcessor} constructor.
      * @param provider OpenFlow 1.3 Provider
      * @param db MdSal {@link DataBroker}
      */
-    public NetvirtSfcClassifierListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
-        super(provider, Classifier.class);
+    public NetvirtSfcClassifierDataProcessor(final INetvirtSfcOF13Provider provider, final DataBroker db) {
+        this.provider = Preconditions.checkNotNull(provider, "Provider can not be null!");
         Preconditions.checkNotNull(db, "DataBroker can not be null!");
         mdsalUtils = new MdsalUtils(db);
-        registrationListener(db);
-    }
-
-    private void registrationListener(final DataBroker db) {
-        final DataTreeIdentifier<Classifier> treeId =
-                new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, getClassifierIid());
-        try {
-            LOG.info("Registering Data Change Listener for NetvirtSfc Classifier configuration.");
-            listenerRegistration = db.registerDataTreeChangeListener(treeId, this);
-        } catch (final Exception e) {
-            LOG.warn("Netvirt Classifier DataChange listener registration fail!");
-            throw new IllegalStateException("NetvirtSfcClassifierListener startup fail! System needs restart.", e);
-        }
-    }
-
-    @Override
-    public void close() {
-        if (listenerRegistration != null) {
-            try {
-                listenerRegistration.close();
-            } catch (final Exception e) {
-                LOG.warn("Error to stop Netvirt Classifier DataChange listener: {}", e.getMessage());
-            }
-            listenerRegistration = null;
-        }
     }
 
     @Override
@@ -107,10 +77,6 @@ public class NetvirtSfcClassifierListener extends AbstractDataTreeListener<Class
         provider.addClassifierRules(acl);
     }
 
-    public InstanceIdentifier<Classifier> getClassifierIid() {
-        return InstanceIdentifier.create(Classifiers.class).child(Classifier.class);
-    }
-
     private InstanceIdentifier<Acl> getIetfAclIid(String aclName) {
         return InstanceIdentifier.create(AccessLists.class).child(Acl.class, new AclKey(aclName));
     }
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcClassifierListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcClassifierListener.java
new file mode 100644 (file)
index 0000000..21d0ea6
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright Â© 2015, 2016 Dell, 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.netvirt.openstack.netvirt.sfc;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.Classifiers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.classifier.rev150105.classifiers.Classifier;
+
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Data tree listener for Classifier.
+ *
+ * @author Arun Yerra
+ */
+public class NetvirtSfcClassifierListener extends DelegatingDataTreeListener<Classifier> {
+    /**
+     * {@link NetvirtSfcClassifierListener} constructor.
+     * @param provider OpenFlow 1.3 Provider
+     * @param db MdSal {@link DataBroker}
+     */
+    public NetvirtSfcClassifierListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
+        super(provider, new NetvirtSfcClassifierDataProcessor(provider, db), db,
+                new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION,
+                        InstanceIdentifier.create(Classifiers.class).child(Classifier.class)));
+    }
+}
similarity index 74%
rename from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NetvirtSfcProvider.java
rename to openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NetvirtSfcProvider.java
index 973596671d5aa61901624504ddeec98613a51b29..f9bc99eb0e77a289dc9b46dee2b51b4c2fa51b9c 100644 (file)
@@ -1,26 +1,26 @@
 /*
- * Copyright Â© 2015 Dell, Inc. and others.  All rights reserved.
+ * Copyright Â© 2015, 2016 Dell, 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.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.OF13Provider;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.NetvirtSfcStandaloneOF13Provider;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.services.SfcClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.NetvirtSfcWorkaroundOF13Provider;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.OF13Provider;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13.NetvirtSfcStandaloneOF13Provider;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13.services.SfcClassifierService;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.NetvirtSfcWorkaroundOF13Provider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
@@ -28,9 +28,10 @@ import org.slf4j.LoggerFactory;
 
 public class NetvirtSfcProvider implements BindingAwareProvider, AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcProvider.class);
-    private NetvirtSfcAclListener aclListener;
-    private NetvirtSfcClassifierListener classifierListener;
-    private RspListener rspListener;
+    private AutoCloseable aclListener;
+    private AutoCloseable classifierListener;
+    private AutoCloseable rspListener;
+    private Boolean addSfFlows;
 
     public void setOf13Provider(String of13Provider) {
         LOG.info("of13Provider is: {}", of13Provider);
@@ -64,7 +65,7 @@ public class NetvirtSfcProvider implements BindingAwareProvider, AutoCloseable {
         if (of13Provider.equals("standalone")) {
             provider = new NetvirtSfcStandaloneOF13Provider(dataBroker);
         } else {
-            provider = new NetvirtSfcWorkaroundOF13Provider(dataBroker, mdsalUtils, sfcUtils);
+            provider = new NetvirtSfcWorkaroundOF13Provider(dataBroker, mdsalUtils, sfcUtils, addSfFlows);
         }
         aclListener = new NetvirtSfcAclListener(provider, dataBroker);
         classifierListener = new NetvirtSfcClassifierListener(provider, dataBroker);
@@ -85,13 +86,13 @@ public class NetvirtSfcProvider implements BindingAwareProvider, AutoCloseable {
     private void addToPipeline(INetvirtSfcOF13Provider provider) {
         if (provider instanceof NetvirtSfcStandaloneOF13Provider) {
             SfcClassifierService sfcClassifierService =
-                    new org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.services.SfcClassifierService();
+                    new SfcClassifierService();
             registerService(bundleContext, ISfcClassifierService.class.getName(),
                     sfcClassifierService, Service.SFC_CLASSIFIER);
             sfcClassifierService.setDependencies(bundleContext, null);
         } else {
-            org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services.SfcClassifierService sfcClassifierService =
-                    new org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services.SfcClassifierService();
+            org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services.SfcClassifierService sfcClassifierService =
+                    new org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services.SfcClassifierService();
             registerService(bundleContext, ISfcClassifierService.class.getName(),
                     sfcClassifierService, Service.SFC_CLASSIFIER);
             sfcClassifierService.setDependencies(bundleContext, null);
@@ -115,4 +116,9 @@ public class NetvirtSfcProvider implements BindingAwareProvider, AutoCloseable {
                 new String[] {AbstractServiceInstance.class.getName(),interfaceClassName},
                 properties, impl);
     }
+
+    public void setAddSfFlows(Boolean addSfFlows) {
+        LOG.info("setAddSfFlows: addSfFlows is {}", addSfFlows);
+        this.addSfFlows = addSfFlows;
+    }
 }
similarity index 98%
rename from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NshUtils.java
rename to openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/NshUtils.java
index f28f030741577ab1add58386c7460e6ee951c332..47e60cda5ff8c702e5a1c1bf10417485ae1240e0 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
 import com.google.common.net.InetAddresses;
 
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/RspDataProcessor.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/RspDataProcessor.java
new file mode 100644 (file)
index 0000000..0315e72
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright Â© 2015, 2016 Red Hat, 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.netvirt.openstack.netvirt.sfc;
+
+import com.google.common.base.Preconditions;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Data processor for {@link RenderedServicePath}
+ */
+public class RspDataProcessor implements INetvirtSfcDataProcessor<RenderedServicePath> {
+    private final INetvirtSfcOF13Provider provider;
+
+    public RspDataProcessor(final INetvirtSfcOF13Provider provider) {
+        this.provider = Preconditions.checkNotNull(provider, "Provider can not be null!");
+    }
+
+    @Override
+    public void remove(final InstanceIdentifier<RenderedServicePath> identifier, final RenderedServicePath change) {
+        Preconditions.checkNotNull(change, "Removed object can not be null!");
+        provider.removeRsp(change);
+    }
+
+    @Override
+    public void update(final InstanceIdentifier<RenderedServicePath> identifier, final RenderedServicePath original,
+                       RenderedServicePath change) {
+        Preconditions.checkNotNull(original, "Updated original object can not be null!");
+        Preconditions.checkNotNull(original, "Updated update object can not be null!");
+        remove(identifier, original);
+        provider.addRsp(change);
+    }
+
+    @Override
+    public void add(final InstanceIdentifier<RenderedServicePath> identifier, final RenderedServicePath change) {
+        Preconditions.checkNotNull(change, "Created object can not be null!");
+        provider.addRsp(change);
+    }
+}
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/RspListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/RspListener.java
new file mode 100644 (file)
index 0000000..7ad0fae
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright Â© 2015, 2016 Red Hat, 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.netvirt.openstack.netvirt.sfc;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.RenderedServicePaths;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+
+/**
+ * Data tree listener for {@link RenderedServicePath}
+ */
+public class RspListener extends DelegatingDataTreeListener<RenderedServicePath> {
+    public RspListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
+        super(provider, new RspDataProcessor(provider), db, new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(RenderedServicePaths.class).child(RenderedServicePath.class)));
+    }
+}
similarity index 88%
rename from openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/SfcUtils.java
rename to openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/netvirt/openstack/netvirt/sfc/SfcUtils.java
index 642a7574d33121d9eca1e63129725369a8cd5655..857f49b3cc06c50b46b52c108243185d8412e097 100644 (file)
@@ -6,19 +6,18 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc;
+package org.opendaylight.netvirt.openstack.netvirt.sfc;
 
 import java.util.List;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.sfc.provider.api.SfcProviderAclAPI;
-import org.opendaylight.sfc.provider.api.SfcProviderRenderedPathAPI;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.sfc.provider.api.SfcProviderServiceForwarderAPI;
 import org.opendaylight.sfc.provider.api.SfcProviderServiceFunctionAPI;
 import org.opendaylight.sfc.provider.api.SfcProviderServicePathAPI;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.RspName;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfName;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.RenderedServicePaths;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.path.first.hop.info.RenderedServicePathFirstHop;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePathKey;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.rendered.service.path.RenderedServicePathHop;
@@ -110,6 +109,7 @@ public class SfcUtils {
     }
 
     // TODO: optimize this by adding a ACL to RSP mapping in the netvirt-classifier when the ACL is processed
+    @SuppressWarnings("unchecked")
     public Ace getAce(String rspName, String sfpName, String sfcName) {
         Ace aceFound = null;
         AccessLists accessLists = readAccessLists();
@@ -124,8 +124,8 @@ public class SfcUtils {
                             RedirectToSfc sfcRedirect = ace.getActions().getAugmentation(RedirectToSfc.class);
                             if (sfcRedirect != null) {
                                 if ((sfcRedirect.getRspName() != null && sfcRedirect.getRspName().equals(rspName)) ||
-                                    (sfcRedirect.getSfcName() != null && sfcRedirect.getSfcName().equals(sfcName)) ||
-                                    (sfcRedirect.getSfpName() != null && sfcRedirect.getSfpName().equals(sfpName))) {
+                                        (sfcRedirect.getSfcName() != null && sfcRedirect.getSfcName().equals(sfcName)) ||
+                                        (sfcRedirect.getSfpName() != null && sfcRedirect.getSfpName().equals(sfpName))) {
                                     aceFound = ace;
                                     break;
                                 }
@@ -196,12 +196,22 @@ public class SfcUtils {
     }
 
     public Ip getSffIp(ServiceFunctionForwarder serviceFunctionForwarder) {
-        if (serviceFunctionForwarder == null) {
-            LOG.info("getSfIp: ServicefunctionForwarder is null");
+        if (serviceFunctionForwarder != null &&
+                serviceFunctionForwarder.getSffDataPlaneLocator() != null &&
+                serviceFunctionForwarder.getSffDataPlaneLocator().get(0) != null &&
+                serviceFunctionForwarder.getSffDataPlaneLocator().get(0).getDataPlaneLocator() != null) {
+            return (Ip)serviceFunctionForwarder.getSffDataPlaneLocator().get(0)
+                    .getDataPlaneLocator().getLocatorType();
+        } else {
+            LOG.info("getSffIp: ServiceFunctionForwarder is null");
             return null;
         }
+    }
 
-        return (Ip)serviceFunctionForwarder.getSffDataPlaneLocator().get(0).getDataPlaneLocator().getLocatorType();
+    public Ip getSffIp(SffName sffName) {
+        ServiceFunctionForwarder serviceFunctionForwarder =
+                SfcProviderServiceForwarderAPI.readServiceFunctionForwarder(sffName);
+        return getSffIp(serviceFunctionForwarder);
     }
 
     public RenderedServicePathHop getFirstHop(RenderedServicePath rsp) {
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13;
 
 import com.google.common.base.Preconditions;
 
@@ -16,13 +16,13 @@ import java.util.StringTokenizer;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.INetvirtSfcOF13Provider;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.ISfcClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NshUtils;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NshUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.INetvirtSfcOF13Provider;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.ISfcClassifierService;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.sfc.provider.api.SfcProviderRenderedPathAPI;
 import org.opendaylight.sfc.provider.api.SfcProviderServicePathAPI;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.RspName;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13;
 
 import com.google.common.collect.Lists;
 import java.math.BigInteger;
@@ -14,13 +14,13 @@ import java.util.ArrayList;
 import java.util.List;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NshUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NshUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.Matches;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceEth;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIp;
@@ -29,9 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase;
@@ -6,16 +6,15 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.services;
-
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.ISfcClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.ISfcStandaloneClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NshUtils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13.services;
+
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.ISfcStandaloneClassifierService;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NshUtils;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.ISfcClassifierService;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.Matches;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
@@ -6,22 +6,21 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.workaround;
 
 import com.google.common.base.Preconditions;
 import java.util.List;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.INetvirtSfcOF13Provider;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.ISfcClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NshUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.SfcUtils;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbTables;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.INetvirtSfcOF13Provider;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.ISfcClassifierService;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NshUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.SfcUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.sfc.provider.api.SfcProviderRenderedPathAPI;
 import org.opendaylight.sfc.provider.api.SfcProviderServiceForwarderAPI;
 import org.opendaylight.sfc.provider.api.SfcProviderServiceFunctionAPI;
@@ -63,8 +62,10 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider
     private DataBroker dataBroker;
     private static final String VXGPE = "vxgpe";
     public static final String TUNNEL_ENDPOINT_KEY = "local_ip";
+    private Boolean addSfFlows;
 
-    public NetvirtSfcWorkaroundOF13Provider(final DataBroker dataBroker, MdsalUtils mdsalUtils, SfcUtils sfcUtils) {
+    public NetvirtSfcWorkaroundOF13Provider(final DataBroker dataBroker, MdsalUtils mdsalUtils,
+                                            SfcUtils sfcUtils, Boolean addSfFlows) {
         Preconditions.checkNotNull(dataBroker, "Input dataBroker cannot be NULL!");
         Preconditions.checkNotNull(mdsalUtils, "Input mdsalUtils cannot be NULL!");
         Preconditions.checkNotNull(sfcUtils, "Input sfcUtils cannot be NULL!");
@@ -72,6 +73,7 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider
         this.dataBroker = dataBroker;
         this.mdsalUtils = mdsalUtils;
         this.sfcUtils = sfcUtils;
+        this.addSfFlows = addSfFlows;
     }
 
     public void setSfcClassifierService(ISfcClassifierService sfcClassifierService) {
@@ -243,22 +245,27 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider
             NshUtils nshHeader = new NshUtils();
             nshHeader.setNshNsp(rsp.getPathId());
             nshHeader.setNshNsi(firstHop.getServiceIndex());
+            Ip sffIp = sfcUtils.getSffIp(lastHop.getServiceFunctionForwarder());
+            nshHeader.setNshMetaC1(NshUtils.convertIpAddressToLong(sffIp.getIp().getIpv4Address()));
             if (isSffOnBridge(bridgeNode, serviceFunctionForwarder)) {
                 LOG.info("handleSff: sff and bridge are the same: {} - {}, skipping first sff",
                         bridgeNode.getNodeId().getValue(), serviceFunctionForwarder.getName().getValue());
                 Ip ip = sfcUtils.getSfIp(serviceFunction);
                 nshHeader.setNshTunIpDst(ip.getIp().getIpv4Address());
                 nshHeader.setNshTunUdpPort(ip.getPort());
+                sfcClassifierService.programIngressClassifier(dataPathId, ruleName, matches,
+                        rsp.getPathId(), rsp.getStartingIndex(),
+                        nshHeader, 0, rsp.getName().getValue(), true);
             } else {
                 LOG.info("handleSff: sff and bridge are not the same: {} - {}, sending to first sff",
                         bridgeNode.getNodeId().getValue(), serviceFunctionForwarder.getName().getValue());
                 Ip ip = sfcUtils.getSffIp(serviceFunctionForwarder);
                 nshHeader.setNshTunIpDst(ip.getIp().getIpv4Address());
                 nshHeader.setNshTunUdpPort(ip.getPort());
+                sfcClassifierService.programIngressClassifier(dataPathId, ruleName, matches,
+                        rsp.getPathId(), rsp.getStartingIndex(),
+                        nshHeader, vxGpeOfPort, rsp.getName().getValue(), true);
             }
-            sfcClassifierService.programIngressClassifier(dataPathId, ruleName, matches,
-                    rsp.getPathId(), rsp.getStartingIndex(),
-                    nshHeader, vxGpeOfPort, rsp.getName().getValue(), true);
         } else if (hop == lastHop) {
             LOG.info("handleSff: last hop processing {} - {}",
                     bridgeNode.getNodeId().getValue(), serviceFunctionForwarder.getName().getValue());
@@ -296,8 +303,11 @@ public class NetvirtSfcWorkaroundOF13Provider implements INetvirtSfcOF13Provider
             }
             //should be sffdplport, but they should all be the same 6633/4790
             // TODO: Coexistence: SFC flows should take this using new sf dpl augmentation
-            //sfcClassifierService.program_sfEgress(dataPathId, sfIpPort, true);
-            //sfcClassifierService.program_sfIngress(dataPathId, sfIpPort, sfOfPort, sfIpAddr, sfDplName, true);
+            if (addSfFlows == true) {
+                sfcClassifierService.program_sfEgress(dataPathId, sfIpPort, rsp.getName().getValue(), true);
+                sfcClassifierService.program_sfIngress(dataPathId, sfIpPort, sfOfPort, sfIpAddr, sfDplName,
+                        rsp.getName().getValue(), true);
+            }
             sfcClassifierService.programStaticArpEntry(dataPathId, 0L, sfMac, sfIpAddr,
                     rsp.getName().getValue(), true);
         } else {
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services;
 
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.Matches;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceEth;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIp;
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services;
 
 import java.util.HashMap;
 import java.util.Map;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services;
 
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.CheckedFuture;
@@ -18,20 +18,17 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.ISfcClassifierService;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NshUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.InstructionUtils;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NshUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.providers.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.ISfcClassifierService;
+import org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.InstructionUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.Matches;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceEth;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIp;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.ace.ip.ace.ip.version.AceIpv4;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
@@ -149,10 +146,17 @@ public class SfcClassifierService extends AbstractServiceInstance implements Con
 
             getNshAction(nshHeader, actionList);
 
-            ab.setAction(ActionUtils.outputAction(FlowUtils.getNodeConnectorId(dataPathId, vxGpeOfPort)));
-            ab.setOrder(actionList.size());
-            ab.setKey(new ActionKey(actionList.size()));
-            actionList.add(ab.build());
+            if (vxGpeOfPort != 0) {
+                ab.setAction(ActionUtils.outputAction(FlowUtils.getNodeConnectorId(dataPathId, vxGpeOfPort)));
+                ab.setOrder(actionList.size());
+                ab.setKey(new ActionKey(actionList.size()));
+                actionList.add(ab.build());
+            } else {
+                ab.setAction(ActionUtils.nxResubmitAction(null, Service.CLASSIFIER.getTable()));
+                ab.setOrder(actionList.size());
+                ab.setKey(new ActionKey(actionList.size()));
+                actionList.add(ab.build());
+            }
 
             ApplyActionsBuilder aab = new ApplyActionsBuilder();
             aab.setAction(actionList);
@@ -328,7 +332,7 @@ public class SfcClassifierService extends AbstractServiceInstance implements Con
 
     // packet from sf to sff that need to go out local
     @Override
-    public void program_sfEgress(long dataPathId, int dstPort, boolean write) {
+    public void program_sfEgress(long dataPathId, int dstPort, String rspName, boolean write) {
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dataPathId);
         FlowBuilder flowBuilder = new FlowBuilder();
         String flowName = FlowNames.getSfEgress(dstPort);
@@ -352,16 +356,16 @@ public class SfcClassifierService extends AbstractServiceInstance implements Con
 
             isb.setInstruction(instructions);
             flowBuilder.setInstructions(isb.build());
-            writeFlow(flowBuilder, nodeBuilder);
+            writeFlow(flowBuilder, nodeBuilder, rspName, FlowID.FLOW_SFEGRESS);
         } else {
-            removeFlow(flowBuilder, nodeBuilder);
+            removeFlow(flowBuilder, nodeBuilder, rspName, FlowID.FLOW_SFEGRESS);
         }
     }
 
     // looped back sff to sf packets
     @Override
     public void program_sfIngress(long dataPathId, int dstPort, long sfOfPort,
-                                  String ipAddress, String sfDplName, boolean write) {
+                                  String ipAddress, String sfDplName, String rspName, boolean write) {
         NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(dataPathId);
         FlowBuilder flowBuilder = new FlowBuilder();
         String flowName = FlowNames.getSfIngress(dstPort, ipAddress);
@@ -386,9 +390,9 @@ public class SfcClassifierService extends AbstractServiceInstance implements Con
 
             isb.setInstruction(instructions);
             flowBuilder.setInstructions(isb.build());
-            writeFlow(flowBuilder, nodeBuilder);
+            writeFlow(flowBuilder, nodeBuilder, rspName, FlowID.FLOW_SFINGRESS);
         } else {
-            removeFlow(flowBuilder, nodeBuilder);
+            removeFlow(flowBuilder, nodeBuilder, rspName, FlowID.FLOW_SFINGRESS);
         }
     }
 
@@ -509,7 +513,7 @@ public class SfcClassifierService extends AbstractServiceInstance implements Con
     }
 
     private static FlowID flowSet[] = {FlowID.FLOW_INGRESSCLASS, FlowID.FLOW_EGRESSCLASS,
-            FlowID.FLOW_EGRESSCLASSBYPASS, FlowID.FLOW_SFARP};
+            FlowID.FLOW_EGRESSCLASSBYPASS, FlowID.FLOW_SFARP, FlowID.FLOW_SFINGRESS, FlowID.FLOW_SFEGRESS};
 
     @Override
     public void clearFlows(DataBroker dataBroker, String rspName) {
@@ -534,7 +538,7 @@ public class SfcClassifierService extends AbstractServiceInstance implements Con
             commitFuture.get();  // TODO: Make it async (See bug 1362)
             LOG.debug("Transaction success for deletion of Flow {}", path);
         } catch (Exception e) {
-            LOG.error(e.getMessage(), e);
+            LOG.error("Failed to remove flow {}", path, e);
             modification.cancel();
         }
     }
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/AbstractDataTreeListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/AbstractDataTreeListener.java
deleted file mode 100644 (file)
index 11848db..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2013, 2015 Dell, 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.ovsdb.openstack.netvirt.sfc;
-
-import java.util.Collection;
-
-import com.google.common.base.Preconditions;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * AbstractChangeListner implemented basic {@link AsyncDataChangeEvent} processing for
- * netvirt-sfc data change listener.
- */
-public abstract class AbstractDataTreeListener<T extends DataObject> implements INetvirtSfcDataProcessor<T> {
-    private static final Logger LOG = LoggerFactory.getLogger(AbstractDataTreeListener.class);
-    protected INetvirtSfcOF13Provider provider;
-    protected final Class<T> clazz;
-    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
-
-    public AbstractDataTreeListener(INetvirtSfcOF13Provider provider, Class<T> clazz) {
-        this.provider = Preconditions.checkNotNull(provider, "provider can not be null!");
-        this.clazz = Preconditions.checkNotNull(clazz, "Class can not be null!");
-    }
-
-    private void processChanges(Collection<DataTreeModification<T>> changes) {
-        LOG.info("onDataTreeChanged: Received Data Tree Changed ...", changes);
-        for (DataTreeModification<T> change : changes) {
-            final InstanceIdentifier<T> key = change.getRootPath().getRootIdentifier();
-            final DataObjectModification<T> mod = change.getRootNode();
-            LOG.info("onDataTreeChanged: Received Data Tree Changed Update of Type={} for Key={}",
-                    mod.getModificationType(), key);
-            switch (mod.getModificationType()) {
-                case DELETE:
-                    remove(key, mod.getDataBefore());
-                    break;
-                case SUBTREE_MODIFIED:
-                    update(key, mod.getDataBefore(), mod.getDataAfter());
-                    break;
-                case WRITE:
-                    if (mod.getDataBefore() == null) {
-                        add(key, mod.getDataAfter());
-                    } else {
-                        update(key, mod.getDataBefore(), mod.getDataAfter());
-                    }
-                    break;
-                default:
-                    throw new IllegalArgumentException("Unhandled modification type " + mod.getModificationType());
-            }
-        }
-    }
-
-    @Override
-    public void onDataTreeChanged(final Collection<DataTreeModification<T>> changes) {
-        Preconditions.checkNotNull(changes, "Changes may not be null!");
-        executorService.submit(new Runnable() {
-            @Override
-            public void run() {
-                processChanges(changes);
-            }
-        });
-    }
-}
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NetvirtSfcAclListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/NetvirtSfcAclListener.java
deleted file mode 100644 (file)
index f8cc570..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright Â© 2015 Dell, 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.ovsdb.openstack.netvirt.sfc;
-
-import com.google.common.base.Preconditions;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Data tree listener for AccessList.
- */
-public class NetvirtSfcAclListener extends AbstractDataTreeListener<Acl> {
-    private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcAclListener.class);
-    private ListenerRegistration<NetvirtSfcAclListener> listenerRegistration;
-
-    /**
-     * {@link NetvirtSfcAclListener} constructor.
-     * @param provider OpenFlow 1.3 Provider
-     * @param db MdSal {@link DataBroker}
-     */
-    public NetvirtSfcAclListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
-        super(provider, Acl.class);
-        Preconditions.checkNotNull(db, "DataBroker can not be null!");
-
-        registrationListener(db);
-    }
-
-    private void registrationListener(final DataBroker db) {
-        final DataTreeIdentifier<Acl> treeId =
-                new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, getIetfAclIid());
-        try {
-            LOG.info("Registering Data Change Listener for NetvirtSfc AccessList configuration.");
-            listenerRegistration = db.registerDataTreeChangeListener(treeId, this);
-        } catch (final Exception e) {
-            LOG.warn("Netvirt AccessList DataChange listener registration fail!");
-            throw new IllegalStateException("NetvirtSfcAccessListListener startup fail! System needs restart.", e);
-        }
-    }
-
-    @Override
-    public void close() {
-        if (listenerRegistration != null) {
-            try {
-                listenerRegistration.close();
-            } catch (final Exception e) {
-                LOG.warn("Error while stopping IETF ACL ChangeListener", e);
-            }
-            listenerRegistration = null;
-        }
-    }
-
-    @Override
-    public void remove(final InstanceIdentifier<Acl> identifier,
-                       final Acl change) {
-        Preconditions.checkNotNull(change, "Removed object can not be null!");
-        provider.removeClassifierRules(change);
-    }
-
-    @Override
-    public void update(final InstanceIdentifier<Acl> identifier,
-                       final Acl original, final Acl change) {
-        Preconditions.checkNotNull(original, "Updated original object can not be null!");
-        Preconditions.checkNotNull(original, "Updated update object can not be null!");
-        remove(identifier, original);
-        provider.addClassifierRules(change);
-    }
-
-    @Override
-    public void add(final InstanceIdentifier<Acl> identifier,
-                    final Acl change) {
-        Preconditions.checkNotNull(change, "Added object can not be null!");
-        provider.addClassifierRules(change);
-    }
-
-    public InstanceIdentifier<Acl> getIetfAclIid() {
-        return InstanceIdentifier.create(AccessLists.class).child(Acl.class);
-    }
-}
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/RspListener.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/RspListener.java
deleted file mode 100644 (file)
index 56787c9..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright Â© 2015 Red Hat, 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.ovsdb.openstack.netvirt.sfc;
-
-import com.google.common.base.Preconditions;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.RenderedServicePaths;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Data tree listener for {@link RenderedServicePath}
- */
-public class RspListener extends AbstractDataTreeListener<RenderedServicePath> {
-    private static final Logger LOG = LoggerFactory.getLogger(RspListener.class);
-    private ListenerRegistration<RspListener> listenerRegistration;
-
-    public RspListener(final INetvirtSfcOF13Provider provider, final DataBroker db) {
-        super(provider, RenderedServicePath.class);
-        Preconditions.checkNotNull(db, "DataBroker can not be null!");
-
-        registrationListener(db);
-    }
-
-    public InstanceIdentifier<RenderedServicePath> getRspIid() {
-        return InstanceIdentifier.create(RenderedServicePaths.class).child(RenderedServicePath.class);
-    }
-
-    private void registrationListener(final DataBroker db) {
-        final DataTreeIdentifier<RenderedServicePath> treeId =
-                new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, getRspIid());
-        try {
-            LOG.info("Registering Data Change Listener for NetvirtSfc RenderedServicePath configuration.");
-            listenerRegistration = db.registerDataTreeChangeListener(treeId, this);
-        } catch (final Exception e) {
-            LOG.warn("Netvirt RenderedServicePath DataChange listener registration failed!");
-            throw new IllegalStateException("RspListener startup failed! System needs restart.", e);
-        }
-    }
-
-    @Override
-    public void remove(final InstanceIdentifier<RenderedServicePath> identifier, final RenderedServicePath change) {
-        Preconditions.checkNotNull(change, "Removed object can not be null!");
-        provider.removeRsp(change);
-    }
-
-    @Override
-    public void update(final InstanceIdentifier<RenderedServicePath> identifier, final RenderedServicePath original,
-                       RenderedServicePath change) {
-        Preconditions.checkNotNull(original, "Updated original object can not be null!");
-        Preconditions.checkNotNull(original, "Updated update object can not be null!");
-        remove(identifier, original);
-        provider.addRsp(change);
-    }
-
-    @Override
-    public void add(final InstanceIdentifier<RenderedServicePath> identifier, final RenderedServicePath change) {
-        Preconditions.checkNotNull(change, "Created object can not be null!");
-        provider.addRsp(change);
-    }
-
-    @Override
-    public void close() throws Exception {
-
-    }
-}
@@ -1,30 +1,27 @@
 /*
- * Copyright Â© 2015 Red Hat, Inc. and others. All rights reserved.
+ * Copyright Â© 2016 Red Hat, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev141210;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210;
 
-import org.opendaylight.controller.config.api.DependencyResolver;
-import org.opendaylight.controller.config.api.ModuleIdentifier;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NetvirtSfcProvider;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NetvirtSfcProvider;
 import org.osgi.framework.BundleContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class NetvirtSfcModule extends AbstractNetvirtSfcModule {
-    private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcModule.class);
+public class NetvirtSfcImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210.AbstractNetvirtSfcImplModule {
+    private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcImplModule.class);
     private BundleContext bundleContext;
 
-    public NetvirtSfcModule(ModuleIdentifier identifier, DependencyResolver dependencyResolver) {
+    public NetvirtSfcImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
         super(identifier, dependencyResolver);
     }
 
-    public NetvirtSfcModule(ModuleIdentifier identifier, DependencyResolver dependencyResolver,
-                            NetvirtSfcModule oldModule, java.lang.AutoCloseable oldInstance) {
+    public NetvirtSfcImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210.NetvirtSfcImplModule oldModule, java.lang.AutoCloseable oldInstance) {
         super(identifier, dependencyResolver, oldModule, oldInstance);
     }
 
@@ -38,6 +35,7 @@ public class NetvirtSfcModule extends AbstractNetvirtSfcModule {
         LOG.info("Netvirt SFC module initialization.");
         NetvirtSfcProvider sfcProvider = new NetvirtSfcProvider(bundleContext);
         sfcProvider.setOf13Provider(getOf13provider());
+        sfcProvider.setAddSfFlows(getAddsfflows());
         getBrokerDependency().registerProvider(sfcProvider);
         return sfcProvider;
     }
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/impl/rev141210/NetvirtSfcImplModuleFactory.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/impl/rev141210/NetvirtSfcImplModuleFactory.java
new file mode 100644 (file)
index 0000000..badc825
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright Â© 2016 Red Hat, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210;
+
+import org.opendaylight.controller.config.api.DependencyResolver;
+import org.osgi.framework.BundleContext;
+
+public class NetvirtSfcImplModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210.AbstractNetvirtSfcImplModuleFactory {
+
+    @Override
+    public NetvirtSfcImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+                                                  BundleContext bundleContext) {
+        NetvirtSfcImplModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
+
+    @Override
+    public NetvirtSfcImplModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
+                                                  NetvirtSfcImplModule oldModule, AutoCloseable oldInstance,
+                                                  BundleContext bundleContext) {
+        NetvirtSfcImplModule module = super.instantiateModule(instanceName, dependencyResolver,
+                oldModule, oldInstance, bundleContext);
+        module.setBundleContext(bundleContext);
+        return module;
+    }
+}
diff --git a/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/rev141210/NetvirtSfcModuleFactory.java b/openstack/net-virt-sfc/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/netvirt/sfc/rev141210/NetvirtSfcModuleFactory.java
deleted file mode 100644 (file)
index 276a14a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright Â© 2015 Red Hat, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev141210;
-
-import org.opendaylight.controller.config.api.DependencyResolver;
-import org.osgi.framework.BundleContext;
-
-public class NetvirtSfcModuleFactory extends AbstractNetvirtSfcModuleFactory {
-    @Override
-    public NetvirtSfcModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
-                                              BundleContext bundleContext) {
-        NetvirtSfcModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext);
-        module.setBundleContext(bundleContext);
-        return module;
-    }
-
-    @Override
-    public NetvirtSfcModule instantiateModule(String instanceName, DependencyResolver dependencyResolver,
-                                              NetvirtSfcModule oldModule, AutoCloseable oldInstance,
-                                              BundleContext bundleContext) {
-        NetvirtSfcModule module = super.instantiateModule(instanceName, dependencyResolver,
-                oldModule, oldInstance, bundleContext);
-        module.setBundleContext(bundleContext);
-        return module;
-    }
-}
similarity index 72%
rename from openstack/net-virt-sfc/impl/src/main/yang/netvirt-sfc.yang
rename to openstack/net-virt-sfc/impl/src/main/yang/netvirt-sfc-impl.yang
index 2f5d016da2cb08e2412da489d337465083113c1a..fedcd9eae60e93ac3d7c90354824a01bbf729100 100644 (file)
@@ -1,7 +1,7 @@
-module netvirt-sfc {
+module netvirt-sfc-impl {
     yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:netvirt:sfc";
-    prefix "netvirt-sfc";
+    namespace "urn:opendaylight:params:xml:ns:yang:netvirt:sfc:impl";
+    prefix "netvirt-sfc-impl";
 
     import config { prefix config; revision-date 2013-04-05; }
     import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28;}
@@ -14,14 +14,14 @@ module netvirt-sfc {
             "Initial revision";
     }
 
-    identity netvirt-sfc {
+    identity netvirt-sfc-impl {
         base config:module-type;
-        config:java-name-prefix NetvirtSfc;
+        config:java-name-prefix NetvirtSfcImpl;
     }
 
     augment "/config:modules/config:module/config:configuration" {
-        case netvirt-sfc {
-            when "/config:modules/config:module/config:type = 'netvirt-sfc'";
+        case netvirt-sfc-impl {
+            when "/config:modules/config:module/config:type = 'netvirt-sfc-impl'";
             container broker {
                 uses config:service-ref {
                     refine type {
@@ -34,6 +34,10 @@ module netvirt-sfc {
             leaf of13provider {
                 type string;
             }
+
+            leaf addsfflows {
+                type boolean;
+            }
         }
     }
 }
@@ -6,15 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services;
 
 import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.MatchUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.MatchesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
 
 public class AclMatchesTest {
     @Test
@@ -5,14 +5,14 @@
  * 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev141210;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210;
 
 import org.junit.Test;
 
-public class NetvirtSfcModuleFactoryTest {
+public class NetvirtSfcImplModuleFactoryTest {
     @Test
     public void testFactoryConstructor() {
         // ensure no exceptions on construction
-        new NetvirtSfcModuleFactory();
+        new NetvirtSfcImplModuleFactory();
     }
 }
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev141210;
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.impl.rev141210;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.eq;
@@ -26,20 +26,20 @@ import org.opendaylight.controller.config.api.ModuleIdentifier;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NetvirtSfcProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.services.SfcClassifierService;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.AbstractServiceInstance;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NetvirtSfcProvider;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13.services.SfcClassifierService;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 
-public class NetvirtSfcModuleTest {
+public class NetvirtSfcImplModuleTest {
     @Test
     public void testCustomValidation() {
-        NetvirtSfcModule module = new NetvirtSfcModule(mock(ModuleIdentifier.class), mock(DependencyResolver.class));
+        NetvirtSfcImplModule module = new NetvirtSfcImplModule(mock(ModuleIdentifier.class), mock(DependencyResolver.class));
         // ensure no exceptions on validation
         // currently this method is empty
         module.customValidation();
@@ -58,7 +58,7 @@ public class NetvirtSfcModuleTest {
         when(session.getSALService(eq(DataBroker.class))).thenReturn(dataBroker);
 
         // create instance of module with injected mocks
-        NetvirtSfcModule module = new NetvirtSfcModule(mock(ModuleIdentifier.class), dependencyResolver);
+        NetvirtSfcImplModule module = new NetvirtSfcImplModule(mock(ModuleIdentifier.class), dependencyResolver);
         // getInstance calls resolveInstance to get the broker dependency and then calls createInstance
         BundleContext bundleContext = mock(BundleContext.class);
         PipelineOrchestrator pipelineOrchestrator = mock(PipelineOrchestrator.class);
@@ -77,6 +77,7 @@ public class NetvirtSfcModuleTest {
         AutoCloseable closeable = module.getInstance();
         ((NetvirtSfcProvider)closeable).setBundleContext(bundleContext);
         ((NetvirtSfcProvider)closeable).setOf13Provider("standalone");
+        ((NetvirtSfcProvider)closeable).setAddSfFlows(false);
         ((NetvirtSfcProvider)closeable).onSessionInitiated(session);
         // verify that the module registered the returned provider with the broker
         verify(broker).registerProvider((NetvirtSfcProvider)closeable);
index 6472aafdb7765c10af8a157c9823d59117ddfa7c..cbefc5eca57782676981e842e782927c352cddd6 100644 (file)
@@ -12,23 +12,24 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
   <parent>
-    <groupId>org.opendaylight.ovsdb</groupId>
+    <groupId>org.opendaylight.netvirt</groupId>
     <artifactId>it</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <relativePath>../../../commons/it</relativePath>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-sfc-it</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>jar</packaging>
 
   <properties>
-    <karaf.distro.groupId>org.opendaylight.ovsdb</karaf.distro.groupId>
+    <karaf.distro.groupId>org.opendaylight.netvirt</karaf.distro.groupId>
     <karaf.distro.artifactId>openstack.net-virt-sfc-karaf</karaf.distro.artifactId>
     <karaf.distro.version>${project.version}</karaf.distro.version>
     <karaf.distro.type>zip</karaf.distro.type>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
    </properties>
 
   <dependencyManagement>
@@ -46,7 +47,22 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   <dependencies>
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-features-test</artifactId>
+      <artifactId>openstack.net-virt-sfc-features</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-sfc-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-sfc-impl</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>openstack.net-virt-providers</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
@@ -62,8 +78,20 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.ovsdb</groupId>
+      <artifactId>utils.mdsal-utils</artifactId>
+      <version>${ovsdb.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>utils.southbound-utils</artifactId>
+      <version>${ovsdb.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>utils.it-utils</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
similarity index 77%
rename from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/NetvirtSfcIT.java
rename to openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/NetvirtSfcIT.java
index c98d8e089d131287f0dd578c1a75451fb8e0db8e..14c6173394929a5bb96557fb4ca86281e0a50e40 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it;
 
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
@@ -27,12 +27,10 @@ import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRunti
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.junit.After;
@@ -42,34 +40,33 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.mdsal.it.base.AbstractMdsalTestBase;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
-import org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13.Service;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.NshUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.SfcUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.RenderedServicePathUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.SfcClassifier;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.AclUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.ClassifierUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.NetvirtConfigUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.ServiceFunctionChainUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.ServiceFunctionForwarderUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.ServiceFunctionPathUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.ServiceFunctionUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.SfcConfigUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils.NetvirtSfcUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.workaround.services.FlowNames;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.AclUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.ClassifierUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.RenderedServicePathUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.ServiceFunctionChainUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.ServiceFunctionPathUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.ServiceFunctionUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.SfcConfigUtils;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.PipelineOrchestrator;
+import org.opendaylight.netvirt.openstack.netvirt.providers.openflow13.Service;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.NshUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.SfcUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.standalone.openflow13.SfcClassifier;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.NetvirtConfigUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.ServiceFunctionForwarderUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils.NetvirtSfcUtils;
+import org.opendaylight.netvirt.openstack.netvirt.sfc.workaround.services.FlowNames;
 import org.opendaylight.ovsdb.southbound.SouthboundConstants;
-import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.utils.it.utils.ItUtils;
+import org.opendaylight.netvirt.utils.mdsal.openflow.FlowUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.utils.it.utils.NodeInfo;
+import org.opendaylight.ovsdb.utils.mdsal.utils.NotifyingDataChangeListener;
 import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
 import org.opendaylight.sfc.provider.api.SfcProviderRenderedPathAPI;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.RspName;
@@ -121,6 +118,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev150105.Sfc;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev150105.SfcBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
@@ -130,7 +128,6 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
 import org.opendaylight.yangtools.concepts.Builder;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.ops4j.pax.exam.Configuration;
@@ -150,8 +147,6 @@ import com.google.common.collect.Maps;
 @ExamReactorStrategy(PerClass.class)
 public class NetvirtSfcIT extends AbstractMdsalTestBase {
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtSfcIT.class);
-    private static final int MDSAL_TIMEOUT = 10000;
-    private static final int NO_MDSAL_TIMEOUT = 0;
     private static AclUtils aclUtils = new AclUtils();
     private static ClassifierUtils classifierUtils = new ClassifierUtils();
     private static NetvirtSfcUtils netvirtSfcUtils = new NetvirtSfcUtils();
@@ -175,6 +170,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     private static PipelineOrchestrator pipelineOrchestrator;
     private static Southbound southbound;
     private static DataBroker dataBroker;
+    private static ItUtils itUtils;
     public static final String CONTROLLER_IPADDRESS = "ovsdb.controller.address";
     public static final String SERVER_IPADDRESS = "ovsdbserver.ipaddress";
     public static final String SERVER_PORT = "ovsdbserver.port";
@@ -193,8 +189,8 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     private static final String SF2IP = "10.2.1.2";
     private static final String SF1DPLNAME = "sf1";
     private static final String SF2DPLNAME = "sf2";
-    // Use 192.168.50.70 when running against vagrant vm for workaround testing, eg. netvirtsfc-env
-    // Use 192.168.1.129 (or whatever address is dhcp'ed) for tacker-vm
+    // Use 192.168.50.70 when running against vagrant vm for workaround testing, eg. netvirtsfc-env.
+    // Use 192.168.1.129 (or whatever address is dhcp'ed) for tacker-vm.
     // "192.168.50.70"; "127.0.0.1"; "192.168.1.129";
     private static final String SFF1IP = "192.168.50.70";
     private static final String SFF2IP = "127.0.0.1";
@@ -217,19 +213,19 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
 
     @Override
     public String getModuleName() {
-        return "netvirt-sfc";
+        return "netvirt-sfc-impl";
     }
 
     @Override
     public String getInstanceName() {
-        return "netvirt-sfc-default";
+        return "netvirt-sfc-impl";
     }
 
     @Override
     public MavenUrlReference getFeatureRepo() {
         return maven()
-                .groupId("org.opendaylight.ovsdb")
-                .artifactId("openstack.net-virt-sfc-features-test")
+                .groupId("org.opendaylight.netvirt")
+                .artifactId("openstack.net-virt-sfc-features")
                 .classifier("features")
                 .type("xml")
                 .versionAsInProject();
@@ -257,7 +253,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     private Option[] getOtherOptions() {
         return new Option[] {
                 wrappedBundle(
-                        mavenBundle("org.opendaylight.ovsdb", "utils.mdsal-openflow")
+                        mavenBundle("org.opendaylight.netvirt", "utils.mdsal-openflow")
                                 .version(asInProject())
                                 .type("jar")),
                 configureConsole().startLocalConsole(),
@@ -291,10 +287,10 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
                         logConfiguration(NetvirtSfcIT.class),
                         LogLevel.INFO.name()),
                 editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
-                        "log4j.logger.org.opendaylight.ovsdb.openstack.netvirt.sfc",
+                        "log4j.logger.org.opendaylight.netvirt.openstack.netvirt.sfc",
                         LogLevel.TRACE.name()),
                 editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
-                        "log4j.logger.org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13",
+                        "log4j.logger.org.opendaylight.netvirt.openstack.netvirt.providers.openflow13",
                         LogLevel.TRACE.name()),
                 editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
                         "log4j.logger.org.opendaylight.sfc",
@@ -342,15 +338,19 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
             Thread.sleep(1000);
             super.setup();
         } catch (Exception e) {
-            e.printStackTrace();
+            LOG.warn("Failed to setup test", e);
+            fail("Failed to setup test: " + e);
         }
 
         getProperties();
 
         dataBroker = getDatabroker(getProviderContext());
+        itUtils = new ItUtils(dataBroker);
         mdsalUtils = new MdsalUtils(dataBroker);
+        org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils sbMdsalUtils =
+                new org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils(dataBroker);
         assertNotNull("mdsalUtils should not be null", mdsalUtils);
-        southboundUtils = new SouthboundUtils(mdsalUtils);
+        southboundUtils = new SouthboundUtils(sbMdsalUtils);
         sfcUtils = new SfcUtils(mdsalUtils);
         assertTrue("Did not find " + NETVIRT_TOPOLOGY_ID, getNetvirtTopology());
         southbound = (Southbound) ServiceHelper.getGlobalInstance(Southbound.class, this);
@@ -377,7 +377,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException e) {
-                    e.printStackTrace();
+                    LOG.warn("Interrupted while waiting for provider context", e);
                 }
             }
         }
@@ -386,7 +386,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         try {
             Thread.sleep(1000);
         } catch (InterruptedException e) {
-            e.printStackTrace();
+            LOG.warn("Interrupted while waiting for other provider", e);
         }
         return providerContext;
     }
@@ -414,7 +414,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException e) {
-                    e.printStackTrace();
+                    LOG.warn("Interrupted while waiting for {}", NETVIRT_TOPOLOGY_ID, e);
                 }
             }
         }
@@ -523,6 +523,10 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     }
 
     private ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder() {
+        return serviceFunctionForwardersBuilder(null);
+    }
+
+    private ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder(OvsdbNodeRef ovsdbNodeRef) {
         String sf1Name = SF1NAME;
         String sf1Ip = SF1IP;
         String sf1DplName = SF1DPLNAME;
@@ -535,7 +539,8 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
 
         ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder =
                 serviceFunctionForwarderUtils.serviceFunctionForwarderBuilder(
-                        sff1Name, sff1Ip, port, sffDpl1Name, sf1Ip, sn1Name, bridge1Name, sf1Name, sf1DplName);
+                        sff1Name, sff1Ip, port, sffDpl1Name, sf1Ip, sn1Name, bridge1Name, sf1Name, sf1DplName,
+                        ovsdbNodeRef);
         List<ServiceFunctionForwarder>  serviceFunctionForwarderList = serviceFunctionForwarderUtils.list(
                 new ArrayList<ServiceFunctionForwarder>(), serviceFunctionForwarderBuilder);
 
@@ -618,58 +623,6 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         testModel(classifiersBuilder(), Classifiers.class);
     }
 
-    private class NodeInfo {
-        private ConnectionInfo connectionInfo;
-        private InstanceIdentifier<Node> ovsdbIid;
-        private String bridgeName = INTEGRATION_BRIDGE_NAME;
-        InstanceIdentifier<Node> bridgeIid;
-        NotifyingDataChangeListener ovsdbOperationalListener;
-        NotifyingDataChangeListener bridgeOperationalListener;
-        long datapathId;
-        Node ovsdbNode;
-        Node bridgeNode;
-
-        NodeInfo(ConnectionInfo connectionInfo) {
-            this.connectionInfo = connectionInfo;
-            ovsdbIid = SouthboundUtils.createInstanceIdentifier(connectionInfo);
-            bridgeIid = SouthboundUtils.createInstanceIdentifier(connectionInfo, bridgeName);
-        }
-
-        private void connect() throws InterruptedException {
-            ovsdbOperationalListener = new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, ovsdbIid);
-            ovsdbOperationalListener.registerDataChangeListener();
-            bridgeOperationalListener = new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, bridgeIid);
-            bridgeOperationalListener.registerDataChangeListener();
-            assertNotNull("connection failed", southboundUtils.addOvsdbNode(connectionInfo, NO_MDSAL_TIMEOUT));
-
-            ovsdbOperationalListener.waitForCreation();
-            ovsdbNode = southboundUtils.getOvsdbNode(connectionInfo);
-            assertNotNull("node is not connected", ovsdbNode);
-
-            bridgeOperationalListener.waitForCreation();
-            assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
-                    + " is not connected", isControllerConnected(connectionInfo));
-
-            bridgeNode = southbound.getBridgeNode(ovsdbNode, bridgeName);
-            assertNotNull("bridge " + bridgeName + " was not found", bridgeNode);
-            datapathId = southbound.getDataPathId(bridgeNode);
-            String datapathIdString = southbound.getDatapathId(bridgeNode);
-            LOG.info("testNetVirt: bridgeNode: {}, datapathId: {} - {}", bridgeNode, datapathIdString, datapathId);
-            assertNotEquals("datapathId was not found", datapathId, 0);
-        }
-
-        void disconnect() throws InterruptedException {
-            assertTrue(southboundUtils.deleteBridge(connectionInfo, bridgeName, NO_MDSAL_TIMEOUT));
-            bridgeOperationalListener.waitForDeletion();
-            Node bridgeNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, bridgeIid);
-            assertNull("Bridge should not be found", bridgeNode);
-            assertTrue(southboundUtils.disconnectOvsdbNode(connectionInfo, NO_MDSAL_TIMEOUT));
-            ovsdbOperationalListener.waitForDeletion();
-            Node ovsdbNode = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, ovsdbIid);
-            assertNull("Ovsdb node should not be found", ovsdbNode);
-        }
-    }
-
     /**
      * Test that the NetvirtSfc SfcClassifierService is added to the Netvirt pipeline. The test
      * sets the table offset and verifies the correct flow is programmed with the offset.
@@ -679,7 +632,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         short netvirtTableOffset = 1;
         testModelPut(netvirtProvidersConfigBuilder(netvirtTableOffset), NetvirtProvidersConfig.class);
 
-        NodeInfo nodeInfo = new NodeInfo(SouthboundUtils.getConnectionInfo(addressStr, portStr));
+        NodeInfo nodeInfo = itUtils.createNodeInfo(SouthboundUtils.getConnectionInfo(addressStr, portStr), waitList);
         nodeInfo.connect();
 
         String flowId = "DEFAULT_PIPELINE_FLOW_" + pipelineOrchestrator.getTable(Service.SFC_CLASSIFIER);
@@ -711,7 +664,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         short egressTable = pipelineOrchestrator.getTable(Service.SFC_CLASSIFIER);
         testModelPut(sfcOfRendererConfigBuilder(sfcTableoffset, egressTable), SfcOfRendererConfig.class);
 
-        NodeInfo nodeInfo = new NodeInfo(SouthboundUtils.getConnectionInfo(addressStr, portStr));
+        NodeInfo nodeInfo = itUtils.createNodeInfo(SouthboundUtils.getConnectionInfo(addressStr, portStr), waitList);
         nodeInfo.connect();
 
         String flowId = "DEFAULT_PIPELINE_FLOW_" + pipelineOrchestrator.getTable(Service.SFC_CLASSIFIER);
@@ -730,16 +683,22 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         InstanceIdentifier<TerminationPoint> tpIid =
                 southboundUtils.createTerminationPointInstanceIdentifier(nodeInfo.bridgeNode, SFFDPL1NAME);
         final NotifyingDataChangeListener portOperationalListener =
-                new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, tpIid);
-        portOperationalListener.registerDataChangeListener();
+                new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, tpIid, waitList);
+        portOperationalListener.registerDataChangeListener(dataBroker);
 
         InstanceIdentifier<RenderedServicePath> rspIid = sfcUtils.getRspId(RSPNAME);
         final NotifyingDataChangeListener rspOperationalListener =
-                new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, rspIid);
-        rspOperationalListener.registerDataChangeListener();
+                new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, rspIid, waitList);
+        rspOperationalListener.registerDataChangeListener(dataBroker);
+
+        OvsdbBridgeAugmentation bridgeAugmentation = southbound.extractBridgeAugmentation(nodeInfo.bridgeNode);
+        OvsdbNodeRef ovsdbNodeRef = null;
+        if (bridgeAugmentation != null) {
+            ovsdbNodeRef = bridgeAugmentation.getManagedBy();
+        }
 
         testModelPut(serviceFunctionsBuilder(), ServiceFunctions.class);
-        testModelPut(serviceFunctionForwardersBuilder(), ServiceFunctionForwarders.class);
+        testModelPut(serviceFunctionForwardersBuilder(ovsdbNodeRef), ServiceFunctionForwarders.class);
         testModelPut(serviceFunctionChainsBuilder(), ServiceFunctionChains.class);
         testModelPut(serviceFunctionPathsBuilder(), ServiceFunctionPaths.class);
 
@@ -770,16 +729,23 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         verifyFlow(nodeInfo.datapathId, flowId, Service.CLASSIFIER);
         flowId = FlowNames.getArpResponder(SF1IP);
         verifyFlow(nodeInfo.datapathId, flowId, Service.ARP_RESPONDER);
+        // Only verify these flows if NetVirt adds them and not SFC
+        //flowId = FlowNames.getSfEgress(GPEUDPPORT);
+        //verifyFlow(nodeInfo.datapathId, flowId, Service.SFC_CLASSIFIER);
+        //flowId = FlowNames.getSfIngress(GPEUDPPORT, SF1IP);
+        //verifyFlow(nodeInfo.datapathId, flowId, Service.CLASSIFIER.getTable());
 
+        LOG.info("check for flows!!!!!!!!!!!!!");
+        Thread.sleep(30000);
         InstanceIdentifier<Flow> flowIid = createFlowIid(nodeInfo.datapathId, flowId,
                 pipelineOrchestrator.getTable(Service.CLASSIFIER));
 
         final NotifyingDataChangeListener flowConfigurationListener =
-                new NotifyingDataChangeListener(LogicalDatastoreType.CONFIGURATION, flowIid);
-        flowConfigurationListener.registerDataChangeListener();
+                new NotifyingDataChangeListener(LogicalDatastoreType.CONFIGURATION, flowIid, waitList);
+        flowConfigurationListener.registerDataChangeListener(dataBroker);
         final NotifyingDataChangeListener flowOperationalListener =
-                new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, flowIid);
-        flowOperationalListener.registerDataChangeListener();
+                new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, flowIid, waitList);
+        flowOperationalListener.registerDataChangeListener(dataBroker);
 
         deleteRsp(RSPNAME);
         rspOperationalListener.waitForDeletion();
@@ -826,7 +792,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
                 SouthboundConstants.OVSDB_FAIL_MODE_MAP.inverse().get("secure"), true, null, null,
                 setControllerEntry, null, "00:00:00:00:00:00:00:01"));
         assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
-                + " is not connected", isControllerConnected(connectionInfo));
+                + " is not connected", itUtils.isControllerConnected(connectionInfo));
 
         Node bridgeNode = southbound.getBridgeNode(ovsdbNode, bridgeName);
         assertNotNull("bridge " + bridgeName + " was not found", bridgeNode);
@@ -938,38 +904,6 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
         }
     }
 
-    private boolean isControllerConnected(ConnectionInfo connectionInfo) throws InterruptedException {
-        LOG.info("isControllerConnected enter");
-        Boolean connected = false;
-        ControllerEntry controllerEntry;
-        Node ovsdbNode = southboundUtils.getOvsdbNode(connectionInfo);
-        assertNotNull("ovsdb node not found", ovsdbNode);
-
-        BridgeConfigurationManager bridgeConfigurationManager =
-                (BridgeConfigurationManager) ServiceHelper.getGlobalInstance(BridgeConfigurationManager.class, this);
-        assertNotNull("Could not find BridgeConfigurationManager Service", bridgeConfigurationManager);
-        String controllerTarget = bridgeConfigurationManager.getControllersFromOvsdbNode(ovsdbNode).get(0);
-        Assert.assertNotNull("Failed to get controller target", controllerTarget);
-
-        for (int i = 0; i < 10; i++) {
-            LOG.info("isControllerConnected try {}: looking for controller: {}", i, controllerTarget);
-            OvsdbBridgeAugmentation bridge =
-                    southboundUtils.getBridge(connectionInfo, INTEGRATION_BRIDGE_NAME);
-            Assert.assertNotNull(bridge);
-            Assert.assertNotNull(bridge.getControllerEntry());
-            controllerEntry = bridge.getControllerEntry().iterator().next();
-            Assert.assertEquals(controllerTarget, controllerEntry.getTarget().getValue());
-            if (controllerEntry.isIsConnected()) {
-                Assert.assertTrue("Controller is not connected", controllerEntry.isIsConnected());
-                connected = true;
-                break;
-            }
-            Thread.sleep(1000);
-        }
-        LOG.info("isControllerConnected exit: {} - {}", connected, controllerTarget);
-        return connected;
-    }
-
     private List<NotifyingDataChangeListener> waitList = new ArrayList<>();
 
     private void closeWaitFors() {
@@ -979,128 +913,10 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
             try {
                 listener.close();
             } catch (Exception ex) {
-                LOG.warn("Failed to close registration {}, iid {}", listener, ex);
+                LOG.warn("Failed to close registration {}", listener, ex);
             }
         }
         LOG.info("waitList size {}", waitList.size());
     }
 
-    public class NotifyingDataChangeListener implements AutoCloseable, DataChangeListener {
-        private LogicalDatastoreType type;
-        private final Set<InstanceIdentifier<?>> createdIids = new HashSet<>();
-        private final Set<InstanceIdentifier<?>> removedIids = new HashSet<>();
-        private final Set<InstanceIdentifier<?>> updatedIids = new HashSet<>();
-        private InstanceIdentifier<?> iid;
-        private final int RETRY_WAIT = 100;
-        private final int MDSAL_TIMEOUT = 1000;
-        private ListenerRegistration<?> listenerRegistration;
-
-        private NotifyingDataChangeListener(LogicalDatastoreType type, InstanceIdentifier<?> iid) {
-            this.type = type;
-            this.iid = iid;
-            waitList.add(this);
-        }
-
-        private void modify(LogicalDatastoreType type, InstanceIdentifier<?> iid) throws Exception {
-            this.close();
-            this.clear();
-            this.type = type;
-            this.iid = iid;
-        }
-
-        @Override
-        public void onDataChanged(
-                AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> asyncDataChangeEvent) {
-            LOG.info("{} DataChanged: created {}", type, asyncDataChangeEvent.getCreatedData().keySet());
-            LOG.info("{} DataChanged: updated {}", type, asyncDataChangeEvent.getUpdatedData().keySet());
-            LOG.info("{} DataChanged: removed {}", type, asyncDataChangeEvent.getRemovedPaths());
-            createdIids.addAll(asyncDataChangeEvent.getCreatedData().keySet());
-            removedIids.addAll(asyncDataChangeEvent.getRemovedPaths());
-            updatedIids.addAll(asyncDataChangeEvent.getUpdatedData().keySet());
-            synchronized(this) {
-                notifyAll();
-            }
-        }
-
-        public boolean isCreated(InstanceIdentifier<?> iid) {
-            return createdIids.remove(iid);
-        }
-
-        public boolean isUpdated(InstanceIdentifier<?> iid) {
-            return updatedIids.remove(iid);
-        }
-
-        public boolean isRemoved(InstanceIdentifier<?> iid) {
-            return removedIids.remove(iid);
-        }
-
-        public void clear() {
-            createdIids.clear();
-            removedIids.clear();
-            updatedIids.clear();
-        }
-
-        public void registerDataChangeListener() {
-            listenerRegistration = dataBroker.registerDataChangeListener(type, iid, this,
-                    AsyncDataBroker.DataChangeScope.SUBTREE);
-        }
-
-        public void waitForCreation() throws InterruptedException {
-            waitForCreation(MDSAL_TIMEOUT);
-        }
-
-        public void waitForCreation(long timeout) throws InterruptedException {
-            synchronized (this) {
-                long _start = System.currentTimeMillis();
-                LOG.info("Waiting for {} DataChanged creation on {}", type, iid);
-                while (!isCreated(iid) && (System.currentTimeMillis() - _start) < timeout) {
-                    wait(RETRY_WAIT);
-                }
-                LOG.info("Woke up, waited {}ms for creation of {}", (System.currentTimeMillis() - _start), iid);
-            }
-        }
-
-        public void waitForUpdate() throws InterruptedException {
-            waitForUpdate(MDSAL_TIMEOUT);
-        }
-
-        public void waitForUpdate(long timeout) throws InterruptedException {
-            synchronized (this) {
-                long _start = System.currentTimeMillis();
-                LOG.info("Waiting for {} DataChanged update on {}", type, iid);
-                while (!isUpdated(iid) && (System.currentTimeMillis() - _start) < timeout) {
-                    wait(RETRY_WAIT);
-                }
-                LOG.info("Woke up, waited {}ms for update of {}", (System.currentTimeMillis() - _start), iid);
-            }
-        }
-
-        public void waitForDeletion() throws InterruptedException {
-            waitForDeletion(MDSAL_TIMEOUT);
-        }
-
-        public void waitForDeletion(long timeout) throws InterruptedException {
-            synchronized (this) {
-                long _start = System.currentTimeMillis();
-                LOG.info("Waiting for {} DataChanged deletion on {}", type, iid);
-                while (!isRemoved(iid) && (System.currentTimeMillis() - _start) < timeout) {
-                    wait(RETRY_WAIT);
-                }
-                LOG.info("Woke up, waited {}ms for deletion of {}", (System.currentTimeMillis() - _start), iid);
-            }
-        }
-
-        @Override
-        public void close() throws Exception {
-            if (listenerRegistration != null) {
-                try {
-                    listenerRegistration.close();
-                } catch (final Exception ex) {
-                    LOG.warn("Failed to close registration {}, iid {}", listenerRegistration, iid, ex);
-                }
-            }
-            waitList.remove(this);
-            listenerRegistration = null;
-        }
-    }
 }
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import java.util.List;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.sff.data.plane.locator.DataPlaneLocatorBuilder;
similarity index 95%
rename from openstack/net-virt-sfc/it/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/sfc/it/utils/AclUtils.java
rename to openstack/net-virt-sfc/it/src/test/java/org/opendaylight/netvirt/openstack/netvirt/sfc/it/utils/AclUtils.java
index 0f5e574c231c7c900e1d0fe06844e3dc364e81a2..7111a6c814f6f31b05233fb0bfe80c56918075fc 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -20,7 +20,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.cont
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.MatchesBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.actions.packet.handling.PermitBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIpBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.ace.ip.ace.ip.version.AceIpv4Builder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev150611.acl.transport.header.fields.DestinationPortRangeBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev150611.acl.transport.header.fields.SourcePortRangeBuilder;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109.NetvirtProvidersConfigBuilder;
 
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.rev150105.SfcBuilder;
 
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.CreateRenderedPathInputBuilder;
 
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -20,7 +20,10 @@ import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsBridgeAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentation;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsNodeAugmentation;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsNodeAugmentationBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.bridge.OvsBridgeBuilder;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.node.OvsNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.options.OvsOptionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.ServiceFunctionForwardersBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarder;
@@ -31,6 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev1407
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocatorBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.service.function.dictionary.SffSfDataPlaneLocatorBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.sff.data.plane.locator.DataPlaneLocatorBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
 
 public class ServiceFunctionForwarderUtils extends AbstractUtils {
     public OvsOptionsBuilder ovsOptionsBuilder(OvsOptionsBuilder ovsOptionsBuilder, int port) {
@@ -87,16 +91,23 @@ public class ServiceFunctionForwarderUtils extends AbstractUtils {
             ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder,
             String sffName, String serviceNodeName, String bridgeName,
             List<SffDataPlaneLocator> sffDataPlaneLocatorList,
-            List<ServiceFunctionDictionary> serviceFunctionDictionaryList) {
+            List<ServiceFunctionDictionary> serviceFunctionDictionaryList,
+            OvsdbNodeRef ovsdbNodeRef) {
 
         SffOvsBridgeAugmentationBuilder sffOvsBridgeAugmentationBuilder = new SffOvsBridgeAugmentationBuilder();
         sffOvsBridgeAugmentationBuilder.setOvsBridge(ovsBridgeBuilder(new OvsBridgeBuilder(), bridgeName).build());
 
+        SffOvsNodeAugmentationBuilder sffOvsNodeAugmentationBuilder = new SffOvsNodeAugmentationBuilder();
+        OvsNodeBuilder ovsNodeBuilder = new OvsNodeBuilder();
+        ovsNodeBuilder.setNodeId(ovsdbNodeRef);
+        sffOvsNodeAugmentationBuilder.setOvsNode(ovsNodeBuilder.build());
+
         return serviceFunctionForwarderBuilder
                 .setName(new SffName(sffName))
                 .setServiceNode(new SnName(serviceNodeName))
                 .setServiceFunctionDictionary(serviceFunctionDictionaryList)
                 .setSffDataPlaneLocator(sffDataPlaneLocatorList)
+                .addAugmentation(SffOvsNodeAugmentation.class, sffOvsNodeAugmentationBuilder.build())
                 .addAugmentation(SffOvsBridgeAugmentation.class, sffOvsBridgeAugmentationBuilder.build());
     }
 
@@ -108,7 +119,8 @@ public class ServiceFunctionForwarderUtils extends AbstractUtils {
 
     public ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder(
             String sffName, String sffIp, int port, String sffDplName,
-            String sfIp, String snName, String bridgeName, String sfName, String sfDplName) {
+            String sfIp, String snName, String bridgeName, String sfName, String sfDplName,
+            OvsdbNodeRef ovsdbNodeRef) {
 
         DataPlaneLocatorBuilder dataPlaneLocatorBuilder =
                 dataPlaneLocatorBuilder(new DataPlaneLocatorBuilder(), sffIp, port);
@@ -128,7 +140,7 @@ public class ServiceFunctionForwarderUtils extends AbstractUtils {
         ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder =
                 serviceFunctionForwarderBuilder(
                         new ServiceFunctionForwarderBuilder(), sffName, snName, bridgeName,
-                        sffDataPlaneLocatorList, serviceFunctionDictionaryList);
+                        sffDataPlaneLocatorList, serviceFunctionDictionaryList, ovsdbNodeRef);
         return serviceFunctionForwarderBuilder;
     }
 }
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import java.util.List;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfcName;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,16 +21,24 @@ import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev14070
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunctionBuilder;
 import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.VxlanGpe;
+import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.sf.ovs.rev160107.SfDplOvsAugmentation;
+import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.sf.ovs.rev160107.SfDplOvsAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.sf.ovs.rev160107.connected.port.OvsPortBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 
 public class ServiceFunctionUtils extends AbstractUtils {
     public SfDataPlaneLocatorBuilder sfDataPlaneLocatorBuilder(SfDataPlaneLocatorBuilder sfDataPlaneLocatorBuilder,
                                                                String ip, int port, String dplName, String sffName) {
+        SfDplOvsAugmentationBuilder sfDplOvsAugmentationBuilder = new SfDplOvsAugmentationBuilder();
+        OvsPortBuilder ovsPortBuilder = new OvsPortBuilder().setPortId(dplName);
+        sfDplOvsAugmentationBuilder.setOvsPort(ovsPortBuilder.build());
+
         return sfDataPlaneLocatorBuilder
+                .addAugmentation(SfDplOvsAugmentation.class, sfDplOvsAugmentationBuilder.build())
                 .setLocatorType(ipBuilder(ip, port).build())
-                .setName(new SfDataPlaneLocatorName(dplName))
+                .setName(SfDataPlaneLocatorName.getDefaultInstance(dplName))
                 .setTransport(VxlanGpe.class)
-                .setServiceFunctionForwarder(new SffName(sffName));
+                .setServiceFunctionForwarder(SffName.getDefaultInstance(sffName));
     }
 
     public ServiceFunctionBuilder serviceFunctionBuilder(ServiceFunctionBuilder serviceFunctionBuilder,
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.sfc.it.utils;
+package org.opendaylight.netvirt.openstack.netvirt.sfc.it.utils;
 
 import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.of.renderer.rev151123.SfcOfRendererConfig;
 import org.opendaylight.yang.gen.v1.urn.ericsson.params.xml.ns.yang.sfc.of.renderer.rev151123.SfcOfRendererConfigBuilder;
index 5cb85f37fc418ab8ef4574ea3493fcfe3d2c916c..9a94e9f557b2a5e30d3809616ef2c2ea9fcfc83f 100644 (file)
@@ -15,7 +15,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
     <relativePath/>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-sfc-karaf</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
@@ -44,10 +44,9 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
       <artifactId>framework</artifactId>
       <type>kar</type>
     </dependency>
-
     <dependency>
       <groupId>${project.groupId}</groupId>
-      <artifactId>openstack.net-virt-sfc-features-test</artifactId>
+      <artifactId>openstack.net-virt-sfc-features</artifactId>
       <version>${project.version}</version>
       <classifier>features</classifier>
       <type>xml</type>
index 582adf60f15dc430d596fcdcd80ea4c4e417a1f7..64e73dc7022af4413fc8599327f2a0d28e3bfbbc 100644 (file)
@@ -14,7 +14,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt-sfc-aggregator</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
@@ -51,8 +51,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
   </build>
 
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
index a15efac65fe51476966ca3c8264f2955afdccb63..ee78bc9fec745d635e9d37c492d2f09acb27c988 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack.net-virt</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
@@ -38,24 +38,23 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
 
   <properties>
     <neutron.model.version>0.7.0-SNAPSHOT</neutron.model.version>
-    <powermock.version>1.6.4</powermock.version>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
     <sonar.jacoco.itReportPath>../net-virt-it/target/jacoco-it.exec</sonar.jacoco.itReportPath>
   </properties>
 
   <dependencies>
-    <!-- project specific dependencies -->
     <dependency>
-      <groupId>${project.groupId}</groupId>
+      <groupId>org.opendaylight.ovsdb</groupId>
       <artifactId>southbound-api</artifactId>
-      <version>${project.version}</version>
+      <version>${ovsdb.version}</version>
     </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
@@ -77,13 +76,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>utils.neutron-utils</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <!-- neutron dependencies -->
     <dependency>
       <groupId>org.opendaylight.neutron</groupId>
       <artifactId>model</artifactId>
       <version>${neutron.model.version}</version>
     </dependency>
-    <!-- mdsal dependencies -->
     <dependency>
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>ietf-inet-types</artifactId>
@@ -104,7 +101,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.opendaylight.mdsal.model</groupId>
       <artifactId>ietf-yang-types</artifactId>
     </dependency>
-    <!-- external dependencies -->
    <dependency>
       <groupId>commons-net</groupId>
       <artifactId>commons-net</artifactId>
@@ -120,7 +116,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
-    <!-- testing dependencies -->
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
@@ -130,31 +125,26 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-core</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-module-junit4</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-api-mockito</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-api-support</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-reflect</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -180,9 +170,9 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
             <Embed-Dependency>utils.config;type=!pom;inline=false</Embed-Dependency>
             <Embed-Transitive>true</Embed-Transitive>
             <Export-Package>
-              org.opendaylight.ovsdb.openstack.netvirt.translator,
-              org.opendaylight.ovsdb.openstack.netvirt.api,
-              org.opendaylight.ovsdb.openstack.netvirt
+              org.opendaylight.netvirt.openstack.netvirt.translator,
+              org.opendaylight.netvirt.openstack.netvirt.api,
+              org.opendaylight.netvirt.openstack.netvirt
             </Export-Package>
           </instructions>
         </configuration>
similarity index 96%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractEvent.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/AbstractEvent.java
index 2417749a37aad9b5acbe1a0113329f309f959ccd..8218cb68c3c73e61aa4beb4faf84705f7257882b 100644 (file)
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 
 /**
  * Abstract class for events used by neutron northbound and southbound events.
similarity index 78%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/AbstractHandler.java
index 7566091e6193579e1ff9acdcd3a9a117df814abf..6b1b6a23a6f79703d0f3a8eba4c61e27d1854ef2 100644 (file)
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
 
 import com.google.common.base.Preconditions;
 import org.slf4j.Logger;
@@ -60,8 +60,8 @@ public abstract class AbstractHandler {
     /**
      * Enqueue the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     protected void enqueueEvent(AbstractEvent abstractEvent) {
         LOG.info("enqueueEvent: evenDispatcher: {} - {}", eventDispatcher, abstractEvent);
@@ -72,8 +72,8 @@ public abstract class AbstractHandler {
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     public abstract void processEvent(AbstractEvent abstractEvent);
 
similarity index 90%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/ClusterAwareMdsalUtils.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/ClusterAwareMdsalUtils.java
index e892eaa450ef2e88964fe7f054a054ad5a14778a..93a7507922ad530b574f0d9167d4174322ead11d 100644 (file)
@@ -5,11 +5,11 @@
  * 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.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@ public class ClusterAwareMdsalUtils {
     }
 
     /**
-     * Wrapper method to executes delete as a blocking transaction.
+     * Wrapper method to execute delete as a blocking transaction.
      *
      * @param store {@link LogicalDatastoreType} which should be modified
      * @param path {@link InstanceIdentifier} to read from
@@ -52,11 +52,11 @@ public class ClusterAwareMdsalUtils {
     }
 
     /**
-     * Wrapper method to executes merge as a blocking transaction.
+     * Wrapper method to execute merge as a blocking transaction.
      *
      * @param logicalDatastoreType {@link LogicalDatastoreType} which should be modified
      * @param path {@link InstanceIdentifier} for path to read
-     * @param data object of type D
+     * @param <D> the data object type
      * @return the result of the request
      */
     public <D extends org.opendaylight.yangtools.yang.binding.DataObject> boolean merge(
@@ -68,11 +68,11 @@ public class ClusterAwareMdsalUtils {
     }
 
     /**
-     * Wrapper method to executes put as a blocking transaction.
+     * Wrapper method to execute put as a blocking transaction.
      *
      * @param logicalDatastoreType {@link LogicalDatastoreType} which should be modified
      * @param path {@link InstanceIdentifier} for path to read
-     * @param data object of type D
+     * @param <D> the data object type
      * @return the result of the request
      */
     public <D extends org.opendaylight.yangtools.yang.binding.DataObject> boolean put(
similarity index 69%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/ConfigActivator.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/ConfigActivator.java
index eb71acc94b160fdd141fda8203bb459bbe68262e..91e77d7430b7c1b911af7f397bfc2922f9c23936 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.util.ArrayList;
 import java.util.Dictionary;
@@ -16,81 +16,81 @@ import java.util.List;
 import org.apache.commons.lang3.tuple.Pair;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IcmpEchoProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.VlanConfigurationCache;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolver;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolverListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.MultiTenantAwareRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityGroupCacheManger;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.BridgeConfigurationManagerImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.ConfigurationServiceImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.DistributedArpService;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NodeCacheManagerImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.OpenstackRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.OvsdbInventoryServiceImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.ProviderNetworkManagerImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.SecurityGroupCacheManagerImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.SecurityServicesImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.SouthboundImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.TenantNetworkManagerImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.VlanConfigurationCacheImpl;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronFirewallInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronFirewallPolicyInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronFirewallRuleInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronFloatingIPInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerHealthMonitorInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerListenerInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerPoolInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerPoolMemberInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronNetworkInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronPortInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronRouterInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronSecurityGroupInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronSecurityRuleInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl.NeutronSubnetInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallPolicyAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallRuleAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolMemberAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronNetworkAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronPortAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronRouterAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSecurityGroupAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSecurityRuleAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSubnetAware;
-import org.opendaylight.ovsdb.utils.neutron.utils.NeutronModelsDataStoreHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolverListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.IcmpEchoProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.MultiTenantAwareRouter;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OutboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
+import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.VlanConfigurationCache;
+import org.opendaylight.netvirt.openstack.netvirt.impl.BridgeConfigurationManagerImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.ConfigurationServiceImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.DistributedArpService;
+import org.opendaylight.netvirt.openstack.netvirt.impl.EventDispatcherImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NodeCacheManagerImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.OpenstackRouter;
+import org.opendaylight.netvirt.openstack.netvirt.impl.OvsdbInventoryServiceImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.ProviderNetworkManagerImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.SecurityGroupCacheManagerImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.SecurityServicesImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.SouthboundImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.VlanConfigurationCacheImpl;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronFirewallInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronFirewallPolicyInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronFirewallRuleInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronFloatingIPInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerListenerInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerPoolInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerPoolMemberInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronNetworkInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronPortInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronRouterInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronSecurityGroupInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronSecurityRuleInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronSubnetInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallPolicyAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolMemberAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronNetworkAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronRouterAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSecurityGroupAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSecurityRuleAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSubnetAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.openstack.netvirt.impl.TenantNetworkManagerImpl;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl.NeutronLoadBalancerHealthMonitorInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallRuleAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronPortAware;
+import org.opendaylight.netvirt.utils.neutron.utils.NeutronModelsDataStoreHelper;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
@@ -196,21 +196,18 @@ public class ConfigActivator implements BundleActivator {
         registerService(context,
                 new String[]{EventDispatcher.class.getName()}, null, eventDispatcher);
 
-        Dictionary<String, Object> neutronL3AdapterProperties = new Hashtable<>();
-        neutronL3AdapterProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY,
-                AbstractEvent.HandlerType.NEUTRON_L3_ADAPTER);
         final NeutronL3Adapter neutronL3Adapter = new NeutronL3Adapter(
                 new NeutronModelsDataStoreHelper(this.providerContext.getSALService(DataBroker.class)));
-        registerService(context,
-                new String[]{NeutronL3Adapter.class.getName(), GatewayMacResolverListener.class.getName()},
-                neutronL3AdapterProperties, neutronL3Adapter);
+        registerAbstractHandlerService(context, new Class[] {NeutronL3Adapter.class, GatewayMacResolverListener.class},
+                AbstractEvent.HandlerType.NEUTRON_L3_ADAPTER, neutronL3Adapter);
 
+        // TODO Why is DistributedArpService registered as an event handler without being an AbstractHandlerService?
         Dictionary<String, Object> distributedArpServiceProperties = new Hashtable<>();
         distributedArpServiceProperties.put(Constants.EVENT_HANDLER_TYPE_PROPERTY,
                 AbstractEvent.HandlerType.DISTRIBUTED_ARP_SERVICE);
         final DistributedArpService distributedArpService = new DistributedArpService();
         registerService(context,
-                new String[]{DistributedArpService.class.getName()},
+                new String[] {DistributedArpService.class.getName()},
                 distributedArpServiceProperties, distributedArpService);
 
         OpenstackRouter openstackRouter = new OpenstackRouter();
similarity index 90%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/ConfigInterface.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/ConfigInterface.java
index 2681edb15ba07a8822ba8cd5cd3709dd4277e5da..66ef437fe90e6391bb7dfafeeebb80ea8266e03c 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import org.osgi.framework.ServiceReference;
 
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/FWaasHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/FWaasHandler.java
index 0b7881f31259d3f6b90773cd46933651b1697a15..ce8d7cf7dee1437add44cdf256277a9805303e8c 100644 (file)
@@ -6,18 +6,18 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewall;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallPolicy;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallPolicyAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallRuleAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewall;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallPolicyAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallPolicy;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallRuleAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -170,7 +170,7 @@ public class FWaasHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent new FWaas Event@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent new FWaas Event@see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/FloatingIPHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/FloatingIPHandler.java
index 30e28ea438cfe4e0cdb284f262929ef744ec83c4..231b003d8c963cbae754ef1f467595eda3bd1198 100644 (file)
@@ -6,16 +6,16 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -116,8 +116,8 @@ public class FloatingIPHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSHandler.java
index e305fd340cea7ec7c2f12d89cd12cc793d82e2d1..6e3c941242715b15beb5b61735e2c0b3a2957526 100644 (file)
@@ -6,28 +6,28 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 import java.util.List;
 import java.util.Map;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import org.osgi.framework.ServiceReference;
@@ -131,8 +131,8 @@ public class LBaaSHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 90%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolHandler.java
index 93b4ce626ecabb3b93fd2269bed9d627f8c08c1c..7a28fc66c876e7f563fef7acab5bbfee39d5db77 100755 (executable)
@@ -6,26 +6,26 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 import java.util.List;
 import java.util.Map;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import org.osgi.framework.ServiceReference;
@@ -160,8 +160,8 @@ public class LBaaSPoolHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 90%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolMemberHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolMemberHandler.java
index 793f7ac0916cda17a53e61df08342d1c9888a079..fd251dcf7e06cc856516ab19751f268538931122 100755 (executable)
@@ -6,27 +6,27 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 import java.util.List;
 import java.util.Map;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolMemberAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolMemberAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import org.osgi.framework.ServiceReference;
@@ -157,8 +157,8 @@ public class LBaaSPoolMemberHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 99%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/MdsalHelper.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/MdsalHelper.java
index 28cc30f9b02d50a094a03508c8a0e087e0db6dd6..8451bef5e1b51f48cfb8ead604c5031309bc8369 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import com.google.common.base.Preconditions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
similarity index 87%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NetvirtProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NetvirtProvider.java
index 1542cec28c794e51ad38161daeeb443c2061c53f..797109466fa98fd4d61a082c83532cf3cab53a52 100644 (file)
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import com.google.common.base.Optional;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipState;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.clustering.Entity;
 import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService;
@@ -47,6 +47,14 @@ public class NetvirtProvider implements BindingAwareProvider, AutoCloseable {
         return false;
     }
 
+    public static boolean isMasterElected(){
+        if (entityOwnershipService != null) {
+            Optional<EntityOwnershipState> state = entityOwnershipService.getOwnershipState(ownerInstanceEntity);
+            return state.isPresent() && state.get().hasOwner();
+        }
+        return false;
+    }
+
     @Override
     public void close() throws Exception {
         LOG.info("NetvirtProvider closed");
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NetworkHandler.java
index cbd4d80162cebf28503ebbb81710494aa603baf2..067c3e5b519d0ec947c5792856334c0a749e1c54 100644 (file)
@@ -6,22 +6,22 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronNetworkAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronNetworkAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
@@ -167,8 +167,8 @@ public class NetworkHandler extends AbstractHandler implements INeutronNetworkAw
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 83%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NeutronCacheUtils.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NeutronCacheUtils.java
index c0e48e37f5be97139d4400c8832217983381368f..d56818249675d2e1c146c8e5450e1bc93b919759 100755 (executable)
@@ -6,15 +6,15 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
 
 import java.util.AbstractMap;
 import java.util.List;
similarity index 97%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NeutronL3AdapterEvent.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NeutronL3AdapterEvent.java
index a5515dc44bd7a67fa4f6e646c2aa17b714ebf7fa..f8b8c288c4d1208188bddfaa87c915dc45cdf3ac 100644 (file)
@@ -5,9 +5,9 @@
  * 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.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 
similarity index 94%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NodeCacheManagerEvent.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NodeCacheManagerEvent.java
index 5c2bb38d0588903a10eea46ff037dbe57bcb08ae..19849952580852271724b2df74c04b709b3595c4 100644 (file)
@@ -5,9 +5,9 @@
  * 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.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 /**
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NodeConfiguration.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NodeConfiguration.java
index 1091da82eeb52b10b11af1d1c53d5ebccd92193b..3901750c46eed0b760a987ec06256dd16c5d740a 100644 (file)
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/NorthboundEvent.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/NorthboundEvent.java
index 88a9ebc073f14198d13633c1ee3d096644c1bca8..daa59058d98b18fdbc8d4593c5b97b61d5f10faa 100644 (file)
@@ -6,19 +6,19 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
-
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+package org.opendaylight.netvirt.openstack.netvirt;
+
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
 
 public class NorthboundEvent extends AbstractEvent {
 
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/PortHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/PortHandler.java
index d581f753f16ae2d7f413ee3774f4428d6144f370..952a4b9879578691faccd0bee43277f179e32e03 100644 (file)
@@ -6,21 +6,21 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronPortAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.DistributedArpService;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronPortAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.impl.DistributedArpService;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
@@ -151,8 +151,8 @@ public class PortHandler extends AbstractHandler implements INeutronPortAware, C
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 86%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/PortSecurityHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/PortSecurityHandler.java
index d4cbf6a3b626ee67dd53f08dd15eab73099ef789..0d3d8b370a8ecf78b68c34e474c184c0443cc5d8 100644 (file)
@@ -6,23 +6,23 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSecurityGroupAware;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSecurityRuleAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSecurityRuleAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSecurityGroupAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -115,8 +115,8 @@ public class PortSecurityHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 92%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/RouterHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/RouterHandler.java
index 95b77606a03a030c603183c18e11095a989ff521..cb2470e13c8d539fc7f807a79493373e626b649c 100644 (file)
@@ -6,17 +6,17 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronRouterAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronRouterAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -185,8 +185,8 @@ public class RouterHandler extends AbstractHandler implements INeutronRouterAwar
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 97%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/SouthboundEvent.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/SouthboundEvent.java
index 38e535559f905e3b88a5b7c20db0eb2d632ebaed..fd85f9b9e97722dd1e19f1588fa1351264080794 100644 (file)
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
similarity index 93%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/SouthboundHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/SouthboundHandler.java
index 02d0ea75471a65fef07f582169ec1fd1de256400..f37cdc058266f7eb5e01b843a49a333750da46c2 100644 (file)
@@ -6,16 +6,27 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.api.*;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.DistributedArpService;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.impl.DistributedArpService;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
@@ -229,8 +240,8 @@ public class SouthboundHandler extends AbstractHandler
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 81%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/SubnetHandler.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/SubnetHandler.java
index c74d11d12c327d4ba54869c19cf3ea9ff376a4ad..1d3770807e3144f3c5110effcaf234d9fc5e542e 100644 (file)
@@ -6,16 +6,16 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import java.net.HttpURLConnection;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSubnetAware;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSubnetAware;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,8 +62,8 @@ public class SubnetHandler extends AbstractHandler implements INeutronSubnetAwar
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Action.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Action.java
index 1070aebb75347c16f4c2e1281ccc285480fc2d43..03862b908238d5984be9a0e0084a6c59041700fc 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  * This enumeration represents the type of action being performed
similarity index 91%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/ArpProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/ArpProvider.java
index ed516bdc2be7de29f8b93e55fcbba4d3c97fc572..27422a72e9bac3b8164a1f1728d0d3d31f1381e2 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.net.InetAddress;
 
similarity index 94%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/BridgeConfigurationManager.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/BridgeConfigurationManager.java
index 553661cf30c499f19a19d5e4bdf32b292d0d2bcf..ff5d4c77b11a7c063270286b992958dffe74a906 100644 (file)
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import java.util.List;
@@ -74,7 +74,7 @@ public interface BridgeConfigurationManager {
      * For OpenFlow 1.3 the Integration Bridge is required and must have a physical device connected.
      * @param bridgeNode the {@link Node} that represents bridge
      * @param ovsdbNode the {@link Node} where the bridge is configured
-     * @param network the {@link org.opendaylight.ovsdb.openstack.netvirt.translator}
+     * @param network the {@link org.opendaylight.netvirt.openstack.netvirt.translator}
      * @return True or False
      */
     boolean isNodeVlanReady(Node bridgeNode, Node ovsdbNode, NeutronNetwork network);
@@ -92,7 +92,7 @@ public interface BridgeConfigurationManager {
      * Returns true if the bridges required for the provider network type are created
      * If the bridges are not created, this method will attempt to create them
      * @param node the {@link Node} to query
-     * @param network the {@link org.opendaylight.ovsdb.openstack.netvirt.translator}
+     * @param network the {@link org.opendaylight.netvirt.openstack.netvirt.translator}
      * @return True or False
      */
     boolean createLocalNetwork(Node node, NeutronNetwork network);
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/ConfigurationService.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/ConfigurationService.java
index 209530b0ed4abe92547aafaa06b8cc1a29b047ad..9e36b107e60b83c6e4fb457f3011097ec32681b6 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
similarity index 97%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Constants.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Constants.java
index ccdf55bab6cf4f871b39e7f777141baef010cdb9..102a16b7fb62934120971a536adb144b2aab318d 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  * A collection of configuration constants
@@ -92,7 +92,7 @@ public final class Constants {
     public static final Integer PROTO_DHCP_SERVER_MATCH_PRIORITY = 61006;
     public static final Integer PROTO_VM_IP_MAC_MATCH_PRIORITY = 36001;
     public static final Integer CT_STATE_UNTRACKED_PRIORITY = 62030;
-    public static final Integer CT_STATE_TRACKED_EST_PRIORITY = 62020;
+    public static final Integer CT_STATE_TRACKED_EXIST_PRIORITY = 62020;
     public static final Integer CT_STATE_TRACKED_NEW_PRIORITY = 62010;
     public static final Integer CT_STATE_NEW_PRIORITY_DROP = 36007;
 
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/EgressAclProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/EgressAclProvider.java
index 069fd6c24dcc967a41a259bfed8efbd15b8b4c05..d82f30aa90316eec29abf13f770368737c64a3c9 100644 (file)
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
 
 import java.util.List;
 
similarity index 74%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/EventDispatcher.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/EventDispatcher.java
index f9d94cf5b719a2ca20014247313f9782e423ed0a..5fffb3b62851f9a0a787f87eaaa77467149db547 100644 (file)
@@ -6,10 +6,10 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent;
 import org.osgi.framework.ServiceReference;
 
 /**
@@ -20,7 +20,7 @@ import org.osgi.framework.ServiceReference;
 public interface EventDispatcher {
     /**
      * Enqueue the event.
-     * @param event the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
+     * @param event the {@link AbstractEvent} event to be handled.
      */
     void enqueueEvent(AbstractEvent event);
     void eventHandlerAdded(final ServiceReference ref, AbstractHandler handler);
similarity index 97%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/GatewayMacResolver.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/GatewayMacResolver.java
index 626f9dca68be0100240d7551e23c100dc974bd1b..7f48f109c0bd6dc98e6481a1ba770ac52ab88843 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
similarity index 95%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/GatewayMacResolverListener.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/GatewayMacResolverListener.java
index b2e46b1d14d7b385fca9f12994592492fb7d8ff1..fc9328632a404dfe1984c4d35084066dfff80057 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
similarity index 91%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/IcmpEchoProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/IcmpEchoProvider.java
index 4e429bf72c178fef7801720ab1b82c67d33c3a88..bcea52b9a5ff7da63d5d3e22acb12d71841fd203 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.net.InetAddress;
 
similarity index 93%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/InboundNatProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/InboundNatProvider.java
index 1738760cf06230bdc20badeb8efe566969e69e36..7ed1a550de2f1acacee7537a9a3fb99e5699c34f 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.net.InetAddress;
 
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/IngressAclProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/IngressAclProvider.java
index bb4e7593152959023ba53518e5f7eb6637392dcb..a4005e0c028fcad308ed0694b631e9742b8018ca 100644 (file)
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
 
 /**
  *  This interface allows ingress Port Security flows to be written to devices.
similarity index 96%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/L2ForwardingProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/L2ForwardingProvider.java
index 4f77301837b9a3915b23e17154fd9e3c54d8a806..92b95deb39a6fa0186eebbc612d33ebdc6caf137 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  *  This interface allows L2Forwarding flows to be written to devices
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/L2RewriteProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/L2RewriteProvider.java
index 9fafe5fac7375abbefb3af4de1502a89158aa646..1293c1cd23d3f9e786dacc03be3edac48b3aa53c 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  *  This interface allows L2Rewrite flows to be written to devices
similarity index 83%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/LoadBalancerProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/LoadBalancerProvider.java
index 588ec20d0ed138fd2269f41e2aa5c8fb2df86c32..a2df57b2eb4c3f65a514b28df3d30fc1331129b7 100755 (executable)
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 /**
similarity index 96%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/MultiTenantAwareRouter.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/MultiTenantAwareRouter.java
index 37e682dc85fb34fb680a497e97c56a6a6198fb5a..4e399fddc80f6590515040b0bed9a41dd3e25f7a 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.net.InetAddress;
 import java.util.UUID;
similarity index 94%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NetworkingProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NetworkingProvider.java
index 791e07aeac811c11945e363bb85501ba53d093db..791925a4f722c60d09029468b3e2a060864f8f59 100644 (file)
@@ -6,12 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.osgi.framework.ServiceReference;
 
 /**
  * The NetworkingProvider interface is implemented by Neutron Networking Providers
similarity index 85%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NetworkingProviderManager.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NetworkingProviderManager.java
index 72d3a28545c325792c43ae58dcec9d5b1dc0b3bc..d68724e9080a28f931412267b81caa18d96abcbd 100644 (file)
@@ -6,14 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.osgi.framework.ServiceReference;
 
 /**
  * The NetworkingProviderManager handles the mapping between {@link Node}
- * and registered {@link org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider} implementations
+ * and registered {@link NetworkingProvider} implementations
  */
 public interface NetworkingProviderManager {
     /**
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NodeCacheListener.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NodeCacheListener.java
index 5d36812d3950d276236da6697d66a36d5e063d66..2784fd4af1fe2fd13d971718f602b2a567a6ba2a 100644 (file)
@@ -5,10 +5,9 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.osgi.framework.ServiceReference;
 
 /**
  * When this interface is used, instance owner will get callbacks on
similarity index 95%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/NodeCacheManager.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/NodeCacheManager.java
index a27b229afa46acbb82fc06382b46aced6fc44f17..8f063fdcb778c17265fcb59c92d40befd0c83f92 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.util.List;
 import java.util.Map;
similarity index 93%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbInventoryListener.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbInventoryListener.java
index 5c0496832fb64cc4c7fe3084ac3b4c3426137ccd..31b48aac3fe04aedeb05ff56e7e6a463d0b1cbeb 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.yang.binding.DataObject;
similarity index 91%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbInventoryService.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbInventoryService.java
index c6671134b13455632c10f67de9f5b66d317ccaff..f8b58852bfac4b363c92d8a31345ead554401b3f 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  * OvsdbInventoryService is the interface to the southbound for netvirt.
similarity index 90%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbPluginException.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbPluginException.java
index 612daa488b49592d12691343d1ea02f42aca96a5..a026213389a470fb42806b0d2e79b46709f34cde 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 public class OvsdbPluginException extends RuntimeException {
     public OvsdbPluginException(String message){
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/OvsdbTables.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/OvsdbTables.java
index ac069dd729517ffa364eda4f8b22193af6f19bfa..6bef17b704c06debfe9a5af9c8c551d9912e1568 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  * Enum for OVSDB tables
similarity index 95%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Router.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Router.java
index 5cb1697bd3e53b77a7b782f3f6af8dc2be465e3d..ab1769de4ca9968fc1675e0f4882fe891f6c1889 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.net.InetAddress;
 
similarity index 93%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/RoutingProvider.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/RoutingProvider.java
index 344e4e0cb3a59f05a0e2688226f8dcf098754262..f5257c3ea4bb15670c5dadd05010e5029eb9f498 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.net.InetAddress;
 
similarity index 97%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/SecurityGroupCacheManger.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/SecurityGroupCacheManger.java
index ccf598e45e66309c6551402143e872e58d86b24c..85cc3fbc899e10c7cc5330592cfead9f2dd59f78 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  *  This interface maintain a mapping between the security group and the ports
similarity index 92%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/SecurityServicesManager.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/SecurityServicesManager.java
index 4291bcfeb7143abfbcc525c6a78d37800418e0f9..09d452ccc6f0a22ef18d5661bf6da0614b2838b1 100644 (file)
@@ -6,12 +6,12 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Southbound.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Southbound.java
index 6805837e7dff92b2b517b19a8548f1ef679c29e1..b67b4dbfa72e15a9043f00c2c673ef4f6bc148bb 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.util.List;
 import java.util.Map;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/Status.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/Status.java
index 3206ed33ba307e2ce819dc4180dc7e9256110f73..61919beee491c6b7ab3c9c0224022609b0ceb386 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import java.io.Serializable;
 
similarity index 96%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/StatusCode.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/StatusCode.java
index 8ed50ca076641ce4d58d6399f76fb1ee83279bdf..24e21a1bb374cfadf4b8566aed0ca1921dab3840 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 /**
  * The enum which describes the generic error conditions.
similarity index 92%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/TenantNetworkManager.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/TenantNetworkManager.java
index ff6200a138fdae4979942a338fa7c34df3c02091..08fa4087ef8d4b4e18b8e5d8b56eb52e97f09a9a 100644 (file)
@@ -6,10 +6,10 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
similarity index 96%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/api/VlanConfigurationCache.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/api/VlanConfigurationCache.java
index 0e4b2b016e7d0950a233cc0ce556f687671b934b..d3227a69291fde0d49d35445a84166d4a80f4355 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.api;
+package org.opendaylight.netvirt.openstack.netvirt.api;
 
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
@@ -6,22 +6,21 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
-
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.utils.config.ConfigProperties;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
+
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbTables;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.config.ConfigProperties;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeNetdev;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ManagerEntry;
@@ -175,7 +174,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage
         Node ovsdbNode = southbound.readOvsdbNode(bridgeNode);
         if (ovsdbNode == null) {
             //this should never happen
-            LOG.error("createLocalNetwork could not find ovsdbNode from bridge node " + bridgeNode);
+            LOG.error("createLocalNetwork could not find ovsdbNode from bridge node {}", bridgeNode);
             return false;
         }
         if (network.getProviderNetworkType().equalsIgnoreCase(NetworkHandler.NETWORK_TYPE_VLAN)) {
@@ -183,7 +182,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage
                 try {
                     isCreated = createBridges(bridgeNode, ovsdbNode, network);
                 } catch (Exception e) {
-                    LOG.error("Error creating internal vlan net network " + bridgeNode, e);
+                    LOG.error("Error creating internal vlan net network {}--{}", bridgeNode, network, e);
                 }
             } else {
                 isCreated = true;
@@ -194,7 +193,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage
                 try {
                     isCreated = createBridges(bridgeNode, ovsdbNode, network);
                 } catch (Exception e) {
-                    LOG.error("Error creating internal vxlan/gre net network " + bridgeNode, e);
+                    LOG.error("Error creating internal vxlan/gre net network {}--{}", bridgeNode, network, e);
                 }
             } else {
                 isCreated = true;
@@ -503,7 +502,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage
                     return addressString;
                 }
             } catch (UnknownHostException e) {
-                LOG.error("Host {} is invalid", addressString);
+                LOG.error("Host {} is invalid", addressString, e);
             }
         }
 
@@ -514,7 +513,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage
                     return addressString;
                 }
             } catch (UnknownHostException e) {
-                LOG.error("Host {} is invalid", addressString);
+                LOG.error("Host {} is invalid", addressString, e);
             }
         }
 
@@ -529,7 +528,7 @@ public class BridgeConfigurationManagerImpl implements BridgeConfigurationManage
                 openFlowPort = Short.parseShort(portString);
             } catch (NumberFormatException e) {
                 LOG.warn("Invalid port:{}, use default({})", portString,
-                        openFlowPort);
+                        openFlowPort, e);
             }
         }
         return openFlowPort;
similarity index 92%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/ConfigurationServiceImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/ConfigurationServiceImpl.java
index c9691fce72a395d4c0db83e6f8a7e013ffd27430..36c9e8debe2466a751e5a5236af81c06c5e7f745 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import com.google.common.collect.Maps;
 import java.net.InetAddress;
@@ -15,13 +15,13 @@ import java.util.Map;
 
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.utils.config.ConfigProperties;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbTables;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.config.ConfigProperties;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import org.osgi.framework.ServiceReference;
similarity index 58%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/DistributedArpService.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/DistributedArpService.java
index 301e3ef22afab5cfcad333c8c1092e3f84903c56..91b07a50c16fde6ce8092d1eeeaa0da7fe2723b7 100644 (file)
@@ -6,29 +6,30 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.HashMap;
 import java.util.List;
 
 import com.google.common.base.Preconditions;
 
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.osgi.framework.ServiceReference;
@@ -41,6 +42,8 @@ import org.slf4j.LoggerFactory;
 public class DistributedArpService implements ConfigInterface {
 
     private static final Logger LOG = LoggerFactory.getLogger(DistributedArpService.class);
+    private static final String DHCP_DEVICE_OWNER = "network:dhcp";
+    private static final String ROUTER_INTERFACE_DEVICE_OWNER = "network:router_interface";
     // The implementation for each of these services is resolved by the OSGi Service Manager
     private volatile ConfigurationService configurationService;
     private volatile TenantNetworkManager tenantNetworkManager;
@@ -53,6 +56,8 @@ public class DistributedArpService implements ConfigInterface {
     private Southbound southbound;
     private Boolean flgDistributedARPEnabled = true;
 
+    private HashMap<String, List<Neutron_IPs>> dhcpPortIpCache = new HashMap();
+
     private void initMembers() {
         Preconditions.checkNotNull(configurationService);
         if (configurationService.isDistributedArpDisabled()) {
@@ -66,16 +71,16 @@ public class DistributedArpService implements ConfigInterface {
      /**
      * Process the port event to write Arp rules for neutron ports.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      * @param neutronPort An instance of NeutronPort object.
      */
     public void handlePortEvent(NeutronPort neutronPort, Action action) {
         LOG.debug("neutronPort Event {} action event {} ", neutronPort, action);
         if (action == Action.DELETE) {
-            this.handleNeutornPortForArp(neutronPort, action);
+            this.handleNeutronPortForArp(neutronPort, action);
         } else {
             for (NeutronPort neutronPort1 : neutronPortCache.getAllPorts()) {
-               this.handleNeutornPortForArp(neutronPort1, action);
+               this.handleNeutronPortForArp(neutronPort1, action);
             }
         }
     }
@@ -121,11 +126,11 @@ public class DistributedArpService implements ConfigInterface {
         }
 
         if (status.isSuccess()) {
-            LOG.debug("ProgramStaticArp {} for mac:{} addr:{} dpid:{} segOrOfPort:{} action:{}",
+            LOG.debug("programStaticRuleStage2 {} for mac:{} addr:{} dpid:{} segOrOfPort:{} action:{}",
                          arpProvider == null ? "skipped" : "programmed",
                          macAddress, address, dpid, segOrOfPort, action);
         } else {
-            LOG.error("ProgramStaticArp failed for mac:{} addr:{} dpid:{} segOrOfPort:{} action:{} status:{}",
+            LOG.error("programStaticRuleStage2 failed for mac:{} addr:{} dpid:{} segOrOfPort:{} action:{} status:{}",
                          macAddress, address, dpid, segOrOfPort, action, status);
         }
         return status;
@@ -134,10 +139,16 @@ public class DistributedArpService implements ConfigInterface {
     /**
      * Write Arp rules based on event for neutron port.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      * @param neutronPort An instance of NeutronPort object.
      */
-    private void handleNeutornPortForArp(NeutronPort neutronPort, Action action) {
+    private void handleNeutronPortForArp(NeutronPort neutronPort, Action action) {
+        if (!flgDistributedARPEnabled) {
+            return;
+        }
+
+        //treat UPDATE as ADD
+        final Action actionToPerform = action == Action.DELETE ? Action.DELETE : Action.ADD;
 
         final String networkUUID = neutronPort.getNetworkUUID();
         NeutronNetwork neutronNetwork = neutronNetworkCache.getNetwork(networkUUID);
@@ -146,48 +157,88 @@ public class DistributedArpService implements ConfigInterface {
         }
         final String providerSegmentationId = neutronNetwork != null ?
                                               neutronNetwork.getProviderSegmentationID() : null;
-        final String tenantMac = neutronPort.getMacAddress();
+        final String macAddress = neutronPort.getMacAddress();
         if (providerSegmentationId == null || providerSegmentationId.isEmpty() ||
-            tenantMac == null || tenantMac.isEmpty()) {
+            macAddress == null || macAddress.isEmpty()) {
             // done: go no further w/out all the info needed...
             return;
         }
 
-        final boolean isDelete = action == Action.DELETE;
-        final Action action1 = isDelete ? Action.DELETE : Action.ADD;
-
-
         List<Node> nodes = nodeCacheManager.getBridgeNodes();
         if (nodes.isEmpty()) {
             LOG.trace("updateL3ForNeutronPort has no nodes to work with");
+            //Do not exit, we still may need to clean up this entry from the dhcpPortToIpCache
+        }
+
+        //Neutron removes the DHCP port's IP before deleting it. As such,
+        //when it comes time to delete the port, the ARP rule can not
+        //be removed because we simply don't know the IP. To mitigate this,
+        //we cache the dhcp ports IPs (BUG 5408).
+        String owner = neutronPort.getDeviceOwner();
+        boolean isDhcpPort = owner != null && owner.equals(DHCP_DEVICE_OWNER);
+        List<Neutron_IPs> fixedIps = neutronPort.getFixedIPs();
+        if((null == fixedIps || fixedIps.isEmpty())
+                        && actionToPerform == Action.DELETE && isDhcpPort){
+            fixedIps = dhcpPortIpCache.get(neutronPort.getPortUUID());
+            if(fixedIps == null) {
+                return;
+            }
         }
+
+        List<Neutron_IPs> network_Ips = neutronPort.getFixedIPs();
         for (Node node : nodes) {
+            // Arp rule is only needed when segmentation exists in the given node (bug 4752)
+            // or in case the port is a router interface
+            boolean isRouterInterface = owner != null && owner.equals(ROUTER_INTERFACE_DEVICE_OWNER);
+            boolean arpNeeded = isRouterInterface ||
+                    tenantNetworkManager.isTenantNetworkPresentInNode(node, providerSegmentationId);
+            final Action actionForNode = arpNeeded ? actionToPerform : Action.DELETE;
             final Long dpid = getDatapathIdIntegrationBridge(node);
             if (dpid == null) {
                 continue;
             }
-            if (neutronPort.getFixedIPs() == null) {
-                continue;
-            }
-            for (Neutron_IPs neutronIP : neutronPort.getFixedIPs()) {
-                final String tenantIpStr = neutronIP.getIpAddress();
-                if (tenantIpStr.isEmpty()) {
+
+            for (Neutron_IPs neutronIP : fixedIps) {
+                final String ipAddress = neutronIP.getIpAddress();
+                if (ipAddress.isEmpty()) {
                     continue;
                 }
-                // Configure distributed ARP responder
-                if (flgDistributedARPEnabled) {
-                    // Arp rule is only needed when segmentation exists in the given node (bug 4752).
-                    boolean arpNeeded = tenantNetworkManager.isTenantNetworkPresentInNode(node, providerSegmentationId);
-                    final Action actionForNode = arpNeeded ? action1 : Action.DELETE;
-                    programStaticRuleStage1(dpid, providerSegmentationId, tenantMac, tenantIpStr, actionForNode);
-                }
-            }
+
+                // Arp rules for dhcp port should be removed from compute node
+                // when delete the last VM instance belongs to the network (bug 5456)
+                if (false == arpNeeded && Action.DELETE == actionForNode && null != network_Ips && !network_Ips.isEmpty()) {
+                    for (NeutronPort port : neutronPortCache.getAllPorts()) {
+                         if (!port.getDeviceOwner().equalsIgnoreCase(ROUTER_INTERFACE_DEVICE_OWNER)) {
+                             final String portMacAddress = port.getMacAddress();
+                             if ( null == portMacAddress || portMacAddress.isEmpty()) {
+                                continue;
+                             }
+                             for (Neutron_IPs neutronIPAddr : port.getFixedIPs()) {
+                                 final String portIPAddress = neutronIPAddr.getIpAddress();
+                                 if (null == portIPAddress || portIPAddress.isEmpty()) {
+                                     continue;
+                                 }
+                             programStaticRuleStage1(dpid, providerSegmentationId, portMacAddress, portIPAddress, Action.DELETE);
+                             }
+                          }
+                    }
+                 } else {
+                     programStaticRuleStage1(dpid, providerSegmentationId, macAddress, ipAddress, actionForNode);
+              }
+              }
+          }
+
+        //use action instead of actionToPerform - only write to the cache when the port is created
+        if(isDhcpPort && action == Action.ADD){
+            dhcpPortIpCache.put(neutronPort.getPortUUID(), fixedIps);
+        } else if (isDhcpPort && action == Action.DELETE) {
+            dhcpPortIpCache.remove(neutronPort.getPortUUID());
         }
     }
 
     /**
      * Check if node is integration bridge, then return its datapathID.
-     * @param bridgeNode An instance of Node object.
+     * @param node An instance of Node object.
      */
     private Long getDatapathIdIntegrationBridge(Node node) {
         if (southbound.getBridge(node, configurationService.getIntegrationBridgeName()) != null) {
@@ -202,9 +253,9 @@ public class DistributedArpService implements ConfigInterface {
      * @param bridgeNode An instance of Node object.
      * @param intf An {@link org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
      * .OvsdbTerminationPointAugmentation} instance of OvsdbTerminationPointAugmentation object.
-     * @param neutronNetwork An {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork} instance of NeutronNetwork
+     * @param neutronNetwork An {@link NeutronNetwork} instance of NeutronNetwork
      * object.
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      */
     public void processInterfaceEvent(final Node bridgeNode, final OvsdbTerminationPointAugmentation intf,
                                      final NeutronNetwork neutronNetwork, Action action) {
similarity index 92%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/EventDispatcherImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/EventDispatcherImpl.java
index 75132f90c1a33d38b0b354cf75ac0f9243e0a92c..132dfd9fc67942a1b0f4bb7b8264eeb0581b0a1c 100644 (file)
@@ -6,13 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
 
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
@@ -127,7 +127,7 @@ public class EventDispatcherImpl implements EventDispatcher, ConfigInterface {
     /**
      * Enqueue the event.
      *
-     * @param event the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
+     * @param event the {@link AbstractEvent} event to be handled.
      */
     @Override
     public void enqueueEvent(AbstractEvent event) {
similarity index 91%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NeutronL3Adapter.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/NeutronL3Adapter.java
index 44261aea3bd6b9afe0cb6032f4a4062546790b34..d9a601338b3e9b7236873d53b27cf6b3b37b3dfc 100644 (file)
@@ -6,48 +6,52 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
+
+import static org.opendaylight.netvirt.openstack.netvirt.api.Action.ADD;
+import static org.opendaylight.netvirt.openstack.netvirt.api.Action.DELETE;
+import static org.opendaylight.netvirt.openstack.netvirt.api.Action.UPDATE;
 
 import com.google.common.base.Preconditions;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.Pair;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.NeutronL3AdapterEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolver;
-import org.opendaylight.ovsdb.openstack.netvirt.api.GatewayMacResolverListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IcmpEchoProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronIAwareUtil;
-import org.opendaylight.ovsdb.utils.neutron.utils.NeutronModelsDataStoreHelper;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.NeutronL3AdapterEvent;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolver;
+import org.opendaylight.netvirt.openstack.netvirt.api.GatewayMacResolverListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.IcmpEchoProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OutboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronIAwareUtil;
+import org.opendaylight.netvirt.utils.neutron.utils.NeutronModelsDataStoreHelper;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
@@ -62,16 +66,15 @@ import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.net.Inet4Address;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * Neutron L3 Adapter implements a hub-like adapter for the various Neutron events. Based on
@@ -401,12 +404,12 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
     /**
      * Process the event.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      * @param subnet An instance of NeutronSubnet object.
      */
     public void handleNeutronSubnetEvent(final NeutronSubnet subnet, Action action) {
         LOG.debug("Neutron subnet {} event : {}", action, subnet.toString());
-        if (action == Action.ADD) {
+        if (action == ADD) {
             this.storeNetworkInCleanupCache(neutronNetworkCache.getNetwork(subnet.getNetworkUUID()));
         }
     }
@@ -416,13 +419,13 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
      * For a not delete action, since a port is only create when the tennat uses the subnet, it is required to
      * verify if all routers across all nodes have the interface for the port's subnet(s) configured.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      * @param neutronPort An instance of NeutronPort object.
      */
     public void handleNeutronPortEvent(final NeutronPort neutronPort, Action action) {
         LOG.debug("Neutron port {} event : {}", action, neutronPort.toString());
 
-        if (action == Action.UPDATE) {
+        if (action == UPDATE) {
             // FIXME: Bug 4971 Move cleanup cache to SG Impl
             this.updatePortInCleanupCache(neutronPort, neutronPort.getOriginalPort());
             this.processSecurityGroupUpdate(neutronPort);
@@ -432,12 +435,16 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
             return;
         }
 
-        final boolean isDelete = action == Action.DELETE;
+        final boolean isDelete = action == DELETE;
 
-        if (action == Action.DELETE) {
+        if (action == DELETE) {
             // Bug 5164: Cleanup Floating IP OpenFlow Rules when port is deleted.
             this.cleanupFloatingIPRules(neutronPort);
         }
+        else if (action == UPDATE){
+            // Bug 5353: VM restart cause floatingIp flows to be removed
+            this.updateFloatingIPRules(neutronPort);
+        }
 
         if (neutronPort.getDeviceOwner().equalsIgnoreCase(OWNER_ROUTER_GATEWAY)){
             if (!isDelete) {
@@ -500,7 +507,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
     /**
      * Process the event.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      * @param neutronRouter An instance of NeutronRouter object.
      */
     public void handleNeutronRouterEvent(final NeutronRouter neutronRouter, Action action) {
@@ -511,7 +518,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
      * Process the event enforcing actions and verifying dependencies between all router's interface. For example,
      * delete the ports on the same subnet.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      * @param neutronRouter An instance of NeutronRouter object.
      * @param neutronRouterInterface An instance of NeutronRouter_Interface object.
      */
@@ -526,7 +533,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
             return;
         }
 
-        final boolean isDelete = action == Action.DELETE;
+        final boolean isDelete = action == DELETE;
 
         this.programFlowsForNeutronRouterInterface(neutronRouterInterface, isDelete);
 
@@ -557,8 +564,8 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
      * packets from the floating IP address to the internal fixed ip) rules on OpenFlow Table 30 and SNAT rules (other
      * way around) on OpenFlow Table 100.
      *
-     * @param actionIn the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
-     * @param neutronFloatingIP An {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP} instance of NeutronFloatingIP object.
+     * @param actionIn the {@link Action} action to be handled.
+     * @param neutronFloatingIP An {@link NeutronFloatingIP} instance of NeutronFloatingIP object.
      */
     public void handleNeutronFloatingIPEvent(final NeutronFloatingIP neutronFloatingIP,
                                              Action actionIn) {
@@ -577,22 +584,22 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
         // Consider action to be delete if getFixedIPAddress is null
         //
         if (neutronFloatingIP.getFixedIPAddress() == null) {
-            action = Action.DELETE;
+            action = DELETE;
         } else {
             action = actionIn;
         }
 
         // this.programFlowsForFloatingIP(neutronFloatingIP, action == Action.DELETE);
 
-        if (action != Action.DELETE) {
+        if (action != DELETE) {
             // must be first, as it updates floatIpDataMapCache
             programFlowsForFloatingIPArpAdd(neutronFloatingIP);
 
-            programFlowsForFloatingIPInbound(neutronFloatingIP, Action.ADD);
-            programFlowsForFloatingIPOutbound(neutronFloatingIP, Action.ADD);
+            programFlowsForFloatingIPInbound(neutronFloatingIP, ADD);
+            programFlowsForFloatingIPOutbound(neutronFloatingIP, ADD);
         } else {
-            programFlowsForFloatingIPOutbound(neutronFloatingIP, Action.DELETE);
-            programFlowsForFloatingIPInbound(neutronFloatingIP, Action.DELETE);
+            programFlowsForFloatingIPOutbound(neutronFloatingIP, DELETE);
+            programFlowsForFloatingIPInbound(neutronFloatingIP, DELETE);
 
             // must be last, as it updates floatIpDataMapCache
             programFlowsForFloatingIPArpDelete(neutronFloatingIP.getID());
@@ -634,13 +641,13 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
 
     private void flushExistingIpRewrite() {
         for (FloatIpData fid : getAllFloatingIPsWithMetadata()) {
-            programOutboundIpRewriteStage1(fid, Action.DELETE);
+            programOutboundIpRewriteStage1(fid, DELETE);
         }
     }
 
     private void rebuildExistingIpRewrite() {
         for (FloatIpData fid : getAllFloatingIPsWithMetadata()) {
-            programOutboundIpRewriteStage1(fid, Action.ADD);
+            programOutboundIpRewriteStage1(fid, ADD);
         }
     }
 
@@ -697,7 +704,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
         // Respond to ARPs for the floating ip address by default, via the patch port that connects br-int to br-ex
         //
         if (distributedArpService.programStaticRuleStage1(dpId, encodeExcplicitOFPort(ofPort), floatingIpMac, floatingIpAddress,
-                Action.ADD)) {
+                ADD)) {
             final FloatIpData floatIpData = new FloatIpData(dpId, ofPort, providerSegmentationId, floatingIpMac,
                     floatingIpAddress, fixedIpAddress, neutronRouterMac);
             floatIpDataMapCache.put(neutronFloatingIP.getID(), floatIpData);
@@ -715,7 +722,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
         }
 
         if (distributedArpService.programStaticRuleStage1(floatIpData.dpid, encodeExcplicitOFPort(floatIpData.ofPort), floatIpData.macAddress,
-                floatIpData.floatingIpAddress, Action.DELETE)) {
+                floatIpData.floatingIpAddress, DELETE)) {
             floatIpDataMapCache.remove(neutronFloatingIPUuid);
             LOG.info("Floating IP {} un-programmed ARP mac {} on {} dpid {}",
                     floatIpData.floatingIpAddress, floatIpData.macAddress, floatIpData.ofPort, floatIpData.dpid);
@@ -754,12 +761,12 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
     /**
      * Process the event.
      *
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
-     * @param neutronNetwork An {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork} instance of NeutronFloatingIP object.
+     * @param action the {@link Action} action to be handled.
+     * @param neutronNetwork An {@link NeutronNetwork} instance of NeutronFloatingIP object.
      */
     public void handleNeutronNetworkEvent(final NeutronNetwork neutronNetwork, Action action) {
         LOG.debug("neutronNetwork {}: network: {}", action, neutronNetwork);
-        if (action == Action.UPDATE) {
+        if (action == UPDATE) {
             this.updateNetworkInCleanupCache(neutronNetwork);
         }
     }
@@ -773,9 +780,9 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
      * @param bridgeNode An instance of Node object.
      * @param intf An {@link org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
      * .OvsdbTerminationPointAugmentation} instance of OvsdbTerminationPointAugmentation object.
-     * @param neutronNetwork An {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork} instance of NeutronNetwork
+     * @param neutronNetwork An {@link NeutronNetwork} instance of NeutronNetwork
      * object.
-     * @param action the {@link org.opendaylight.ovsdb.openstack.netvirt.api.Action} action to be handled.
+     * @param action the {@link Action} action to be handled.
      */
     public void handleInterfaceEvent(final Node bridgeNode, final OvsdbTerminationPointAugmentation intf,
                                      final NeutronNetwork neutronNetwork, Action action) {
@@ -783,7 +790,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
                      action, bridgeNode.getNodeId().getValue(), intf.getName(), neutronNetwork);
 
         final NeutronPort neutronPort = tenantNetworkManager.getTenantPort(intf);
-        if (action != Action.DELETE && neutronPort != null) {
+        if (action != DELETE && neutronPort != null) {
             // FIXME: Bug 4971 Move cleanup cache to SG Impl
             storePortInCleanupCache(neutronPort);
         }
@@ -801,14 +808,14 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
         if (neutronPort != null) {
             final String neutronPortUuid = neutronPort.getPortUUID();
 
-            if (action != Action.DELETE && dpId != null && interfaceUuid != null) {
+            if (action != DELETE && dpId != null && interfaceUuid != null) {
                 handleInterfaceEventAdd(neutronPortUuid, dpId, interfaceUuid);
             }
 
             handleNeutronPortEvent(neutronPort, action);
         }
 
-        if (action == Action.DELETE && interfaceUuid != null) {
+        if (action == DELETE && interfaceUuid != null) {
             handleInterfaceEventDelete(intf, dpId);
         }
     }
@@ -864,7 +871,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
             return;
         }
 
-        final Action action = isDelete ? Action.DELETE : Action.ADD;
+        final Action action = isDelete ? DELETE : ADD;
         List<Node> nodes = nodeCacheManager.getBridgeNodes();
         if (nodes.isEmpty()) {
             LOG.trace("updateL3ForNeutronPort has no nodes to work with");
@@ -939,11 +946,11 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
     private void programL3ForwardingStage1(Node node, Long dpid, String providerSegmentationId,
                                            String macAddress, String ipStr,
                                            Action actionForNode) {
-        if (actionForNode == Action.DELETE) {
+        if (actionForNode == DELETE) {
             LOG.trace("Deleting Flow : programL3ForwardingStage1 for node {} providerId {} mac {} ip {} action {}",
                          node.getNodeId().getValue(), providerSegmentationId, macAddress, ipStr, actionForNode);
         }
-        if (actionForNode == Action.ADD) {
+        if (actionForNode == ADD) {
             LOG.trace("Adding Flow : programL3ForwardingStage1 for node {} providerId {} mac {} ip {} action {}",
                     node.getNodeId().getValue(), providerSegmentationId, macAddress, ipStr, actionForNode);
         }
@@ -1020,7 +1027,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
             return;
         }
 
-        final Action actionForNode = isDelete ? Action.DELETE : Action.ADD;
+        final Action actionForNode = isDelete ? DELETE : ADD;
 
         // Keep cache for finding router's mac from network uuid -- add
         //
@@ -1071,7 +1078,7 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
             // for the external neutron networks.
             //
             {
-                final Action actionForRewriteExclusion = isExternal ? Action.DELETE : actionForNode;
+                final Action actionForRewriteExclusion = isExternal ? DELETE : actionForNode;
                 programIpRewriteExclusionStage1(node, dpid, destinationSegmentationId, cidr, actionForRewriteExclusion);
             }
         }
@@ -1180,13 +1187,13 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
                                               String destinationSegmentationId,
                                               String macAddress, String ipStr, int mask,
                                               Action actionForNode) {
-        if (actionForNode == Action.DELETE) {
+        if (actionForNode == DELETE) {
             LOG.trace("Deleting Flow : programRouterInterfaceStage1 for node {} sourceSegId {} destSegId {} mac {} ip {} mask {}" +
                          " action {}",
                          node.getNodeId().getValue(), sourceSegmentationId, destinationSegmentationId,
                          macAddress, ipStr, mask, actionForNode);
         }
-        if (actionForNode == Action.ADD) {
+        if (actionForNode == ADD) {
             LOG.trace("Adding Flow : programRouterInterfaceStage1 for node {} sourceSegId {} destSegId {} mac {} ip {} mask {}" +
                          " action {}",
                          node.getNodeId().getValue(), sourceSegmentationId, destinationSegmentationId,
@@ -1214,12 +1221,12 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
         }
 
         if (status.isSuccess()) {
-            LOG.debug("ProgramRouterInterface {} for mac:{} addr:{}/{} node:{} srcTunId:{} destTunId:{} action:{}",
+            LOG.debug("programRouterInterfaceStage2 {} for mac:{} addr:{}/{} node:{} srcTunId:{} destTunId:{} action:{}",
                          routingProvider == null ? "skipped" : "programmed",
                          macAddress, address, mask, node.getNodeId().getValue(), sourceSegmentationId, destinationSegmentationId,
                          actionForNode);
         } else {
-            LOG.error("ProgramRouterInterface failed for mac:{} addr:{}/{} node:{} srcTunId:{} destTunId:{} action:{} status:{}",
+            LOG.error("programRouterInterfaceStage2 failed for mac:{} addr:{}/{} node:{} srcTunId:{} destTunId:{} action:{} status:{}",
                          macAddress, address, mask, node.getNodeId().getValue(), sourceSegmentationId, destinationSegmentationId,
                          actionForNode, status);
         }
@@ -1229,11 +1236,11 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
     private boolean programIcmpEcho(Long dpid, String segOrOfPort,
                                            String macAddress, String ipStr,
                                            Action action) {
-        if (action == Action.DELETE ) {
+        if (action == DELETE ) {
             LOG.trace("Deleting Flow : programIcmpEcho dpid {} segOrOfPort {} mac {} ip {} action {}",
                     dpid, segOrOfPort, macAddress, ipStr, action);
         }
-        if (action == Action.ADD) {
+        if (action == ADD) {
             LOG.trace("Adding Flow : programIcmpEcho dpid {} segOrOfPort {} mac {} ip {} action {}",
                     dpid, segOrOfPort, macAddress, ipStr, action);
         }
@@ -1264,12 +1271,12 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
     private boolean programInboundIpRewriteStage1(Long dpid, Long inboundOFPort, String providerSegmentationId,
                                                   String matchAddress, String rewriteAddress,
                                                   Action action) {
-        if (action == Action.DELETE ) {
+        if (action == DELETE ) {
             LOG.trace("Deleting Flow : programInboundIpRewriteStage1 dpid {} OFPort {} seg {} matchAddress {} rewriteAddress {}" +
                     " action {}",
                     dpid, inboundOFPort, providerSegmentationId, matchAddress, rewriteAddress, action);
         }
-        if (action == Action.ADD ) {
+        if (action == ADD ) {
             LOG.trace("Adding Flow : programInboundIpRewriteStage1 dpid {} OFPort {} seg {} matchAddress {} rewriteAddress {}" +
                     " action {}",
                     dpid, inboundOFPort, providerSegmentationId, matchAddress, rewriteAddress, action);
@@ -1312,11 +1319,11 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
 
     private void programIpRewriteExclusionStage1(Node node, Long dpid, String providerSegmentationId, String cidr,
                                                  Action actionForRewriteExclusion) {
-        if (actionForRewriteExclusion == Action.DELETE ) {
+        if (actionForRewriteExclusion == DELETE ) {
             LOG.trace("Deleting Flow : programIpRewriteExclusionStage1 node {} providerId {} cidr {} action {}",
                          node.getNodeId().getValue(), providerSegmentationId, cidr, actionForRewriteExclusion);
         }
-        if (actionForRewriteExclusion == Action.ADD) {
+        if (actionForRewriteExclusion == ADD) {
             LOG.trace("Adding Flow : programIpRewriteExclusionStage1 node {} providerId {} cidr {} action {}",
                          node.getNodeId().getValue(), providerSegmentationId, cidr, actionForRewriteExclusion);
         }
@@ -1343,11 +1350,11 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
 
     private void programOutboundIpRewriteStage1(FloatIpData fid, Action action) {
 
-        if (action == Action.DELETE) {
+        if (action == DELETE) {
             LOG.trace("Deleting Flow : programOutboundIpRewriteStage1 dpid {} seg {} fixedIpAddress {} floatIp {} action {} ",
                     fid.dpid, fid.segId, fid.fixedIpAddress, fid.floatingIpAddress, action);
         }
-        if (action == Action.ADD) {
+        if (action == ADD) {
             LOG.trace("Adding Flow : programOutboundIpRewriteStage1 dpid {} seg {} fixedIpAddress {} floatIp {} action {} " ,
                     fid.dpid, fid.segId, fid.fixedIpAddress, fid.floatingIpAddress, action);
         }
@@ -1455,7 +1462,18 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
         if (neutronFloatingIps != null && !neutronFloatingIps.isEmpty()) {
             for (NeutronFloatingIP neutronFloatingIP : neutronFloatingIps) {
                 if (neutronFloatingIP.getPortUUID().equals(neutronPort.getPortUUID())) {
-                    handleNeutronFloatingIPEvent(neutronFloatingIP, Action.DELETE);
+                    handleNeutronFloatingIPEvent(neutronFloatingIP, DELETE);
+                }
+            }
+        }
+    }
+
+    private void updateFloatingIPRules(final NeutronPort neutronPort) {
+        List<NeutronFloatingIP> neutronFloatingIps = neutronFloatingIpCache.getAllFloatingIPs();
+        if (neutronFloatingIps != null) {
+            for (NeutronFloatingIP neutronFloatingIP : neutronFloatingIps) {
+                if (neutronFloatingIP.getPortUUID().equals(neutronPort.getPortUUID())) {
+                    handleNeutronFloatingIPEvent(neutronFloatingIP, UPDATE);
                 }
             }
         }
@@ -1476,15 +1494,34 @@ public class NeutronL3Adapter extends AbstractHandler implements GatewayMacResol
                         externalSubnet.getIpVersion() == 4 &&
                         gatewayPort.getFixedIPs() != null) {
                     LOG.info("Trigger MAC resolution for gateway ip {}", externalSubnet.getGatewayIP());
-
-                    gatewayMacResolver.resolveMacAddress(
+                    Neutron_IPs neutronIP = null;
+                    for (Neutron_IPs nIP : gatewayPort.getFixedIPs()) {
+                        InetAddress ipAddress;
+                        try {
+                            ipAddress = InetAddress.getByName(nIP.getIpAddress());
+                        } catch (UnknownHostException e) {
+                            LOG.warn("unknown host exception {}", e);
+                            continue;
+                        }
+                        if (ipAddress instanceof Inet4Address) {
+                            neutronIP = nIP;
+                            break;
+                        }
+                    }
+                    if (neutronIP == null) {
+                        // TODO IPv6 neighbor discovery
+                        LOG.debug("Ignoring gateway ports with IPv6 only fixed ip {}",
+                                  gatewayPort.getFixedIPs());
+                    } else {
+                        gatewayMacResolver.resolveMacAddress(
                             this, /* gatewayMacResolverListener */
                             null, /* externalNetworkBridgeDpid */
                             true, /* refreshExternalNetworkBridgeDpidIfNeeded */
                             new Ipv4Address(externalSubnet.getGatewayIP()),
-                            new Ipv4Address(gatewayPort.getFixedIPs().get(0).getIpAddress()),
+                            new Ipv4Address(neutronIP.getIpAddress()),
                             new MacAddress(gatewayPort.getMacAddress()),
                             true /* periodicRefresh */);
+                    }
                 } else {
                     LOG.warn("No gateway IP address found for external network {}", externalNetwork);
                 }
similarity index 87%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NodeCacheManagerImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/NodeCacheManagerImpl.java
index ded9a368529f33f8cbe761e177af7559eb339b3d..0ef05ba893532d42e11de98686d9c8eec064c2fe 100644 (file)
@@ -5,23 +5,22 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.NodeCacheManagerEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
+import org.opendaylight.netvirt.openstack.netvirt.NodeCacheManagerEvent;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
@@ -98,8 +97,8 @@ public class NodeCacheManagerImpl extends AbstractHandler implements NodeCacheMa
     /**
      * Process the event.
      *
-     * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
-     * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
+     * @param abstractEvent the {@link AbstractEvent} event to be handled.
+     * @see EventDispatcher
      */
     @Override
     public void processEvent(AbstractEvent abstractEvent) {
similarity index 91%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OpenstackRouter.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OpenstackRouter.java
index d64e7fd520cb7ac702c40e0d46ddb6b3576d294d..4325c0d1deb36f71d57d73173e9f157b4bb30a45 100644 (file)
@@ -6,10 +6,10 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.MultiTenantAwareRouter;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.MultiTenantAwareRouter;
 
 import java.net.InetAddress;
 import java.util.UUID;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OvsdbDataChangeListener.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OvsdbDataChangeListener.java
index 825eabc35bf83f54ba09b6ff37641ed4f5a7f3d1..f5b97707d8f4ffbaff8a81a63b55b8638173aabf 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import java.util.Map;
 import java.util.Set;
@@ -18,9 +18,9 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.MdsalHelper;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
+import org.opendaylight.netvirt.openstack.netvirt.MdsalHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
similarity index 72%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/OvsdbInventoryServiceImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/OvsdbInventoryServiceImpl.java
index 120e3ce938ddd46ada19f0c78e944fb6d2f15f93..aa82c13868a5b4048b88f0e7202a7e1af70073f1 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import com.google.common.collect.Sets;
 
@@ -14,19 +14,20 @@ import java.util.Set;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.ClusterAwareMdsalUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronFloatingIPChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronNetworkChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronPortChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronRouterChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronSecurityRuleDataChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronSubnetChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronLoadBalancerPoolChangeListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl.NeutronLoadBalancerPoolMemberChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronRouterChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronSecurityRuleDataChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.ClusterAwareMdsalUtils;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.NetvirtProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronFloatingIPChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronNetworkChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronPortChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronSubnetChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronLoadBalancerPoolChangeListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl.NeutronLoadBalancerPoolMemberChangeListener;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -87,6 +88,13 @@ public class OvsdbInventoryServiceImpl implements ConfigInterface, OvsdbInventor
     public void setDependencies(Object impl) {}
 
     private void initializeNetvirtTopology() {
+        while(!NetvirtProvider.isMasterElected()){
+            try {
+                Thread.sleep(100);
+            } catch (InterruptedException e) {
+                LOG.warn("Netvirt thread waiting on Netvirt Ownership Election is interrupted");
+            }
+        }
         final TopologyId topologyId = new TopologyId(new Uri(Constants.NETVIRT_TOPOLOGY_ID));
         InstanceIdentifier<Topology> path =
                 InstanceIdentifier.create(NetworkTopology.class).child(Topology.class, new TopologyKey(topologyId));
similarity index 89%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/ProviderNetworkManagerImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/ProviderNetworkManagerImpl.java
index e7a4e370c1ffb1e1feb0d048d746f2e84dbc6ff3..7c74589bc06e79563e308b8249e76da8ccfbbd22 100644 (file)
@@ -6,16 +6,16 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import java.util.Map;
 
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import org.osgi.framework.ServiceReference;
@@ -6,17 +6,17 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
-
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityGroupCacheManger;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
+
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
similarity index 95%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SecurityServicesImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/SecurityServicesImpl.java
index 11e8943a1d8d04fe0e465d7c5629a47d633649a9..67f0e8d1e5943110b993186eec30de6f5a168fcf 100644 (file)
@@ -6,25 +6,25 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
-
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
+
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SouthboundImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/SouthboundImpl.java
index 0f8759154c557698b3271f76e2452107240f8afb..a47df25f9f22ee21f771a3669148340f3907207b 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import java.math.BigInteger;
 import java.security.InvalidParameterException;
@@ -16,11 +16,11 @@ import java.util.Map;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.ClusterAwareMdsalUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.MdsalHelper;
-import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbTables;
+import org.opendaylight.netvirt.openstack.netvirt.ClusterAwareMdsalUtils;
+import org.opendaylight.netvirt.openstack.netvirt.MdsalHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.*;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeExternalIds;
@@ -736,4 +736,5 @@ public class SouthboundImpl implements Southbound {
         }
         return ovsdbBridgeAugmentation;
     }
+
 }
similarity index 91%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/TenantNetworkManagerImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/TenantNetworkManagerImpl.java
index 5ca124df5e8c2905bdeab83f37bc976403b12a76..4152a793d36e82615fbc38105e94b72d026febad 100644 (file)
@@ -6,22 +6,22 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import com.google.common.base.Preconditions;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.VlanConfigurationCache;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.VlanConfigurationCache;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.osgi.framework.ServiceReference;
similarity index 90%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/impl/VlanConfigurationCacheImpl.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/impl/VlanConfigurationCacheImpl.java
index ead275b352c79e0d78a7bcda218cd66273128a67..d0b53f16af27f5c54e4dac41ac27fffa84807c53 100644 (file)
@@ -6,14 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
-
-import org.opendaylight.ovsdb.openstack.netvirt.ConfigInterface;
-import org.opendaylight.ovsdb.openstack.netvirt.NodeConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.VlanConfigurationCache;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
+
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
+import org.opendaylight.netvirt.openstack.netvirt.NodeConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.VlanConfigurationCache;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
similarity index 88%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/INeutronObject.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/INeutronObject.java
index 4e3076c8bd24d1c39adb299ad539a48ea1ebb1b3..fa2e2b1b579dad6bb17bd92ec099c53de548b365 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 /**
  * This class contains behaviour common to Neutron configuration objects
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFirewall.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFirewall.java
index e72187f40771acac23757c26b7090f696ae02562..7e29a68d1f523956e3b8b05c8925f798e268832f 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
similarity index 99%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFirewallRule.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFirewallRule.java
index e198cb1d7ac7368916b3621638f31a0622a70dca..51dbbcb48132213fc2177bb5e266440151b94018 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronFloatingIP.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronFloatingIP.java
index 3b1e4ffc589ecae6d8c045e9d2da330472a733c4..0d652ea8a6d07e64055740a29ee9b2990d0fbcd6 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
 import java.util.List;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronLoadBalancer.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronLoadBalancer.java
index 03160067c50982512831dc15cf68c1b590e3d83c..857373a79da892f78d3671f72c575c588bc0c3ab 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronNetwork.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronNetwork.java
index 1e008ec76aa33111361dbc59a8e95011e832a1d8..769ee3b334787e0141f90bfc02dea70ce43fe4f1 100644 (file)
@@ -6,10 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlAccessType;
similarity index 99%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronPort.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronPort.java
index b77e4113e1a2929bae9289e2903778b27f93451f..903c388d27419ebeb9ae1e07b912b5e1ba562ced 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 
 import java.io.Serializable;
similarity index 99%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronRouter.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronRouter.java
index a29d34fa9065b6b3c53cb4cc2650625456195649..050c7849cc3be063bdcf4fcc3ec1288dbeeaf41e 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
 import java.util.HashMap;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSecurityGroup.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSecurityGroup.java
index 9f898b8c7cd60d038e441515320256480930c53b..78a61dd7abee3fde5ff2eeb1142f1a06e9439afe 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
 import java.util.ArrayList;
similarity index 99%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSecurityRule.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSecurityRule.java
index e8707dd7028316fe127be2fbcd2e492e2b6ee00b..f354e5b456e07ef8dab7248049a865f14ec20698 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
similarity index 98%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/NeutronSubnet.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/NeutronSubnet.java
index 1b7e8c979c423d92aa25eb27273b919ab352f504..9dd493591ac3ec3b5cfbe7b8365fb2eeb6d3dd1c 100644 (file)
@@ -6,15 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
 import java.math.BigInteger;
 import java.net.InetAddress;
-import java.net.Inet6Address;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import javax.xml.bind.annotation.XmlAccessType;
@@ -24,7 +22,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.commons.net.util.SubnetUtils;
 import org.apache.commons.net.util.SubnetUtils.SubnetInfo;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
similarity index 94%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/Neutron_ID.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/Neutron_ID.java
index acdae1273d730abeb87287292ebb49511dbd2c02..4a1e6e46235885b4e767c3d738a64cf65e820ee8 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
 
similarity index 96%
rename from openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/Neutron_IPs.java
rename to openstack/net-virt/src/main/java/org/opendaylight/netvirt/openstack/netvirt/translator/Neutron_IPs.java
index 41b8981e76fc1a09663236a14cec67e57e8ed893..0fde03f780e961a349a1ee2f5357aab39914eea1 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator;
+package org.opendaylight.netvirt.openstack.netvirt.translator;
 
 import java.io.Serializable;
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewall;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewall;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack Firewall objects
@@ -34,7 +34,7 @@ public interface INeutronFirewallCRUD {
      *
      * @param uuid
      *            UUID of the Firewall object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewall}
+     * @return {@link NeutronFirewall}
      *          OpenStackFirewall class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallPolicy;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallPolicy;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack Firewall Policy objects
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallRule;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack Firewall Rule objects
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
 
 /**
  * This interface defines the methods for CRUD of NB FloatingIP objects
@@ -35,7 +35,7 @@ public interface INeutronFloatingIPCRUD {
      *
      * @param uuid
      *            UUID of the FloatingIP object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP}
+     * @return {@link NeutronFloatingIP}
      *          OpenStack FloatingIP class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack LoadBalancer objects
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerHealthMonitor;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerHealthMonitor;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack LoadBalancerHealthMonitor objects
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerListener;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack LoadBalancerListener objects
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack LoadBalancerPool objects
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
 
 public interface INeutronLoadBalancerPoolMemberCRUD {
 
@@ -31,7 +31,7 @@ public interface INeutronLoadBalancerPoolMemberCRUD {
      *
      * @param uuid
      *            UUID of the NeutronLoadBalancerPoolMember object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember}
+     * @return {@link NeutronLoadBalancerPoolMember}
      *          OpenStackNeutronLoadBalancerPoolMember class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
 
 /**
  * This interface defines the methods for CRUD of NB network objects
@@ -35,7 +35,7 @@ public interface INeutronNetworkCRUD {
      *
      * @param uuid
      *            UUID of the Network object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork}
+     * @return {@link NeutronNetwork}
      *          OpenStack Network class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
 
 /**
  * This interface defines the methods for CRUD of NB Port objects
@@ -35,7 +35,7 @@ public interface INeutronPortCRUD {
      *
      * @param uuid
      *            UUID of the Port object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort}
+     * @return {@link NeutronPort}
      *          OpenStack Port class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
 
 /**
  * This interface defines the methods for CRUD of NB Router objects
@@ -35,7 +35,7 @@ public interface INeutronRouterCRUD {
      *
      * @param uuid
      *            UUID of the Router object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter}
+     * @return {@link NeutronRouter}
      *          OpenStack Router class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack Security Group objects
@@ -32,7 +32,7 @@ public interface INeutronSecurityGroupCRUD {
      * Security Group object exists
      *
      * @param uuid UUID of the Security Group object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup}
+     * @return {@link NeutronSecurityGroup}
      * OpenStack Security Group class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
 
 /**
  * This interface defines the methods for CRUD of NB OpenStack Security Rule objects
@@ -32,7 +32,7 @@ public interface INeutronSecurityRuleCRUD {
      * Security Rule object exists
      *
      * @param uuid UUID of the security rule object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule}
+     * @return {@link NeutronSecurityRule}
      * OpenStackSecurity Rule class
      */
 
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
 
 /**
  * This interface defines the methods for CRUD of NB Subnet objects
@@ -35,7 +35,7 @@ public interface INeutronSubnetCRUD {
      *
      * @param uuid
      *            UUID of the Subnet object
-     * @return {@link org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet}
+     * @return {@link NeutronSubnet}
      *          OpenStack Subnet class
      */
 
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud;
 
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.lang.reflect.Method;
 import java.util.concurrent.ExecutionException;
@@ -18,7 +18,7 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.INeutronObject;
+import org.opendaylight.netvirt.openstack.netvirt.translator.INeutronObject;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -6,14 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.List;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.INeutronObject;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewall;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFirewallCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewall;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFirewallCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.INeutronObject;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -6,14 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.List;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.INeutronObject;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallPolicy;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFirewallPolicyCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFirewallPolicyCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.INeutronObject;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallPolicy;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -6,14 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.List;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.INeutronObject;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFirewallRuleCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.INeutronObject;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFirewallRuleCRUD;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -14,8 +14,8 @@ import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.floatingips.attributes.Floatingips;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.floatingips.attributes.floatingips.Floatingip;
@@ -6,13 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.List;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerHealthMonitor;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerHealthMonitorCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerHealthMonitor;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerHealthMonitorCRUD;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.Healthmonitors;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -17,8 +17,8 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.Loadbalancers;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.loadbalancers.Loadbalancer;
@@ -6,13 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.List;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerListener;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerListenerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerListenerCRUD;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.Listeners;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -17,10 +17,10 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer_SessionPersistence;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_ID;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_ID;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer_SessionPersistence;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolHttp;
@@ -6,13 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.List;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolMemberCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolMemberCRUD;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.pools.pool.Members;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -14,10 +14,9 @@ import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork_Segment;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork_Segment;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.ext.rev150712.NetworkL3Extension;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.ext.rev150712.NetworkL3ExtensionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -14,15 +14,15 @@ import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort_AllowedAddressPairs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort_ExtraDHCPOption;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort_VIFDetail;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort_AllowedAddressPairs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort_ExtraDHCPOption;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort_VIFDetail;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.PortBindingExtension;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -17,11 +17,11 @@ import java.util.Map.Entry;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_NetworkReference;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronRouterCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronRouterCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_NetworkReference;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.l3.attributes.Routes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.Routers;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -14,11 +14,11 @@ import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.groups.attributes.SecurityGroups;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -14,11 +14,11 @@ import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.DirectionBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.DirectionEgress;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -14,15 +14,13 @@ import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnetIPAllocationPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnetIPAllocationPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Base;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Off;
@@ -147,7 +145,6 @@ public class NeutronSubnetInterface extends AbstractNeutronInterface<Subnet, Neu
         result.setNetworkUUID(subnet.getNetworkId().getValue());
         result.setIpVersion(IPV_MAP.get(subnet.getIpVersion()));
         result.setCidr(subnet.getCidr());
-        result.setGatewayIP(String.valueOf(subnet.getGatewayIp().getValue()));
         result.setIpV6RaMode(DHCPV6_MAP.get(subnet.getIpv6RaMode()));
         result.setIpV6AddressMode(DHCPV6_MAP.get(subnet.getIpv6AddressMode()));
         result.setEnableDHCP(subnet.isEnableDhcp());
@@ -177,6 +174,9 @@ public class NeutronSubnetInterface extends AbstractNeutronInterface<Subnet, Neu
             .fetchINeutronPortCRUD(this);
         INeutronPortCRUD portIf = interfaces.getPortInterface();
         for (NeutronPort port : portIf.getAllPorts()) {
+            if (port.getDeviceOwner().equalsIgnoreCase("network:router_interface")) {
+                result.setGatewayIP(String.valueOf(subnet.getGatewayIp().getValue()));
+            }
             if (port.getFixedIPs() != null) {
                 for (Neutron_IPs ip : port.getFixedIPs()) {
                     if (ip.getSubnetUUID().equals(result.getID())) {
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewall;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewall;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Firewall Rules needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallPolicy;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallPolicy;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Firewall Policys needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallRule;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Firewall Rules needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Neutron FloatingIPs needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
 
 /**
  * This interface defines the methods a service that wishes to be aware of LoadBalancer Rules needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerHealthMonitor;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerHealthMonitor;
 
 /**
  * This interface defines the methods a service that wishes to be aware of LoadBalancerHealthMonitor Rules needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerListener;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerListener;
 
 /**
  * This interface defines the methods a service that wishes to be aware of LoadBalancerListener Rules needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
 
 /**
  * This interface defines the methods a service that wishes to be aware of LoadBalancerPool Rules needs to implement
@@ -5,9 +5,9 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
 
 public interface INeutronLoadBalancerPoolMemberAware {
 
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Neutron Networks needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Neutron Ports needs to implement
@@ -6,10 +6,10 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Neutron Routers needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Neutron Security Groups needs to implement
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
 
 /**
  * This interface defines the methods required to be aware of Neutron Security Rules
@@ -6,9 +6,9 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
 
 /**
  * This interface defines the methods a service that wishes to be aware of Neutron Subnets needs to implement
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.Map.Entry;
 
@@ -15,8 +15,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.floatingips.attributes.Floatingips;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.floatingips.attributes.floatingips.Floatingip;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
@@ -6,15 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.Interfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.port.attributes.FixedIps;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
 import org.osgi.framework.BundleContext;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -18,11 +18,11 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer_SessionPersistence;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_ID;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_ID;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer_SessionPersistence;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolHttp;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.Map.Entry;
 
@@ -16,8 +16,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolMemberAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronLoadBalancerPoolMemberAware;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.Pools;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.lbaasv2.rev150712.lbaas.attributes.pools.Pool;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,10 +17,9 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork_Segment;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronNetworkAware;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronNetworkAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork_Segment;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.ext.rev150712.NetworkL3Extension;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.NetworkTypeFlat;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -21,15 +21,15 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort_AllowedAddressPairs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort_ExtraDHCPOption;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort_VIFDetail;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronPortAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort_AllowedAddressPairs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort_ExtraDHCPOption;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort_VIFDetail;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronPortAware;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.PortBindingExtension;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.binding.attributes.VifDetails;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -19,11 +19,11 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_NetworkReference;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronRouterAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_NetworkReference;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronRouterAware;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.l3.attributes.Routes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.Routers;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.Router;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,11 +17,11 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSecurityGroupAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSecurityGroupAware;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.groups.attributes.SecurityGroups;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.Map.Entry;
 
@@ -15,8 +15,8 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSecurityRuleAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSecurityRuleAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.DirectionBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.DirectionEgress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.DirectionIngress;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.translator.iaware.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.iaware.impl;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -19,13 +19,13 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnetIPAllocationPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronSubnetAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnetIPAllocationPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronCRUDInterfaces;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronSubnetAware;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Base;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Off;
index cd5dac96dacc9d7183469ed35ba36d4c4feb0f07..add390aa89a93649f09b01da9243f84d1524707c 100644 (file)
@@ -1,7 +1,7 @@
 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.impl.rev150513;
 
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.ovsdb.openstack.netvirt.NetvirtProvider;
+import org.opendaylight.netvirt.openstack.netvirt.NetvirtProvider;
 import org.osgi.framework.BundleContext;
 
 public class NetvirtImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.impl.rev150513.AbstractNetvirtImplModule {
similarity index 91%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractEventTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/AbstractEventTest.java
index 6e776d3a2b23a0105742d848f517197b8cd59721..46ddc95b8f79a61d3636f4cd50a48b091a9baf6f 100644 (file)
@@ -6,14 +6,14 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.*;
 
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent.HandlerType;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent.HandlerType;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 
 /**
  * Unit test for {@link AbstractEvent}
similarity index 91%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/AbstractHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/AbstractHandlerTest.java
index 7897b161a6dcc5e58d82a3e257b5a9e687cad7cf..b3aea90d84cd698994c152fe74797f84e94ca1a8 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -23,9 +23,10 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+
 /**
  * Unit test for {@link AbstractHandler}
  */
similarity index 93%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/FWaasHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/FWaasHandlerTest.java
index de1e97e33203c49dec0d72a4d4a973cc1c8efe07..7464ac92ccffeb9a420eb94f2b04292a67193886 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -23,11 +23,11 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewall;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallPolicy;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallRule;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewall;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallPolicy;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFirewallRule;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 
 
similarity index 89%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/FloatingIPHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/FloatingIPHandlerTest.java
index 1146be5a25d41e2a1b7e5db24def2ad7480c8531..df43570584c6f001b6c9b8bbd9deccdea6d08748 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -22,11 +22,11 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 
 /**
similarity index 88%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSHandlerTest.java
index e4294652e2bd8c18d28539409dc07ea2d2542f85..933dd372023cdd71768e95b1860f4b4fd85b2565 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -32,25 +33,24 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
         .Node;
 import org.osgi.framework.ServiceReference;
@@ -208,7 +208,7 @@ public class LBaaSHandlerTest {
         assertEquals("Error, did not return the correct value",  "mac_address", lbConfig.getVmac());
 
         // make sure the load balancer pool member was correctly populated
-        LoadBalancerPoolMember member = lbConfig.getMembers().get("pool_memberID");
+        LoadBalancerConfiguration.LoadBalancerPoolMember member = lbConfig.getMembers().get("pool_memberID");
         assertEquals("Error, did not return the correct value",  "pool_member_address", member.getIP());
         assertEquals("Error, did not return the correct value",  "mac_address", member.getMAC());
         assertEquals("Error, did not return the correct value",  LoadBalancerConfiguration.PROTOCOL_TCP, member.getProtocol());
@@ -240,7 +240,7 @@ public class LBaaSHandlerTest {
 
         lbaasHandler.setDependencies(mock(ServiceReference.class));
 
-        assertEquals("Error, did not return the correct object", lbaasHandler.eventDispatcher, eventDispatcher);
+        Assert.assertEquals("Error, did not return the correct object", lbaasHandler.eventDispatcher, eventDispatcher);
         assertEquals("Error, did not return the correct object", getField("loadBalancerProvider"), loadBalancerProvider);
         assertEquals("Error, did not return the correct object", getField("nodeCacheManager"), nodeCacheManager);
     }
similarity index 89%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolHandlerTest.java
index f315a23cfb6aa991f68c891213bf03296241fbee..02bec429fbb221fd8745716b2af53b0f7ab085d2 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -30,25 +30,25 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
         .Node;
 import org.osgi.framework.ServiceReference;
similarity index 89%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/LBaaSPoolMemberHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/LBaaSPoolMemberHandlerTest.java
index 22837d9ce2a29230f0dd9301f0e7a8c96fdf1884..69841fc0fa1728ff5cd5edbe3f57b727e5698b6f 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -30,25 +30,25 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.api.LoadBalancerProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancer;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPool;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancer;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerPoolCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration;
+import org.opendaylight.netvirt.openstack.netvirt.api.LoadBalancerConfiguration.LoadBalancerPoolMember;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronLoadBalancerPool;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronLoadBalancerCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 import org.osgi.framework.ServiceReference;
similarity index 91%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NetworkHandlerTest.java
index 36d7af71a82b9c334a96334aa014ae6cb0a7047a..eda7f44d64ca590dce87e17658da76dbe058f8b7 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -29,16 +29,16 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
         .OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
similarity index 83%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NeutronCacheUtilsTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NeutronCacheUtilsTest.java
index c8e06af217e28871012827a3ee8a7dc017d148e2..edca4ddb0b56c6caef255dc439876e5d370e6de3 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -18,13 +18,13 @@ import java.util.List;
 import java.util.Map;
 
 import org.junit.Test;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
 
 /**
  * Unit test for {@link NeutronCacheUtils}
similarity index 93%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NodeCacheManagerEventTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NodeCacheManagerEventTest.java
index c6e3c464581e7034fd6913c48a015580171801d7..2b7fd4efe42d3284551fe886b71e52828e766b19 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -17,7 +17,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 
 /**
similarity index 88%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NodeConfigurationTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/NodeConfigurationTest.java
index 344632846582519b260c9186583e48a2bbd098e1..cc1774e6811527544b2e2c50ebc4e21ea998ad41 100644 (file)
@@ -6,13 +6,13 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import org.junit.Test;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 
 /**
  * Unit test for {@link NodeConfiguration}
similarity index 90%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/PortHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/PortHandlerTest.java
index f5f0d9ae77a1a0f328a9ffd8775ede14e7cbc05c..dab134bd744ddd5c24212ad01608d293c1f2ca30 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -27,14 +27,14 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.DistributedArpService;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.impl.DistributedArpService;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
         .OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
similarity index 88%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/PortSecurityHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/PortSecurityHandlerTest.java
index bb975af41eb30744d96849e064143a66cc8fc7cb..46899b920560800a5c6089d66bcf8d8b7d7a7b81 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -17,6 +17,7 @@ import static org.mockito.Mockito.verify;
 import java.lang.reflect.Field;
 import java.net.HttpURLConnection;
 
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -24,10 +25,10 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 
 /**
@@ -38,7 +39,8 @@ public class PortSecurityHandlerTest {
 
     @InjectMocks private PortSecurityHandler portSecurityHandler;
     private PortSecurityHandler posrtSecurityHandlerSpy;
-    @Mock EventDispatcher eventDispatcher;
+    @Mock
+    EventDispatcher eventDispatcher;
 
     @Before
     public void setUp() {
@@ -100,7 +102,7 @@ public class PortSecurityHandlerTest {
 
         portSecurityHandler.setDependencies(mock(ServiceReference.class));
 
-        assertEquals("Error, did not return the correct object", portSecurityHandler.eventDispatcher, eventDispatcher);
+        Assert.assertEquals("Error, did not return the correct object", portSecurityHandler.eventDispatcher, eventDispatcher);
     }
 
 
similarity index 89%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/RouterHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/RouterHandlerTest.java
index 1e4ce389a9f608b60ea6df4c0e68be8189b92dea..bc23359aa924a71250ed56d4dca1efa3918832b6 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -22,12 +22,12 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 
 /**
similarity index 90%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/SouthboundHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/SouthboundHandlerTest.java
index 0fc2fa9e75c557072d89c0980b0c2fe9006506fc..8ae37758a1fa442de185189535b09321bb3d3518 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -26,22 +26,21 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.SouthboundEvent.Type;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener.OvsdbType;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.DistributedArpService;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.BridgeConfigurationManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.impl.DistributedArpService;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
@@ -85,7 +84,7 @@ public class SouthboundHandlerTest {
         when(southbound.readOvsdbTopologyNodes()).thenReturn(nodes);
 
         southboundHandlerSpy.triggerUpdates();
-        verify(southboundHandlerSpy, times(1)).ovsdbUpdate(any(Node.class), any(DataObject.class), any(OvsdbType.class), any(Action.class));
+        verify(southboundHandlerSpy, times(1)).ovsdbUpdate(any(Node.class), any(DataObject.class), any(OvsdbInventoryListener.OvsdbType.class), any(Action.class));
 
     }
 
@@ -109,7 +108,7 @@ public class SouthboundHandlerTest {
         // NODE
         when(ev.getNode()).thenReturn(node);
         when(ev.getAugmentationData()).thenReturn(mock(OvsdbNodeAugmentation.class));
-        when(ev.getType()).thenReturn(Type.NODE);
+        when(ev.getType()).thenReturn(SouthboundEvent.Type.NODE);
 
         when(ev.getAction()).thenReturn(Action.ADD);
         southboundHandler.processEvent(ev);
@@ -132,7 +131,7 @@ public class SouthboundHandlerTest {
         // BRIDGE
         when(ev.getNode()).thenReturn(node);
         when(ev.getAugmentationData()).thenReturn(mock(OvsdbBridgeAugmentation.class));
-        when(ev.getType()).thenReturn(Type.BRIDGE);
+        when(ev.getType()).thenReturn(SouthboundEvent.Type.BRIDGE);
 
         when(southbound.getDatapathId(any(OvsdbBridgeAugmentation.class))).thenReturn("45");
 
@@ -163,7 +162,7 @@ public class SouthboundHandlerTest {
 //        when(ovsdbTerminationPointAugmentation.getInterfaceType()).thenReturn(n);
         when(ev.getNode()).thenReturn(node);
         when(ev.getAugmentationData()).thenReturn(ovsdbTerminationPointAugmentation);
-        when(ev.getType()).thenReturn(Type.PORT);
+        when(ev.getType()).thenReturn(SouthboundEvent.Type.PORT);
 
         NetworkingProvider networkingProvider = mock(NetworkingProvider.class);
         NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
@@ -219,7 +218,7 @@ public class SouthboundHandlerTest {
         // OPENVSWITCH
         when(ev.getNode()).thenReturn(node);
         when(ev.getAugmentationData()).thenReturn(ovsdbTerminationPointAugmentation);
-        when(ev.getType()).thenReturn(Type.OPENVSWITCH);
+        when(ev.getType()).thenReturn(SouthboundEvent.Type.OPENVSWITCH);
 
         when(ovsdbTerminationPointAugmentation.getName()).thenReturn("network");
         List<TerminationPoint> terminationPoints = new ArrayList<>();
similarity index 89%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/SubnetHandlerTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/SubnetHandlerTest.java
index fe572a26d362b7bbcdbae1f347338b7b6879821c..b17e8765bafaa66d6153e5e12c1b6c42714d3b6e 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt;
+package org.opendaylight.netvirt.openstack.netvirt;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -22,11 +22,11 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.impl.NeutronL3Adapter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.osgi.framework.ServiceReference;
 
 /**
@@ -5,7 +5,7 @@
 * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -32,16 +32,17 @@ import java.util.List;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
+import org.mockito.Matchers;
 import org.mockito.Mock;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.mockito.stubbing.Answer;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbTables;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
@@ -283,7 +284,7 @@ public class BridgeConfigurationManagerImplTest {
 
     @Test
     public void testGetPhysicalInterfaceName() throws Exception {
-        when(southbound.getOtherConfig(any(Node.class), eq(OvsdbTables.OPENVSWITCH), anyString()))
+        when(southbound.getOtherConfig(any(Node.class), Matchers.eq(OvsdbTables.OPENVSWITCH), anyString()))
                 .thenReturn(null)
                 .thenReturn(null)
                 .thenReturn(PROVIDER_MAPPINGS);
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -21,11 +21,11 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbTables;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.utils.config.ConfigProperties;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbTables;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.config.ConfigProperties;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
         .Node;
diff --git a/openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/DistributedArpServiceTest.java b/openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/DistributedArpServiceTest.java
new file mode 100644 (file)
index 0000000..100716e
--- /dev/null
@@ -0,0 +1,316 @@
+/*
+ * Copyright (c) 2016 NEC Corporation 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.netvirt.openstack.netvirt.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.when;
+
+import java.lang.reflect.Field;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+
+import org.osgi.framework.ServiceReference;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.membermodification.MemberMatcher;
+import org.powermock.api.support.membermodification.MemberModifier;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
+
+/**
+ * Unit test for {@link DistributedArpService}
+ */
+@PrepareForTest({ServiceHelper.class, InetAddress.class, DistributedArpService.class})
+@RunWith(PowerMockRunner.class)
+public class DistributedArpServiceTest {
+
+    @Mock private DistributedArpService distributedArpService;
+    /**
+     * ID used for testing different scenarios.
+     */
+    private static final String ID = "45";
+    /**
+     * IP used for testing different scenarios.
+     */
+    private static final String IP = "127.0.0.1";
+    /**
+     * MALFORM_IP used for testing different scenarios.
+     */
+    private static final String MALFORM_IP = "127.0.0.1.5";
+    /**
+     * INTF_NAME used for testing different scenarios.
+     */
+    private static final String INTF_NAME = "br-int";
+    /**
+     * UUID used for testing different scenarios.
+     */
+    private static final String UUID = "7da709ff-397f-4778-a0e8-994811272fdb";
+    /**
+     * FIXED_IP_ADDRESS used for testing different scenarios.
+     */
+    private static final String FIXED_IP_ADDRESS = "192.168.1.0";
+    /**
+     * MAC_ADDRESS used for testing different scenarios.
+     */
+    private static final String MAC_ADDRESS = "00:00:5E:00:02:01";
+    /**
+     * MAC_ADDRESS_2 used for testing different scenarios.
+     */
+    private static final String MAC_ADDRESS_2 = "00:00:5E:00:02:02";
+    /**
+     * PORT_INT used for testing different scenarios.
+     */
+    private static final String PORT_INT = "port_int";
+
+    @Before
+    public void setUp() throws Exception{
+        distributedArpService = PowerMockito.spy(new DistributedArpService());
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#handlePortEvent} is called
+     * and then checks that the port event process to write arp rules for neutron ports based on action.
+     */
+    @Test
+    public void testHandlePortEvent() throws Exception {
+        NeutronPort neutronPortOne = PowerMockito.mock(NeutronPort.class);
+        NeutronPort neutronPortTwo = PowerMockito.mock(NeutronPort.class);
+        List<NeutronPort> list_neutronPort = new ArrayList<>();
+        list_neutronPort.add(neutronPortOne);
+        list_neutronPort.add(neutronPortTwo);
+        INeutronPortCRUD neutronPortCache = PowerMockito.mock(INeutronPortCRUD.class);
+        MemberModifier.field(DistributedArpService.class, "neutronPortCache").set(distributedArpService, neutronPortCache);
+        PowerMockito.when(neutronPortCache, "getAllPorts").thenReturn(list_neutronPort);
+
+        // Suppress the called to these functions.
+        MemberModifier.suppress(MemberMatcher.method(DistributedArpService.class, "handleNeutronPortForArp", NeutronPort.class, Action.class));
+
+        //Case 1: Delete Action.
+        Whitebox.invokeMethod(distributedArpService, "handlePortEvent", neutronPortOne, Action.DELETE);
+        PowerMockito.verifyPrivate(distributedArpService, times(1)).invoke("handleNeutronPortForArp", any(NeutronPort.class), eq(Action.DELETE));
+
+        //Case 2: Add Action.
+        Whitebox.invokeMethod(distributedArpService, "handlePortEvent", neutronPortOne, Action.ADD);
+        PowerMockito.verifyPrivate(distributedArpService, times(2)).invoke("handleNeutronPortForArp", any(NeutronPort.class), eq(Action.ADD));
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#programStaticRuleStage1} is called
+     * and then checks that the arp rules are added/removed based on neutron port event.
+     */
+    @Test
+    public void testProgramStaticRuleStage1() throws Exception {
+        MemberModifier.suppress(MemberMatcher.method(DistributedArpService.class, "programStaticRuleStage2", Long.class, String.class, String.class, String.class, Action.class));
+        PowerMockito.when(distributedArpService, "programStaticRuleStage2", anyLong(), anyString(), anyString(), anyString(), any(Action.class)).thenReturn(new Status(StatusCode.SUCCESS));
+
+        //Case 1: Add Action.
+        Whitebox.invokeMethod(distributedArpService, "programStaticRuleStage1", Long.valueOf(12), PORT_INT, MAC_ADDRESS, IP, Action.ADD);
+        PowerMockito.verifyPrivate(distributedArpService, times(1)).invoke("programStaticRuleStage2", anyLong(), anyString(), anyString(), anyString(), eq(Action.ADD));
+
+        //Case 2: Delete Action.
+        Whitebox.invokeMethod(distributedArpService, "programStaticRuleStage1", Long.valueOf(12), PORT_INT, MAC_ADDRESS, IP, Action.DELETE);
+        PowerMockito.verifyPrivate(distributedArpService, times(1)).invoke("programStaticRuleStage2", anyLong(), anyString(), anyString(), anyString(), eq(Action.DELETE));
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#programStaticRuleStage2} is called
+     * and then checks that the arp rules are programmed by invoke arpProvider.
+     */
+    @Test
+    public void testProgramStaticRuleStage2() throws Exception {
+        //Case 1: StatusCode BADREQUEST.
+        assertEquals("Error, this not return the correct status code", new Status(StatusCode.BADREQUEST), Whitebox.invokeMethod(distributedArpService, "programStaticRuleStage2", Long.valueOf(45), PORT_INT, MAC_ADDRESS, MALFORM_IP, Action.ADD));
+        PowerMockito.mockStatic(InetAddress.class);
+        InetAddress inetAddress = mock(InetAddress.class);
+        PowerMockito.when(InetAddress.getByName(anyString())).thenReturn(inetAddress);
+
+        //Case 2: StatusCode SUCCESS.
+        assertEquals("Error, this not return the correct status code", new Status(StatusCode.SUCCESS), Whitebox.invokeMethod(distributedArpService, "programStaticRuleStage2", Long.valueOf(45), PORT_INT, MAC_ADDRESS, IP, Action.DELETE));
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#handleNeutornPortForArp} is called
+     * and then checks that the arp rules are written based on event for neutron port.
+     */
+    @Test
+    public void testHandleNeutornPortForArp() throws Exception {
+        Neutron_IPs neutronIp = mock(Neutron_IPs.class);
+        when(neutronIp.getIpAddress()).thenReturn(FIXED_IP_ADDRESS);
+        List<Neutron_IPs> neutronIps = new ArrayList<>();
+        neutronIps.add(neutronIp);
+        NeutronPort neutronPort = mock(NeutronPort.class);
+        when(neutronPort.getNetworkUUID()).thenReturn(UUID);
+        when(neutronPort.getMacAddress()).thenReturn(MAC_ADDRESS_2);
+        when(neutronPort.getFixedIPs()).thenReturn(neutronIps);
+        NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
+        when(neutronNetwork.getProviderSegmentationID()).thenReturn(ID);
+        List<Node> nodes = new ArrayList<>();
+        nodes.add(mock(Node.class));
+        TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+        MemberModifier.field(DistributedArpService.class, "tenantNetworkManager").set(distributedArpService, tenantNetworkManager);
+        when(tenantNetworkManager.isTenantNetworkPresentInNode(any(Node.class), eq(ID))).thenReturn(true);
+        PowerMockito.doReturn(15L).when(distributedArpService, "getDatapathIdIntegrationBridge", any(Node.class));
+        INeutronNetworkCRUD neutronNetworkCache = mock(INeutronNetworkCRUD.class);
+        when(neutronNetworkCache.getNetwork(anyString())).thenReturn(neutronNetwork);
+        MemberModifier.field(DistributedArpService.class, "neutronNetworkCache").set(distributedArpService, neutronNetworkCache);
+        NodeCacheManager nodeCacheManager = mock(NodeCacheManager.class);
+        when(nodeCacheManager.getBridgeNodes()).thenReturn(nodes);
+        MemberModifier.field(DistributedArpService.class, "nodeCacheManager").set(distributedArpService, nodeCacheManager);
+        MemberModifier.field(DistributedArpService.class, "flgDistributedARPEnabled").set(distributedArpService, true);
+
+        // Suppress the called to these functions.
+        MemberModifier.suppress(MemberMatcher.method(DistributedArpService.class, "programStaticRuleStage1", Long.class, String.class, String.class, String.class, Action.class));
+
+        //Case 1: Add Action.
+        Whitebox.invokeMethod(distributedArpService, "handleNeutronPortForArp", neutronPort, Action.ADD);
+        PowerMockito.verifyPrivate(distributedArpService, times(1)).invoke("getDatapathIdIntegrationBridge", any(Node.class));
+        Mockito.verify(distributedArpService, times(1)).programStaticRuleStage1(anyLong(), anyString(), anyString(), anyString(), eq(Action.ADD));
+
+        //Case 2: Delete Action.
+        Whitebox.invokeMethod(distributedArpService, "handleNeutronPortForArp", neutronPort, Action.DELETE);
+        PowerMockito.verifyPrivate(distributedArpService, times(2)).invoke("getDatapathIdIntegrationBridge", any(Node.class));
+        Mockito.verify(distributedArpService, times(1)).programStaticRuleStage1(anyLong(), anyString(), anyString(), anyString(), eq(Action.DELETE));
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#getDatapathIdIntegrationBridge} is called
+     * and then checks the node integration bridge, then return its datapathID.
+     */
+    @Test
+    public void testGetDatapathIdIntegrationBridge() throws Exception {
+        Southbound southbound = mock(Southbound.class);
+        ConfigurationService configurationService = mock(ConfigurationService.class);
+
+        MemberModifier.field(DistributedArpService.class, "southbound").set(distributedArpService, southbound);
+        MemberModifier.field(DistributedArpService.class, "configurationService").set(distributedArpService, configurationService);
+
+        PowerMockito.when(southbound.getBridge(any(Node.class), anyString())).thenReturn(mock(OvsdbBridgeAugmentation.class));
+        PowerMockito.when(configurationService.getIntegrationBridgeName()).thenReturn("");
+        PowerMockito.when(southbound.getDataPathId(any(Node.class))).thenReturn(45L);
+
+        //Assert check for correct Dp Id.
+        assertEquals("Error, did not return the correct Dpid", 45, (long)Whitebox.invokeMethod(distributedArpService, "getDatapathIdIntegrationBridge", mock(Node.class)));
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#processInterfaceEvent} is called
+     * and then checks that the event is processing.
+     */
+    @Test
+    public void testProcessInterfaceEvent() throws Exception {
+        NeutronPort neutronPort = mock(NeutronPort.class);
+        NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
+        PowerMockito.doNothing().when(distributedArpService).handlePortEvent(any(NeutronPort.class), any(Action.class));
+        // init instance variables.
+        TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+        MemberModifier.field(DistributedArpService.class, "tenantNetworkManager").set(distributedArpService , tenantNetworkManager);
+
+        // Mock variables
+        NodeId nodeId = mock(NodeId.class);
+        when(nodeId.getValue()).thenReturn(ID);
+        Node node = mock(Node.class);
+        when(node.getNodeId()).thenReturn(nodeId);
+
+        OvsdbTerminationPointAugmentation intf = mock(OvsdbTerminationPointAugmentation.class);
+        when(intf.getName()).thenReturn(INTF_NAME);
+
+        when(tenantNetworkManager.getTenantPort(intf)).thenReturn(neutronPort);
+
+        //Case 1: Add Action.
+        distributedArpService.processInterfaceEvent(node, intf, neutronNetwork, Action.ADD);
+        Mockito.verify(distributedArpService, times(1)).handlePortEvent(neutronPort, Action.ADD);
+
+        //Case 2: Delete Action.
+        distributedArpService.processInterfaceEvent(node, intf, neutronNetwork, Action.DELETE);
+        Mockito.verify(distributedArpService, times(1)).handlePortEvent(neutronPort, Action.DELETE);
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#setDependencies} is called
+     * and then checks the object instances.
+     */
+    @Test
+    public void testSetDependencies() throws Exception {
+        TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+        ConfigurationService configurationService = mock(ConfigurationService.class);
+        ArpProvider arpProvider = mock(ArpProvider.class);
+        NodeCacheManager nodeCacheManager = mock(NodeCacheManager.class);
+        Southbound southbound = mock(Southbound.class);
+
+        ServiceHelper.overrideGlobalInstance(TenantNetworkManager.class, tenantNetworkManager);
+        ServiceHelper.overrideGlobalInstance(ConfigurationService.class, configurationService);
+        ServiceHelper.overrideGlobalInstance(ArpProvider.class, arpProvider);
+        ServiceHelper.overrideGlobalInstance(NodeCacheManager.class, nodeCacheManager);
+        ServiceHelper.overrideGlobalInstance(Southbound.class, southbound);
+
+        distributedArpService.setDependencies(mock(ServiceReference.class));
+
+        assertEquals("Error, did not return the correct object", getField("tenantNetworkManager"), tenantNetworkManager);
+        assertEquals("Error, did not return the correct object", getField("configurationService"), configurationService);
+        assertEquals("Error, did not return the correct object", getField("arpProvider"), arpProvider);
+        assertEquals("Error, did not return the correct object", getField("nodeCacheManager"), nodeCacheManager);
+        assertEquals("Error, did not return the correct object", getField("southbound"), southbound);
+    }
+
+    /**
+     * Test that checks if @{DistributedArpService#setDependencies} is called
+     * and then checks the object instances.
+     */
+    @Test
+    public void testSetDependenciesObject() throws Exception{
+        INeutronNetworkCRUD iNeutronNetworkCRUD = mock(INeutronNetworkCRUD.class);
+        distributedArpService.setDependencies(iNeutronNetworkCRUD);
+        assertEquals("Error, did not return the correct object", getField("neutronNetworkCache"), iNeutronNetworkCRUD);
+
+        INeutronPortCRUD iNeutronPortCRUD = mock(INeutronPortCRUD.class);
+        distributedArpService.setDependencies(iNeutronPortCRUD);
+        assertEquals("Error, did not return the correct object", getField("neutronPortCache"), iNeutronPortCRUD);
+
+        ArpProvider arpProvider = mock(ArpProvider.class);
+        distributedArpService.setDependencies(arpProvider);
+        assertEquals("Error, did not return the correct object", getField("arpProvider"), arpProvider);
+    }
+
+    private Object getField(String fieldName) throws Exception {
+        Field field = DistributedArpService.class.getDeclaredField(fieldName);
+        field.setAccessible(true);
+        return field.get(distributedArpService);
+    }
+}
\ No newline at end of file
similarity index 93%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/EventDispatcherImplTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/EventDispatcherImplTest.java
index 7f1cfcf9d34ed5616aa5c813a8991b58304d46d9..c793abbfe5f456556e8a6b4c5f8bd009682e31d0 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotEquals;
@@ -22,9 +22,9 @@ import java.util.concurrent.BlockingQueue;
 
 import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractEvent;
+import org.opendaylight.netvirt.openstack.netvirt.api.Constants;
 import org.osgi.framework.ServiceReference;
 
 /**
similarity index 96%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NeutronL3AdapterTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/NeutronL3AdapterTest.java
index 4f36b3a5a6295ca6c6cfa070c2b9dde78c9b5ff9..658fcf4983329f164038530b4cdad284208ed930 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -24,10 +24,8 @@ import java.lang.reflect.Field;
 import java.net.InetAddress;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.commons.lang3.tuple.Pair;
 import org.junit.Before;
@@ -35,32 +33,32 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronRouter_Interface;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
-import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronRouter_Interface;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.AbstractHandler;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.ArpProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.InboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.OutboundNatProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.Status;
+import org.opendaylight.netvirt.openstack.netvirt.api.StatusCode;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
similarity index 91%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/NodeCacheManagerImplTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/NodeCacheManagerImplTest.java
index f743ae6213781c413f00df6d0cfef779931aa0a3..0832db1cf201eaedc3ae278b1174f1b028646288 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -23,12 +23,12 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.NodeCacheManagerEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheListener;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.NodeCacheManagerEvent;
+import org.opendaylight.netvirt.openstack.netvirt.api.Action;
+import org.opendaylight.netvirt.openstack.netvirt.api.EventDispatcher;
+import org.opendaylight.netvirt.openstack.netvirt.api.NodeCacheListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -18,7 +18,7 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryListener;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryListener;
 
 /**
  * Unit test for {@link NodeCacheManagerImpl}
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
@@ -22,9 +22,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.OvsdbInventoryService;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
         .Node;
 import org.osgi.framework.ServiceReference;
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.times;
@@ -23,13 +23,13 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
 
 /**
  * Unit test fort {@link SecurityGroupCacheManagerImpl}
similarity index 96%
rename from openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/impl/SecurityServicesImplTest.java
rename to openstack/net-virt/src/test/java/org/opendaylight/netvirt/openstack/netvirt/impl/SecurityServicesImplTest.java
index cc60edff81b99b4b1c8409222ff6a68fc9f3e7e2..d4444fbd01bc47a6b658d11ed2e4b691a021ced7 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -20,7 +20,6 @@ import static org.mockito.Mockito.when;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 
@@ -30,20 +29,20 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityRule;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSubnet;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.Neutron_IPs;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.netvirt.openstack.netvirt.api.EgressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.IngressAclProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSecurityRule;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronSubnet;
+import org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
         .OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
@@ -57,7 +56,8 @@ import org.osgi.framework.ServiceReference;
 public class SecurityServicesImplTest {
 
     @InjectMocks private SecurityServicesImpl securityServicesImpl;
-    @Mock INeutronNetworkCRUD neutronNetworkCache;
+    @Mock
+    INeutronNetworkCRUD neutronNetworkCache;
     @Mock private INeutronPortCRUD neutronPortCache;
     @Mock private INeutronSubnetCRUD subNetCache;
     @Mock private Southbound southbound;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -27,14 +27,14 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.VlanConfigurationCache;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronNetworkCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.VlanConfigurationCache;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
         .OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology
@@ -5,7 +5,7 @@
  * 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.ovsdb.openstack.netvirt.impl;
+package org.opendaylight.netvirt.openstack.netvirt.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.any;
@@ -22,10 +22,10 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
-import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronNetwork;
-import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
+import org.opendaylight.netvirt.openstack.netvirt.api.TenantNetworkManager;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronNetwork;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105
         .OvsdbTerminationPointAugmentation;
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.openstack.netvirt.translator.crud.impl;
+package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -27,7 +27,7 @@ import org.opendaylight.controller.md.sal.binding.test.AbstractDataBrokerTest;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFloatingIP;
+import org.opendaylight.netvirt.openstack.netvirt.translator.NeutronFloatingIP;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.floatingips.attributes.floatingips.Floatingip;
index bf94fbc64cb656c52fbda487ce9ba0fbe8ef6d10..da0cc5223209d76ecfb115ce83d104bbd95b34f4 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>openstack</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
@@ -39,8 +39,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
index 9ea9253a21a69a430e793fed59100a13a0032dc6..68e773410fad15a655ed51b191a8ed13d6fabbbb 100644 (file)
@@ -15,7 +15,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <relativePath/>
     </parent>
 
-    <groupId>org.opendaylight.ovsdb</groupId>
+    <groupId>org.opendaylight.netvirt</groupId>
     <artifactId>ovsdb-ui-bundle</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
@@ -27,8 +27,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         </license>
     </licenses>
     <scm>
-        <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-        <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+        <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+        <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
         <tag>HEAD</tag>
         <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
     </scm>
@@ -44,7 +44,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
           <version>${dlux.version}</version>
         </dependency>
         <dependency>
-          <groupId>org.opendaylight.ovsdb</groupId>
+          <groupId>org.opendaylight.netvirt</groupId>
           <artifactId>ovsdb-ui-module</artifactId>
           <version>${project.version}</version>
         </dependency>
@@ -72,7 +72,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
                 <configuration>
                <artifactItems>
                    <artifactItem>
-                      <groupId>org.opendaylight.ovsdb</groupId>
+                      <groupId>org.opendaylight.netvirt</groupId>
                       <artifactId>ovsdb-ui-module</artifactId>
                       <version>${project.version}</version>
                       <overWrite>true</overWrite>
index 23429519e6686a8532a9fcc125bff4d0debd1aaa..167156aa33205e37fe7d8befbbf45a53fb308d2b 100644 (file)
@@ -15,7 +15,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <relativePath/>
     </parent>
 
-    <groupId>org.opendaylight.ovsdb</groupId>
+    <groupId>org.opendaylight.netvirt</groupId>
     <artifactId>ovsdb-ui-module</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>jar</packaging>
@@ -27,8 +27,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         </license>
     </licenses>
     <scm>
-        <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-        <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+        <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+        <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
         <tag>HEAD</tag>
         <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
     </scm>
index 403828f33b7c7e3ececd9eff3c25abd86a283634..da5c76ae93a7b2d26c46dd3a4bdd5e576a0a12f3 100644 (file)
@@ -16,7 +16,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
   
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>ovsdb-ui</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>ovsdb-ui</name>
diff --git a/pom.xml b/pom.xml
index c5cc2b52f8b9e2a4b04c6d7fb74bd3f8eda9f431..2f42e5a1cdfddef5c2782c6b91fb0bb344089aac 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -18,8 +18,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>ovsdb</artifactId>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>netvirt</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name> <!-- Used by Sonar to set project name -->
   <packaging>pom</packaging>
@@ -39,8 +39,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
@@ -50,23 +50,15 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </prerequisites>
 
   <modules>
-    <!-- Parent POM files -->
     <module>commons</module>
-
-    <module>library</module>
-    <!-- Aggregations -->
     <module>features</module>
     <module>karaf</module>
-    <!-- OVSDB Components -->
-    <module>southbound</module>
+    <module>netvirt</module>
     <module>openstack</module>
-    <module>ovsdb-artifacts</module>
-    <module>schemas</module>
-    <module>utils</module>
+    <module>netvirt-artifacts</module>
     <module>ovsdb-ui</module>
     <module>routemgr</module>
-    <module>hwvtepsouthbound</module>
-    <module>netvirt</module>
+    <module>utils</module>
   </modules>
 
   <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
index a6f6920bb62e6e30abe07ab2eea2ffae704a3e73..6aac3d3ce30da14ba33dfeadb8ef18eca80f9777 100644 (file)
@@ -34,3 +34,7 @@ Contents
 - Qos-and-Queue-Collection-Environment-Variables.postman_environment : Postman environment file that defines variables used by the Qos-and-Queue-Collection.json.postman_collection
 
 - Qos-and-Queue-Collection.json.postman_collection - Collection of Postman Restconf commands for doing CRUD operations on Qos and Queue entries.
+
+- readable_flows.py : script for formatting ovs-ofctl dump-flows output into a more readable format. Run w/ -h for help
+
+- pplogs.py : script for reformatting serialized nested objects in OpenDaylight log lines. Run w/ -h for help
diff --git a/resources/commons/pplog.py b/resources/commons/pplog.py
new file mode 100755 (executable)
index 0000000..8cc4e3d
--- /dev/null
@@ -0,0 +1,69 @@
+#!/usr/bin/python
+
+import string
+from sys import stdout,stdin,argv,exit
+
+if len(argv) > 1 and argv[1] in ['-h', '-?', '--h', '--help']:
+    print 'pplog.py pretty prints Open Daylight log lines, useful for lines containing large nested objects'
+    print 'Usage: Simply pipe the lines you are interested through this script'
+    exit(0)
+
+line_num = 0
+def nl():
+    global line_num
+    line_num += 1
+    stdout.write('\n' + i)
+
+for l in stdin:
+    if '|' not in l: continue
+
+    (t, level, component, cat, art, msg) = string.split(l, '|', maxsplit=5)
+
+    I = '  '
+    opener = '[{<'
+    closer = ']}>'
+    i = ''
+
+    in_ws = 1
+    is_empty_list = 0
+    last_char = ''
+    title = ''
+    title_stack = []
+
+    for c in msg:
+        if in_ws and c in ' \t': continue
+        in_ws = 0
+
+        if c in closer:
+            i = i[:-2]
+            if not is_empty_list and last_char not in closer: nl()
+            in_ws = 1
+            is_empty_list = 0
+            title = ''
+        elif is_empty_list:
+            is_empty_list = 0
+            nl()
+
+        if last_char in closer and c != ',': nl()
+
+        stdout.write(c)
+        if not c in opener: title += c
+        last_char = c
+
+        if c in closer:
+            if len(title_stack):
+                (t,ln) = title_stack.pop()
+                if (line_num - ln) > 5: stdout.write(' /* ' + t.strip() + ' */')
+
+        if c in opener:
+            i += I
+            in_ws = 1
+            is_empty_list = 1
+            if title:
+                title_stack.append((title, line_num))
+                title = ''
+
+        if c == ',':
+            nl()
+            in_ws = 1
+            title = ''
diff --git a/resources/commons/readable_flows.py b/resources/commons/readable_flows.py
new file mode 100755 (executable)
index 0000000..4390184
--- /dev/null
@@ -0,0 +1,134 @@
+#!/usr/bin/python
+
+import subprocess
+import sys
+import re
+from collections import defaultdict
+
+help ='''## readable_flows.py:
+
+This script pretty prints ovs flows created by ovsdb. Features include:
+
+1. Where possible, MACs are followed by their corresponding IP (in parenthases) and vice-versa
+2. Tunnel ids are followed by the decimal representation used by Open Daylight
+3. Counters and stats are removed so that meaningful diffs may be generated
+4. Table numbers are given together with descriptive names
+5. Flows are grouped together by priority in decending order
+
+### Usage:
+This script must be run on the OpenStack controller since it uses the
+neutron command to map MACs and IPs.
+> sudo ovs-ofctl -OOpenFlow13 dump-flows br-int | python readable_flows.py
+'''
+
+if len(sys.argv) > 1 and sys.argv[1] in ['-h', '-?', '--h', '--help']:
+    print help
+    sys.exit(0)
+
+DEFAULT_PRIO=32768
+
+TABLE_NAME = { \
+0: 'CLASSIFIER',\
+20: 'GATEWAY_RESOLVER',\
+10: 'DIRECTOR',\
+10: 'SFC_CLASSIFIER',\
+20: 'ARP_RESPONDER',\
+30: 'INBOUND_NAT',\
+40: 'EGRESS_ACL',\
+50: 'LOAD_BALANCER',\
+60: 'ROUTING',\
+70: 'ICMP_ECHO',\
+70: 'L3_FORWARDING',\
+80: 'L2_REWRITE',\
+90: 'INGRESS_ACL',\
+100: 'OUTBOUND_NAT',\
+110: 'L2_FORWARDING'}
+
+PORT_LIST_CMD = 'neutron port-list -c mac_address -c fixed_ips'.split(' ')
+
+LINE_PATTERN = '.*(?P<table>table=\d*), (?P<counters>n_packets=\d*, n_bytes=\d*), (?P<prio>priority=\d*)?,?(?P<rule>.*)'
+MAX_LINE = 30
+
+def print_rules(table, rules_by_prio):
+    print ''
+    cut = table.find('=')
+    print table.upper() + ' (' + TABLE_NAME[int(table[cut+1:])] + ')'
+
+    prios = rules_by_prio.keys()
+    prios.sort()
+    prios.reverse()
+    for prio in prios:
+        print '    priority=%i' % prio,
+        if DEFAULT_PRIO == prio: print '(DEFAULT_PRIO)'
+        else: print ''
+        for rule in rules_by_prio[prio]:
+            print_flow('        ', re.sub('actions=', 'ACTIONS=', rule))
+
+def tun_match_to_decimal(m):
+    s = m.group('num')
+    return 'tun_id=0x%s(%i)' % (s, int(s, 16))
+def tun_set_to_decimal(m):
+    s = m.group('num')
+    return '0x%s(%i)->tun_id' % (s, int(s, 16))
+
+def print_flow(indent, f):
+    print indent + f
+# WIP
+#    flow = indent + f
+#    if len(flow) <= MAX_LINE: 
+#        print flow
+#        return
+#    
+#    cut = flow.find('ACTIONS')
+#    match = flow[0:cut - 1]
+#    action = indent + indent + flow[cut:]
+#    print match
+#    while action:
+#        if len(action) <= MAX_LINE:
+#            print action
+#            break
+#        cut = action.rfind(',', 0, MAX_LINE)
+#        if cut < 2: 
+#            print action
+#            break
+#        print action[0:cut + 1]
+#        action = indent + indent + (' ' * len('ACTIONS=')) + action[cut +1:]
+
+port_list_out = subprocess.check_output(PORT_LIST_CMD)
+
+addresses = []
+for line in port_list_out.split('\n')[2:]:
+    if re.match('^$', line): continue
+    if '----' in line: continue
+    line = re.sub('^\| ', '', line)
+    line = re.sub(' *\|$', '', line)
+    (mac, fixed_ip) = line.split(' | ')
+    ip = eval(fixed_ip)['ip_address']
+    addresses.append((mac, ip))
+
+table = ''
+rules_by_prio = defaultdict(list)
+for line in sys.stdin:
+    for (mac, ip) in addresses: 
+        line = re.sub(mac, '%s(%s)' % (mac, ip), line)
+        line = re.sub('=%s(\D)' % ip, '=%s(%s)\\1' % (ip, mac), line)
+    line = re.sub('tun_id=0x(?P<num>[0-9a-fA-F]*)', tun_match_to_decimal, line)
+    line = re.sub('0x(?P<num>[0-9a-fA-F]*)->tun_id', tun_set_to_decimal, line)
+    match = re.match(LINE_PATTERN, line)
+    if not match: 
+        print '[Not a flow line?]:  ' + line,
+        continue
+
+    if  match.group('table') != table:
+        if table:
+            print_rules(table, rules_by_prio)
+            rules_by_prio = defaultdict(list)
+        table = match.group('table')
+
+    prio = DEFAULT_PRIO
+    prio_str = match.group('prio')
+    if None != prio_str: prio = int(prio_str[9:])
+    rules_by_prio[prio].append(match.group('rule'))
+
+print_rules(table, rules_by_prio)
+
index 91ac25ad44d80828ec908bdeadcd80322bb4c172..97013c3b566786e1d59aa38db283c5f7e3751849 100644 (file)
@@ -3,6 +3,7 @@ $deps = [ 'build-essential',
           'dkms',
           'fakeroot',
           'graphviz',
+          'libssl-dev',
           'linux-headers-generic',
           'python-all',
           'python-qt4',
index 59d8ae4aa77afdca89e8e2eb5cde776c3caa08f0..a8a6d5de70eb85225d1537e474b029fa3dac5537 100644 (file)
@@ -6,7 +6,7 @@ terms of the Eclipse Public License v1.0 which accompanies this distribution,
 and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL\r
 -->\r
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
-  <groupId>org.opendaylight.ovsdb</groupId>\r
+  <groupId>org.opendaylight.netvirt</groupId>\r
   <parent>\r
     <groupId>org.opendaylight.odlparent</groupId>\r
     <artifactId>odlparent-lite</artifactId>\r
index 8845459eec7d4a72df2a15701341aeb600e244f2..8abd80f7029043b9e39290bef1338bcfa7c4725f 100644 (file)
@@ -15,7 +15,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>routemgr-api</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
index fbc18c57857ba05648b4993dfd9d9adefedc3b14..4555e8e79e8442119df9848531cdb69a7f0620b9 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>routemgr-artifacts</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>pom</packaging>
index 2b2fad5e4dd1871207714842c16cacfcbcd54a98..2e0e60b689d78943f07765b64307038b2ff5b5c0 100644 (file)
@@ -8,7 +8,7 @@
     <version>0.5.0-SNAPSHOT</version>
     <relativePath/>
   </parent>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>routemgr-config</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>jar</packaging>
index 6aef01b09f534529018493ddcd3ce714baa31790..db43b3b449c48736d27cdd5760a6172ba54bb02a 100644 (file)
@@ -12,7 +12,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
     <version>1.7.0-SNAPSHOT</version>
     <relativePath></relativePath>
   </parent>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>routemgr-features</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
index 91381b0bcfd49fb94049c1b6ed9dc8b741deb6bd..2002743db3b21c5507e5ef67243c8aa8932feaa7 100644 (file)
@@ -16,7 +16,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>routemgr-impl</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
@@ -121,8 +121,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         <configuration>
           <instructions>
             <Export-Package>
-              org.opendaylight.ovsdb.routemgr,
-              org.opendaylight.ovsdb.routemgr.*,
+              org.opendaylight.netvirt.routemgr,
+              org.opendaylight.netvirt.routemgr.*,
               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.routemgr.impl.rev141210.*</Export-Package>
           </instructions>
         </configuration>
similarity index 97%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/IPv6RtrFlow.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/IPv6RtrFlow.java
index 2da88c287d89a2cf77b2f18c4a26df1c13b84eeb..b8f79535c723a318952fb9d717357cb835aa72e7 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,7 +22,6 @@ import java.util.concurrent.ConcurrentMap;
 
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.InstructionsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActions;
@@ -51,7 +50,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv6MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
@@ -64,7 +62,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
 import java.math.BigInteger;
similarity index 99%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/IfMgr.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/IfMgr.java
index 299dda3a0f9f81b8a657bf89592d7c4a2cceb09c..f0d4d0e4609504709e268cd06801a86682698df8 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
similarity index 99%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/NetDataListener.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/NetDataListener.java
index bb6d1793a00a03366de099b3e30e602df78bc69c..3356af2743a76c0a94592d0a8aec5f2bb4cb24cc 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 
similarity index 99%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/OvsdbDataListener.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/OvsdbDataListener.java
index 09813d7c7f6e2755981c2a795a02a1a54c30938b..11c94f9d7ffd513783fb3a24690777656ffccad2 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
similarity index 95%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/PktHandler.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/PktHandler.java
index 5ee8f81f3c104d4807cbc2ba1343fbdc44fa1799..35fd5bb7c016ff7364e6422270928bacba878fb3 100644 (file)
@@ -6,11 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
+import org.opendaylight.netvirt.routemgr.utils.BitBufferHelper;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
-import org.opendaylight.ovsdb.routemgr.utils.BitBufferHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
similarity index 98%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/VirtualPort.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/VirtualPort.java
index 49febb2b7dcfa9525735673c5e14e592c6c70564..15efe3dcd881d626108429d68049603b1868af50 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
similarity index 98%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/VirtualRouter.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/VirtualRouter.java
index 941a6eb7a98a53f7eaa7c941b653d31d24f664aa..fce0681b46ec24739217a64e07f14c4043581ad5 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
similarity index 98%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/net/VirtualSubnet.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/net/VirtualSubnet.java
index 658b4aaed7ad1c0f2f14a1526fbf542e3e987d7e..715056f8439828aef5ffc6862075f5d4af1e33e0 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.net;
+package org.opendaylight.netvirt.routemgr.net;
 
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
similarity index 99%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/utils/BitBufferHelper.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/utils/BitBufferHelper.java
index 187c98a223c97cc9bbb56c2963f5ebb11dfe983f..401bdedf6b2a983f1106ef369e59c21a889950f9 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.utils;
+package org.opendaylight.netvirt.routemgr.utils;
 
 
 import org.slf4j.Logger;
similarity index 92%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/utils/BufferException.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/utils/BufferException.java
index c279eba2b9d94f98115589897afb2eeac161ba8c..f07526a68ec650c6172afe85e4e1be414f2833f9 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.routemgr.utils;
+package org.opendaylight.netvirt.routemgr.utils;
 
 
 /**
similarity index 99%
rename from routemgr/routemgr-impl/src/main/java/org/opendaylight/ovsdb/routemgr/utils/NetUtils.java
rename to routemgr/routemgr-impl/src/main/java/org/opendaylight/netvirt/routemgr/utils/NetUtils.java
index 1a972abf77c80dc0d95207a5ba2fb5c4ced748a2..27ee5ab45fcc947f11a4c945692717f2bb29dc89 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.routemgr.utils;
+package org.opendaylight.netvirt.routemgr.utils;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index a7213e6d109705c76e6dedaa58d94128ad888cbf..2bb1386e24db5c726c287ca8b1be53d4b1844d90 100644 (file)
@@ -2,23 +2,20 @@ package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.routemg
 
 import com.google.common.base.Preconditions;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.ovsdb.routemgr.net.OvsdbDataListener;
+import org.opendaylight.netvirt.routemgr.net.OvsdbDataListener;
 import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
 
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
 
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.opendaylight.ovsdb.routemgr.net.PktHandler;
-import org.opendaylight.ovsdb.routemgr.net.NetDataListener;
-import org.opendaylight.ovsdb.routemgr.net.IPv6RtrFlow;
+import org.opendaylight.netvirt.routemgr.net.PktHandler;
+import org.opendaylight.netvirt.routemgr.net.NetDataListener;
+import org.opendaylight.netvirt.routemgr.net.IPv6RtrFlow;
 
 public class RoutemgrImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.routemgr.impl.rev141210.AbstractRoutemgrImplModule {
 
index 90361e5be2725fa3a55936e6343701e3a155fd0c..fbf4a51de9ada50a8898574c2d5801ef99bb3862 100644 (file)
@@ -13,7 +13,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
     <relativePath/>
   </parent>
   <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>routemgr-karaf</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
index 6b3916645f6fc0337d0ebe9f10f8a69a0341fb1d..0ab3231688e4cbe119439463544b8b29e8bd4046 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>utils.config</artifactId>
   <name>${project.artifactId}</name>
   <version>1.3.0-SNAPSHOT</version>
@@ -39,16 +39,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
 
-  <properties>
-    <powermock.version>1.6.4</powermock.version>
-  </properties>
-
   <dependencies>
     <!-- testing dependencies -->
     <dependency>
@@ -61,19 +57,16 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.powermock</groupId>
       <artifactId>powermock-api-mockito</artifactId>
       <scope>test</scope>
-      <version>${powermock.version}</version>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-core</artifactId>
-      <version>${powermock.version}</version>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-module-junit4</artifactId>
       <scope>test</scope>
-      <version>${powermock.version}</version>
     </dependency>
   </dependencies>
 
similarity index 97%
rename from utils/config/src/main/java/org/opendaylight/ovsdb/utils/config/ConfigProperties.java
rename to utils/config/src/main/java/org/opendaylight/netvirt/utils/config/ConfigProperties.java
index 6cef8f5753a26620ae7045f7912a547f78deca23..acf3140fea333d3f1c44a946de6fd716aaa5b867 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.utils.config;
+package org.opendaylight.netvirt.utils.config;
 
 import java.util.HashMap;
 import java.util.Map;
similarity index 99%
rename from utils/config/src/test/java/org/opendaylight/ovsdb/utils/config/ConfigPropertiesTest.java
rename to utils/config/src/test/java/org/opendaylight/netvirt/utils/config/ConfigPropertiesTest.java
index d0fac74adc426fa3284a3f3aa3a8d7335e9f93bd..90cc403f92276a2582a848c4fd283159a08dff7d 100644 (file)
@@ -7,7 +7,7 @@
 *
 * Authors : Flavio Fernandes
 */
-package org.opendaylight.ovsdb.utils.config;
+package org.opendaylight.netvirt.utils.config;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
diff --git a/utils/hwvtepsouthbound-utils/pom.xml b/utils/hwvtepsouthbound-utils/pom.xml
deleted file mode 100644 (file)
index 0eeb322..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>config-parent</artifactId>
-    <version>0.5.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
-
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>utils.hwvtepsouthbound-utils</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
-  <packaging>bundle</packaging>
-
-  <dependencies>
-    <!-- project specific dependencies -->
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>hwvtepsouthbound-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>hwvtepsouthbound-impl</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>utils.mdsal-utils</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <!-- testing dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-</project>
\ No newline at end of file
diff --git a/utils/hwvtepsouthbound-utils/src/main/java/org/opendaylight/ovsdb/utils/hwvtepsouthbound/utils/HwvtepSouthboundUtils.java b/utils/hwvtepsouthbound-utils/src/main/java/org/opendaylight/ovsdb/utils/hwvtepsouthbound/utils/HwvtepSouthboundUtils.java
deleted file mode 100644 (file)
index 21f3d8d..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. 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.ovsdb.utils.hwvtepsouthbound.utils;
-
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundConstants;
-import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundMapper;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfo;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class HwvtepSouthboundUtils {
-    private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundUtils.class);
-    private static final int HWVTEP_UPDATE_TIMEOUT = 1000;
-    private final MdsalUtils mdsalUtils;
-
-    public HwvtepSouthboundUtils(MdsalUtils mdsalUtils) {
-        this.mdsalUtils = mdsalUtils;
-    }
-
-    public static NodeId createNodeId(IpAddress ip, PortNumber port) {
-        String uriString = HwvtepSouthboundConstants.HWVTEP_URI_PREFIX + "://"
-                + String.valueOf(ip.getValue()) + ":" + port.getValue();
-        Uri uri = new Uri(uriString);
-        return new NodeId(uri);
-    }
-
-    public static Node createNode(ConnectionInfo key) {
-        NodeBuilder nodeBuilder = new NodeBuilder();
-        nodeBuilder.setNodeId(createNodeId(key.getRemoteIp(), key.getRemotePort()));
-        nodeBuilder.addAugmentation(HwvtepGlobalAugmentation.class, createHwvtepAugmentation(key));
-        return nodeBuilder.build();
-    }
-
-    public static HwvtepGlobalAugmentation createHwvtepAugmentation(ConnectionInfo key) {
-        HwvtepGlobalAugmentationBuilder hwvtepGlobalBuilder = new HwvtepGlobalAugmentationBuilder();
-        hwvtepGlobalBuilder.setConnectionInfo(key);
-        return hwvtepGlobalBuilder.build();
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key) {
-        return createInstanceIdentifier(key.getRemoteIp(), key.getRemotePort());
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(IpAddress ip, PortNumber port) {
-        InstanceIdentifier<Node> path = InstanceIdentifier
-                .create(NetworkTopology.class)
-                .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
-                .child(Node.class,createNodeKey(ip,port));
-        LOG.debug("Created hwvtep path: {}",path);
-        return path;
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key, HwvtepNodeName name) {
-        return HwvtepSouthboundMapper.createInstanceIdentifier(
-                        createManagedNodeId(key, name));
-    }
-
-    private static NodeId createManagedNodeId(ConnectionInfo key, HwvtepNodeName nodeName) {
-        return createManagedNodeId(key.getRemoteIp(), key.getRemotePort(), nodeName);
-    }
-
-    private static NodeId createManagedNodeId(IpAddress remoteIp, PortNumber remotePort, HwvtepNodeName nodeName) {
-        //This assumes that HwvtepNode can only be Physical switch
-        return new NodeId(createNodeId(remoteIp,remotePort).getValue()
-                        + "/" + HwvtepSouthboundConstants.PSWITCH_URI_PREFIX + "/" + nodeName.getValue());
-    }
-
-    public static NodeKey createNodeKey(IpAddress ip, PortNumber port) {
-        return new NodeKey(createNodeId(ip, port));
-    }
-
-    public static Object connectionInfoToString(ConnectionInfo connectionInfo) {
-        return String.valueOf(
-                        connectionInfo.getRemoteIp().getValue()) + ":" + connectionInfo.getRemotePort().getValue();
-    }
-
-}
diff --git a/utils/it-utils/pom.xml b/utils/it-utils/pom.xml
new file mode 100644 (file)
index 0000000..be18d67
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (C) 2016 Red Hat, 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+  <parent>
+    <groupId>org.opendaylight.controller</groupId>
+    <artifactId>config-parent</artifactId>
+    <version>0.5.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.opendaylight.netvirt</groupId>
+  <artifactId>utils.it-utils</artifactId>
+  <version>1.3.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
+    <tag>HEAD</tag>
+    <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
+  </scm>
+
+  <properties>
+    <ovsdb.version>1.3.0-SNAPSHOT</ovsdb.version>
+  </properties>
+
+  <dependencies>
+      <dependency>
+          <groupId>org.opendaylight.controller</groupId>
+          <artifactId>sal-binding-api</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>${project.groupId}</groupId>
+          <artifactId>utils.mdsal-utils</artifactId>
+          <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.opendaylight.ovsdb</groupId>
+          <artifactId>utils.mdsal-utils</artifactId>
+        <version>${ovsdb.version}</version>
+      </dependency>
+      <dependency>
+          <groupId>org.opendaylight.ovsdb</groupId>
+          <artifactId>southbound-api</artifactId>
+          <version>${ovsdb.version}</version>
+      </dependency>
+      <dependency>
+          <groupId>org.opendaylight.ovsdb</groupId>
+          <artifactId>utils.southbound-utils</artifactId>
+          <version>${project.version}</version>
+      </dependency>
+      <dependency>
+          <groupId>org.opendaylight.mdsal.model</groupId>
+          <artifactId>ietf-inet-types</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>org.opendaylight.mdsal.model</groupId>
+          <artifactId>ietf-topology</artifactId>
+      </dependency>
+      <dependency>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+          <scope>compile</scope>
+      </dependency>
+  </dependencies>
+</project>
diff --git a/utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/ItConstants.java b/utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/ItConstants.java
new file mode 100644 (file)
index 0000000..e6c14a4
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2015 Red Hat, 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.netvirt.utils.it.utils;
+
+/**
+ * Constants for SouthboundIT
+ */
+public final class ItConstants {
+    private ItConstants() {
+        throw new AssertionError("This class should not be instantiated.");
+    }
+
+    public static final String ORG_OPS4J_PAX_LOGGING_CFG = "etc/org.ops4j.pax.logging.cfg";
+    public static final String CUSTOM_PROPERTIES = "etc/custom.properties";
+    public static final String SERVER_IPADDRESS = "ovsdbserver.ipaddress";
+    public static final String SERVER_PORT = "ovsdbserver.port";
+    public static final String CONTROLLER_IPADDRESS = "ovsdb.controller.address";
+    public static final String USERSPACE_ENABLED = "ovsdb.userspace.enabled";
+    public static final String SERVER_EXTRAS = "ovsdbserver.extras";
+    public static final String CONNECTION_TYPE = "ovsdbserver.connection";
+    public static final String CONNECTION_TYPE_ACTIVE = "active";
+    public static final String CONNECTION_TYPE_PASSIVE = "passive";
+    public static final int CONNECTION_INIT_TIMEOUT = 10000;
+    public static final String DEFAULT_SERVER_IPADDRESS = "127.0.0.1";
+    public static final String DEFAULT_SERVER_PORT = "6640";
+    public static final String DEFAULT_OPENFLOW_PORT = "6653";
+    public static final String DEFAULT_SERVER_EXTRAS = "false";
+    public static final String BRIDGE_NAME = "brtest";
+    public static final String PORT_NAME = "porttest";
+    public static final String INTEGRATION_BRIDGE_NAME = "br-int";
+    public static final String OPENFLOW_CONNECTION_PROTOCOL = "tcp";
+    public static final String NETVIRT_TOPOLOGY_ID = "netvirt:1";
+}
diff --git a/utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/ItUtils.java b/utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/ItUtils.java
new file mode 100644 (file)
index 0000000..1ee2ab3
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.netvirt.utils.it.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.List;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.ovsdb.utils.mdsal.utils.NotifyingDataChangeListener;
+import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This class contains various utility methods used in OVSDB integration tests (IT).
+ */
+public class ItUtils {
+    private static final Logger LOG = LoggerFactory.getLogger(ItUtils.class);
+    MdsalUtils mdsalUtils;
+    SouthboundUtils southboundUtils;
+    DataBroker dataBroker;
+
+    /**
+     * Create a new ItUtils instance
+     * @param dataBroker  md-sal data broker
+     */
+    public ItUtils(DataBroker dataBroker) {
+        this.dataBroker = dataBroker;
+        mdsalUtils = new MdsalUtils(dataBroker);
+        southboundUtils = new SouthboundUtils(mdsalUtils);
+    }
+
+    /**
+     * Get a NodeInfo instance initialized with this ItUtil's DataBroker
+     * @param connectionInfo ConnectionInfo for the OVSDB server
+     * @param waitList For tracking outstanding md-sal events notifications
+     * @return
+     */
+    public NodeInfo createNodeInfo(ConnectionInfo connectionInfo, List<NotifyingDataChangeListener> waitList) {
+        return new NodeInfo(connectionInfo, this, waitList);
+    }
+
+    /**
+     * Checks whether the OVSDB controller is connected. This method will retry 10 times and will through an
+     * AssertionError for any number of unexpected states.
+     * @param connectionInfo
+     * @return true if connected
+     * @throws InterruptedException
+     */
+    public boolean isControllerConnected(ConnectionInfo connectionInfo) throws InterruptedException {
+        LOG.info("isControllerConnected enter");
+        ControllerEntry controllerEntry;
+        Node ovsdbNode = southboundUtils.getOvsdbNode(connectionInfo);
+        assertNotNull("ovsdb node not found", ovsdbNode);
+
+        String controllerTarget = southboundUtils.getControllersFromOvsdbNode(ovsdbNode).get(0);
+        assertNotNull("Failed to get controller target", controllerTarget);
+
+        for (int i = 0; i < 10; i++) {
+            LOG.info("isControllerConnected try {}: looking for controller: {}", i, controllerTarget);
+            OvsdbBridgeAugmentation bridge =
+                    southboundUtils.getBridge(connectionInfo, "br-int");
+            if (bridge != null && bridge.getControllerEntry() != null) {
+                controllerEntry = bridge.getControllerEntry().iterator().next();
+                assertEquals(controllerTarget, controllerEntry.getTarget().getValue());
+                if (controllerEntry.isIsConnected()) {
+                    LOG.info("isControllerConnected exit: true {}", controllerTarget);
+                    return true;
+                }
+            }
+            Thread.sleep(1000);
+        }
+        LOG.info("isControllerConnected exit: false {}", controllerTarget);
+        return false;
+    }
+
+    public static DataBroker getDatabroker(BindingAwareBroker.ProviderContext providerContext) {
+        DataBroker dataBroker = providerContext.getSALService(DataBroker.class);
+        assertNotNull("dataBroker should not be null", dataBroker);
+        return dataBroker;
+    }
+
+    public Boolean getNetvirtTopology() {
+        LOG.info("getNetvirtTopology: looking for {}...", ItConstants.NETVIRT_TOPOLOGY_ID);
+        Boolean found = false;
+        final TopologyId topologyId = new TopologyId(new Uri(ItConstants.NETVIRT_TOPOLOGY_ID));
+        InstanceIdentifier<Topology> path =
+                InstanceIdentifier.create(NetworkTopology.class).child(Topology.class, new TopologyKey(topologyId));
+        for (int i = 0; i < 60; i++) {
+            Topology topology = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, path);
+            if (topology != null) {
+                LOG.info("getNetvirtTopology: found {}...", ItConstants.NETVIRT_TOPOLOGY_ID);
+                found = true;
+                break;
+            } else {
+                LOG.info("getNetvirtTopology: still looking (try {})...", i);
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                    LOG.warn("Interrupted while waiting for {}", ItConstants.NETVIRT_TOPOLOGY_ID, e);
+                }
+            }
+        }
+        return found;
+    }
+}
diff --git a/utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/NodeInfo.java b/utils/it-utils/src/main/java/org/opendaylight/netvirt/utils/it/utils/NodeInfo.java
new file mode 100644 (file)
index 0000000..85a29e3
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.netvirt.utils.it.utils;
+
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.ovsdb.utils.mdsal.utils.NotifyingDataChangeListener;
+import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for connections to an OVSDB node. Contains various info for the node
+ * as public data members.
+ */
+public class NodeInfo {
+    private static final Logger LOG = LoggerFactory.getLogger(NodeInfo.class);
+    public static final String INTEGRATION_BRIDGE_NAME = "br-int";
+
+    private ConnectionInfo connectionInfo;
+    private InstanceIdentifier<Node> ovsdbIid;
+    InstanceIdentifier<Node> bridgeIid;
+    public long datapathId;
+    public Node ovsdbNode;
+    public Node bridgeNode;
+    NotifyingDataChangeListener ovsdbWaiter;
+    NotifyingDataChangeListener bridgeWaiter;
+    List<NotifyingDataChangeListener> waitList;
+    ItUtils itUtils;
+
+    /**
+     * Create a new NodeInfo object
+     * @param connectionInfo of the OVSDB node
+     * @param itUtils ItUtils instance
+     * @param waitList for tracking outstanding md-sal events
+     */
+    NodeInfo(ConnectionInfo connectionInfo, ItUtils itUtils, List<NotifyingDataChangeListener> waitList) {
+        this.connectionInfo = connectionInfo;
+        this.itUtils = itUtils;
+        this.waitList = waitList;
+        ovsdbIid = SouthboundUtils.createInstanceIdentifier(connectionInfo);
+        bridgeIid = SouthboundUtils.createInstanceIdentifier(connectionInfo, INTEGRATION_BRIDGE_NAME);
+    }
+
+    /**
+     * Connect to the OVSDB node, wait for the connection to be established and for the integration bridge
+     * to be successfully created. Contains assertions for unexpected states
+     * @throws InterruptedException
+     */
+    public void connect() throws InterruptedException {
+        ovsdbWaiter = new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, ovsdbIid, waitList);
+        ovsdbWaiter.registerDataChangeListener(itUtils.dataBroker);
+        bridgeWaiter = new NotifyingDataChangeListener(LogicalDatastoreType.OPERATIONAL, bridgeIid, waitList);
+        bridgeWaiter.registerDataChangeListener(itUtils.dataBroker);
+
+        assertNotNull("connection failed", itUtils.southboundUtils.addOvsdbNode(connectionInfo, 0));
+
+        ovsdbWaiter.waitForCreation();
+        ovsdbNode = itUtils.southboundUtils.getOvsdbNode(connectionInfo);
+        assertNotNull("node is not connected", ovsdbNode);
+
+        bridgeWaiter.waitForCreation();
+        assertTrue("Controller " + SouthboundUtils.connectionInfoToString(connectionInfo)
+                + " is not connected", itUtils.isControllerConnected(connectionInfo));
+
+        bridgeNode = itUtils.southboundUtils.getBridgeNode(ovsdbNode, INTEGRATION_BRIDGE_NAME);
+        assertNotNull("bridge " + INTEGRATION_BRIDGE_NAME + " was not found", bridgeNode);
+        datapathId = itUtils.southboundUtils.getDataPathId(bridgeNode);
+        String datapathIdString = itUtils.southboundUtils.getDatapathId(bridgeNode);
+        LOG.info("testNetVirt: bridgeNode: {}, datapathId: {} - {}", bridgeNode, datapathIdString, datapathId);
+        assertNotEquals("datapathId was not found", datapathId, 0);
+    }
+
+    /**
+     * Remove integration bridge and teardown connection. Contains assertions for unexpected states.
+     * @throws InterruptedException
+     */
+    public void disconnect() throws InterruptedException {
+        assertTrue(itUtils.southboundUtils.deleteBridge(connectionInfo, INTEGRATION_BRIDGE_NAME, 0));
+        itUtils.southboundUtils.deleteBridge(connectionInfo, INTEGRATION_BRIDGE_NAME, 0);
+        bridgeWaiter.waitForDeletion();
+        Node bridgeNode = itUtils.mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, bridgeIid);
+        assertNull("Bridge should not be found", bridgeNode);
+        assertTrue(itUtils.southboundUtils.disconnectOvsdbNode(connectionInfo, 0));
+        itUtils.southboundUtils.disconnectOvsdbNode(connectionInfo, 0);
+        ovsdbWaiter.waitForDeletion();
+        Node ovsdbNode = itUtils.mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, ovsdbIid);
+        assertNull("Ovsdb node should not be found", ovsdbNode);
+    }
+
+}
diff --git a/utils/mdsal-node/pom.xml b/utils/mdsal-node/pom.xml
deleted file mode 100644 (file)
index 66b5dc7..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright (C) 2014 Red Hat, 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
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>config-parent</artifactId>
-    <version>0.5.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
-
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>utils.mdsal-node</artifactId>
-  <name>${project.artifactId}</name>
-  <version>1.3.0-SNAPSHOT</version>
-  <packaging>jar</packaging>
-  <description>The OVSDB Plugin integration project is a project for OpenDaylight that will implement the Open vSwitch Database RFC 7047 management protocol allowing the Southbound configuration of vSwitches and a network virtualization implementation.</description>
-  <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
-  <licenses>
-    <license>
-      <name>Eclipse Public License v1.0</name>
-      <url>http://www.eclipse.org/legal/epl-v10.html</url>
-    </license>
-  </licenses>
-  <developers>
-    <developer>
-      <name>Sam Hague</name>
-      <email>shague@gmail.com</email>
-      <url>https://github.com/shague</url>
-    </developer>
-  </developers>
-  <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
-  </scm>
-
-  <dependencies>
-    <!-- controller dependencies -->
-    <dependency>
-      <groupId>org.opendaylight.controller.model</groupId>
-      <artifactId>model-inventory</artifactId>
-    </dependency>
-    <!-- testing dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/utils/mdsal-node/src/main/java/org/opendaylight/ovsdb/utils/mdsal/node/NodeUtils.java b/utils/mdsal-node/src/main/java/org/opendaylight/ovsdb/utils/mdsal/node/NodeUtils.java
deleted file mode 100644 (file)
index 057a4bf..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2015 Red Hat, 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.ovsdb.utils.mdsal.node;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-
-public class NodeUtils {
-
-    public static String getId (String identifier) {
-        String id = identifier;
-
-        String[] pair = identifier.split("\\|");
-        if ((pair.length > 1) && (pair[0].equals("OVS"))) {
-            id = pair[1];
-        }
-        return id;
-    }
-
-    public static Node getOpenFlowNode (String identifier) {
-        NodeId nodeId = new NodeId(identifier);
-        NodeKey nodeKey = new NodeKey(nodeId);
-
-        return new NodeBuilder()
-                .setId(nodeId)
-                .setKey(nodeKey)
-                .build();
-    }
-}
diff --git a/utils/mdsal-node/src/main/java/org/opendaylight/ovsdb/utils/mdsal/node/StringConvertor.java b/utils/mdsal-node/src/main/java/org/opendaylight/ovsdb/utils/mdsal/node/StringConvertor.java
deleted file mode 100644 (file)
index 307ca23..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2015 Brocade Communications 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.ovsdb.utils.mdsal.node;
-
-import java.math.BigInteger;
-
-public class StringConvertor{
-
-    public static long dpidStringToLong(String values) {
-        return new BigInteger(values.replaceAll(":", ""), 16).longValue();
-    }
-
-}
diff --git a/utils/mdsal-node/src/test/java/org/opendaylight/ovsdb/utils/mdsal/node/NodeUtilsTest.java b/utils/mdsal-node/src/test/java/org/opendaylight/ovsdb/utils/mdsal/node/NodeUtilsTest.java
deleted file mode 100644 (file)
index c6b0a2b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Copyright (C) 2015 Red Hat, 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
- *
- *  Authors : Sam Hague
- */
-package org.opendaylight.ovsdb.utils.mdsal.node;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
-
-public class NodeUtilsTest {
-    private static final String OVS = "OVS";
-    private static final String IDENTIFIER = "192.168.120.31:45001";
-    private static final String OVS_IDENTIFIER = OVS + "|" + IDENTIFIER;
-    private static final String BAD_IDENTIFIER = "BAD" + "|" + IDENTIFIER;
-
-    @Test
-    public void testGetId () {
-        String identifier = NodeUtils.getId(OVS_IDENTIFIER);
-        assertEquals("getId(" + OVS_IDENTIFIER + ") should return " + IDENTIFIER,
-                identifier, IDENTIFIER);
-
-        identifier = NodeUtils.getId(OVS);
-        assertEquals("getId(" + OVS + ") should return " + OVS,
-                identifier, OVS);
-
-        identifier = NodeUtils.getId(BAD_IDENTIFIER);
-        assertEquals("getId(" + BAD_IDENTIFIER + ") should return " + BAD_IDENTIFIER,
-                identifier, BAD_IDENTIFIER);
-    }
-
-    @Test
-    public void testGetOpenFlowNode () {
-        Node node = NodeUtils.getOpenFlowNode(OVS_IDENTIFIER);
-        assertNotNull("node should not be null", node);
-        assertEquals("id should be " + OVS_IDENTIFIER,
-                node.getId().getValue(), OVS_IDENTIFIER);
-    }
-}
-
index b44c5d83fc6a23912369a888b298f4e98fb0c157..8f3c04afa489b254928f1868f0a56a3877962491 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>utils.mdsal-openflow</artifactId>
   <name>${project.artifactId}</name>
   <version>1.3.0-SNAPSHOT</version>
@@ -39,8 +39,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
@@ -105,7 +105,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         <configuration>
           <instructions>
             <Export-Package>
-              org.opendaylight.ovsdb.utils.mdsal.openflow
+              org.opendaylight.netvirt.utils.mdsal.openflow
             </Export-Package>
           </instructions>
         </configuration>
similarity index 95%
rename from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/ActionUtils.java
rename to utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/ActionUtils.java
index dfaed3a3ac8a806ba45229a49623ae93aea46867..4b7863c258dbbab9d5620a58f17329b805e0584e 100644 (file)
@@ -6,9 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.utils.mdsal.openflow;
+package org.opendaylight.netvirt.utils.mdsal.openflow;
 
+import com.google.common.collect.Lists;
 import com.google.common.net.InetAddresses;
+
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
@@ -32,7 +34,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.Address;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActionsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
@@ -104,6 +109,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcOfIpSrcCaseBuilder;
 
 import java.math.BigInteger;
+import java.util.List;
 
 public final class ActionUtils {
     public static Action dropAction() {
@@ -449,6 +455,14 @@ public final class ActionUtils {
         return new NxActionMultipathNodesNodeTableFlowApplyActionsCaseBuilder().setNxMultipath(r).build();
     }
 
+    /**
+     * Builds the  conntrack action.
+     * @param flags the flags for the action
+     * @param zoneSrc the zoneSrc
+     * @param conntrackZone the conntrackZone
+     * @param recircTable the recirc table if it is a recirc action
+     * @return the conntrack action.
+     */
     public static Action nxConntrackAction(Integer flags, Long zoneSrc,
                                            Integer conntrackZone, Short recircTable) {
         NxConntrack r = new NxConntrackBuilder()
@@ -460,6 +474,23 @@ public final class ActionUtils {
         return new NxActionConntrackNodesNodeTableFlowApplyActionsCaseBuilder().setNxConntrack(r).build();
     }
 
+    /**
+     * Builds the apply action builder for the action
+     * @param action the conntrack action.
+     * @return the apply action builder.
+     */
+    public static ApplyActionsBuilder conntrackActionBuilder(Action action) {
+        ActionBuilder ab = new ActionBuilder();
+        ab.setAction(action);
+        ab.setOrder(0);
+        ab.setKey(new ActionKey(0));
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionList =
+                Lists.newArrayList();
+        actionList.add(ab.build());
+        ApplyActionsBuilder aab = new ApplyActionsBuilder();
+        aab.setAction(actionList);
+        return aab;
+    }
     /**
      * Accepts a MAC address and returns the corresponding long, where the
      * MAC bytes are set on the lower order bytes of the long.
similarity index 87%
rename from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/FlowUtils.java
rename to utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/FlowUtils.java
index 74fea32479bf269bc184ff771c0d5a82cb35227b..203f20bafee153c3457bf380f7a8c99364e5c77b 100644 (file)
@@ -1,15 +1,17 @@
 /*
- * Copyright (c) 2015 Red Hat, Inc. and others. All rights reserved.
+ * Copyright (c) 2015 - 2016 Red Hat, 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.ovsdb.utils.mdsal.openflow;
+package org.opendaylight.netvirt.utils.mdsal.openflow;
 
 import com.google.common.base.Optional;
+
 import java.util.concurrent.ExecutionException;
+
 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
@@ -89,7 +91,7 @@ public class FlowUtils {
                 return data.get();
             }
         } catch (InterruptedException|ExecutionException e) {
-            LOG.error(e.getMessage(), e);
+            LOG.error("Failed to get flow {}", flowBuilder.getFlowName(), e);
         }
 
         LOG.info("Cannot find data for Flow {} in {}", flowBuilder.getFlowName(), store);
@@ -105,6 +107,21 @@ public class FlowUtils {
                 .setPriority(0);
     }
 
+    /**
+     * Creates a flowBuilder.
+     * @param flowName the flow name
+     * @param priority the priority
+     * @param matchBuilder the match builder
+     * @param tableNo the table no to which flow needs to be inserted.
+     * @return the created flow builder.
+     */
+    public static FlowBuilder createFlowBuilder(String flowName,Integer priority,
+                                                MatchBuilder matchBuilder, short tableNo) {
+        FlowBuilder flowBuilder = new FlowBuilder();
+        flowBuilder.setMatch(matchBuilder.build());
+        initFlowBuilder(flowBuilder, flowName, tableNo).setPriority(priority);
+        return flowBuilder;
+    }
     /**
      * Sets up common defaults for the given flow builder: a flow identifier and key based on the given flow name,
      * strict, no barrier, the given table identifier, no hard timeout and no idle timeout.
similarity index 98%
rename from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/InstructionUtils.java
rename to utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/InstructionUtils.java
index 4c59d45c555d382d70361647de70c6ff9620d4c6..9e7c8b5d2ab94305681604efb81fe8132cfc5222 100644 (file)
@@ -1,14 +1,19 @@
 /*
- * Copyright (c) 2013, 2015 Red Hat, Inc. and others. All rights reserved.
+ * Copyright (c) 2013 - 2016 Red Hat, 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.ovsdb.utils.mdsal.openflow;
+package org.opendaylight.netvirt.utils.mdsal.openflow;
 
-import static org.opendaylight.ovsdb.utils.mdsal.openflow.ActionUtils.dropAction;
+import static org.opendaylight.netvirt.utils.mdsal.openflow.ActionUtils.dropAction;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
@@ -69,15 +74,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.TunnelIpv4MatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatchBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
 public class InstructionUtils {
     private static final Logger LOG = LoggerFactory.getLogger(InstructionUtils.class);
     private static final int IPV4 = 0x8100;
@@ -1131,7 +1130,6 @@ public class InstructionUtils {
     /**
      * Get a list of Instructions containing Nicira extensions that can have
      * additional OF/OXM instructions added to the returned Instruction list
-     *
      * @param instructions org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instructions
      * @return instruction list that additional
      */
@@ -1148,4 +1146,23 @@ public class InstructionUtils {
         }
         return ins;
     }
+
+    /**
+     * Create InstructionBuilder with apply action.
+     *
+     * @param aab the apply action Builder.
+     * @param order the position of the instruction in the instruction list.
+     * @param drop indicates whether it is a drop instruction.
+     * @return the instruction builder.
+     */
+    public static InstructionBuilder createInstructionBuilder(ApplyActionsBuilder aab, int order, boolean drop) {
+        InstructionBuilder ib = new InstructionBuilder();
+        ib.setOrder(order);
+        ib.setKey(new InstructionKey(order));
+        ib.setInstruction(new ApplyActionsCaseBuilder().setApplyActions(aab.build()).build());
+        if (drop) {
+            InstructionUtils.createDropInstructions(ib);
+        }
+        return ib;
+    }
 }
similarity index 96%
rename from utils/mdsal-openflow/src/main/java/org/opendaylight/ovsdb/utils/mdsal/openflow/MatchUtils.java
rename to utils/mdsal-openflow/src/main/java/org/opendaylight/netvirt/utils/mdsal/openflow/MatchUtils.java
index ba8011004713fb6aaac3706a18952e7fb2fbfe3f..dbdc3538ea10db43731217ab6f7c33af564e4cb5 100644 (file)
@@ -1,12 +1,12 @@
 /*
- * Copyright (c) 2013, 2015 Red Hat, Inc. and others. All rights reserved.
+ * Copyright (c) 2013 - 2016 Red Hat, 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.ovsdb.utils.mdsal.openflow;
+package org.opendaylight.netvirt.utils.mdsal.openflow;
 
 import java.math.BigInteger;
 import java.util.ArrayList;
@@ -23,6 +23,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.M
 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpSourceHardwareAddressBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.arp.match.fields.ArpTargetHardwareAddressBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
@@ -50,7 +52,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev14
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg5;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg6;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmOfEthDst;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlowBuilder;
@@ -82,7 +83,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.ni
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.nsp.grouping.NxmNxNspBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxNsiKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.nsi.grouping.NxmNxNsiBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.of.eth.dst.grouping.NxmOfEthDstBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.of.tcp.src.grouping.NxmOfTcpSrcBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.of.tcp.dst.grouping.NxmOfTcpDstBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.of.udp.dst.grouping.NxmOfUdpDstBuilder;
@@ -107,14 +107,16 @@ public class MatchUtils {
     public static final short ALL_ICMP = -1;
     public static final long ETHERTYPE_IPV4 = 0x0800;
     public static final long ETHERTYPE_IPV6 = 0x86dd;
+    public static final long ETHERTYPE_ARP = 0x0806L;
     public static final int UNTRACKED_CT_STATE = 0x00;
     public static final int UNTRACKED_CT_STATE_MASK = 0x20;
     public static final int TRACKED_EST_CT_STATE = 0x22;
-    public static final int TRACKED_EST_CT_STATE_MASK = 0x22;
+    public static final int TRACKED_REL_CT_STATE = 0x24;
     public static final int TRACKED_NEW_CT_STATE = 0x21;
+    public static final int TRACKED_INV_CT_STATE = 0x30;
+    public static final int TRACKED_INV_CT_STATE_MASK = 0x30;
+    public static final int TRACKED_CT_STATE_MASK = 0x37;
     public static final int TRACKED_NEW_CT_STATE_MASK = 0x21;
-    public static final int NEW_CT_STATE = 0x01;
-    public static final int NEW_CT_STATE_MASK = 0x01;
 
     /**
      * Create Ingress Port Match dpidLong, inPort
@@ -167,12 +169,12 @@ public class MatchUtils {
         EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
         if (srcMac != null) {
             EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
-            ethSourceBuilder.setAddress(new MacAddress(srcMac));
+            ethSourceBuilder.setAddress(srcMac);
             ethernetMatch.setEthernetSource(ethSourceBuilder.build());
         }
         if (dstMac != null) {
             EthernetDestinationBuilder ethDestinationBuild = new EthernetDestinationBuilder();
-            ethDestinationBuild.setAddress(new MacAddress(dstMac));
+            ethDestinationBuild.setAddress(dstMac);
             ethernetMatch.setEthernetDestination(ethDestinationBuild.build());
         }
         if (matchBuilder.getEthernetMatch() != null && matchBuilder.getEthernetMatch().getEthernetType() != null) {
@@ -195,7 +197,7 @@ public class MatchUtils {
 
         EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
         EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
-        ethSourceBuilder.setAddress(new MacAddress(sMacAddr));
+        ethSourceBuilder.setAddress(sMacAddr);
         ethernetMatch.setEthernetSource(ethSourceBuilder.build());
         matchBuilder.setEthernetMatch(ethernetMatch.build());
 
@@ -231,7 +233,7 @@ public class MatchUtils {
 
         EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
         EthernetDestinationBuilder ethDestinationBuilder = new EthernetDestinationBuilder();
-        ethDestinationBuilder.setAddress(new MacAddress(dMacAddr));
+        ethDestinationBuilder.setAddress(dMacAddr);
         if (mask != null) {
             ethDestinationBuilder.setMask(mask);
         }
@@ -347,6 +349,29 @@ public class MatchUtils {
         return matchBuilder;
     }
 
+    /**
+     * Builds the arp match with src and destintion mac address.
+     * @param matchBuilder the match builder
+     * @param srcMac the src mac address , will not be added to match if null.
+     * @param dstMac the destination mac address, will not be added to match if null.
+     * @return the match builder with the matches
+     */
+    public static MatchBuilder addArpMacMatch(MatchBuilder matchBuilder, String srcMac, String dstMac) {
+        ArpMatchBuilder arpMatch = new ArpMatchBuilder();
+        if (null != srcMac) {
+            ArpSourceHardwareAddressBuilder arpSrc = new ArpSourceHardwareAddressBuilder();
+            arpSrc.setAddress(new MacAddress(srcMac));
+            arpMatch.setArpSourceHardwareAddress(arpSrc.build());
+        }
+        if (null != dstMac) {
+            ArpTargetHardwareAddressBuilder arpDst = new ArpTargetHardwareAddressBuilder();
+            arpDst.setAddress(new MacAddress(dstMac));
+            arpMatch.setArpTargetHardwareAddress(arpDst.build());
+        }
+        matchBuilder.setLayer3Match(arpMatch.build());
+        return matchBuilder;
+    }
+
     /**
      * @param matchBuilder MatchBuilder Object without a match yet
      * @param srcip        String containing an IPv4 prefix
@@ -725,7 +750,7 @@ public class MatchUtils {
         ethernetMatch.setEthernetType(ethTypeBuilder.build());
 
         EthernetDestinationBuilder ethDestinationBuilder = new EthernetDestinationBuilder();
-        ethDestinationBuilder.setAddress(new MacAddress(attachedMac));
+        ethDestinationBuilder.setAddress(attachedMac);
         ethernetMatch.setEthernetDestination(ethDestinationBuilder.build());
 
         matchBuilder.setEthernetMatch(ethernetMatch.build());
@@ -770,7 +795,7 @@ public class MatchUtils {
 
         EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
         EthernetDestinationBuilder ethDestBuilder = new EthernetDestinationBuilder();
-        ethDestBuilder.setAddress(new MacAddress(dMacAddr));
+        ethDestBuilder.setAddress(dMacAddr);
         if (mask != null) {
             ethDestBuilder.setMask(mask);
         }
@@ -819,7 +844,7 @@ public class MatchUtils {
         ethernetMatch.setEthernetType(ethTypeBuilder.build());
 
         EthernetSourceBuilder ethSourceBuilder = new EthernetSourceBuilder();
-        ethSourceBuilder.setAddress(new MacAddress(attachedMac));
+        ethSourceBuilder.setAddress(attachedMac);
         ethernetMatch.setEthernetSource(ethSourceBuilder.build());
 
         matchBuilder.setEthernetMatch(ethernetMatch.build());
@@ -902,7 +927,7 @@ public class MatchUtils {
 
         EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
         EthernetSourceBuilder ethSrcBuilder = new EthernetSourceBuilder();
-        ethSrcBuilder.setAddress(new MacAddress(dMacAddr));
+        ethSrcBuilder.setAddress(dMacAddr);
         if (mask != null) {
             ethSrcBuilder.setMask(mask);
         }
@@ -985,7 +1010,7 @@ public class MatchUtils {
 
         EthernetMatchBuilder ethernetMatch = new EthernetMatchBuilder();
         EthernetDestinationBuilder ethDestinationBuilder = new EthernetDestinationBuilder();
-        ethDestinationBuilder.setAddress(new MacAddress(dMacAddr));
+        ethDestinationBuilder.setAddress(dMacAddr);
         if (mask != null) {
             ethDestinationBuilder.setMask(mask);
         }
@@ -1156,7 +1181,7 @@ public class MatchUtils {
     public static MatchBuilder createSrcL3Ipv4MatchWithMac(MatchBuilder matchBuilder, Ipv4Prefix srcip, MacAddress srcMac) {
 
         Ipv4MatchBuilder ipv4MatchBuilder = new Ipv4MatchBuilder();
-        ipv4MatchBuilder.setIpv4Source(new Ipv4Prefix(srcip));
+        ipv4MatchBuilder.setIpv4Source(srcip);
         EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
         ethTypeBuilder.setType(new EtherType(0x0800L));
         EthernetMatchBuilder eth = new EthernetMatchBuilder();
@@ -1181,7 +1206,7 @@ public class MatchUtils {
     public static MatchBuilder createSrcL3Ipv6MatchWithMac(MatchBuilder matchBuilder, Ipv6Prefix srcip, MacAddress srcMac) {
 
         Ipv6MatchBuilder ipv6MatchBuilder = new Ipv6MatchBuilder();
-        ipv6MatchBuilder.setIpv6Source(new Ipv6Prefix(srcip));
+        ipv6MatchBuilder.setIpv6Source(srcip);
         EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
         ethTypeBuilder.setType(new EtherType(0x86DDL));
         EthernetMatchBuilder eth = new EthernetMatchBuilder();
@@ -1203,10 +1228,10 @@ public class MatchUtils {
      * @param dstMac The destination mac address
      * @return matchBuilder Map Object with a match
      */
-    public static MatchBuilder createV4EtherMatchWithType(MatchBuilder matchBuilder,String srcMac, String dstMac)
+    public static MatchBuilder createV4EtherMatchWithType(MatchBuilder matchBuilder,String srcMac, String dstMac, Long type)
     {
         EthernetTypeBuilder ethTypeBuilder = new EthernetTypeBuilder();
-        ethTypeBuilder.setType(new EtherType(0x0800L));
+        ethTypeBuilder.setType(new EtherType(type));
         EthernetMatchBuilder eth = new EthernetMatchBuilder();
         eth.setEthernetType(ethTypeBuilder.build());
         if (null != srcMac) {
similarity index 90%
rename from utils/mdsal-openflow/src/test/java/org/opendaylight/ovsdb/utils/mdsal/openflow/MatchUtilsTest.java
rename to utils/mdsal-openflow/src/test/java/org/opendaylight/netvirt/utils/mdsal/openflow/MatchUtilsTest.java
index 807895c9e7d703de699b1a4b2e04f3d787ae5289..05ca4b503b9261dd5b29f5c265031977b87fc3f5 100644 (file)
@@ -7,7 +7,7 @@
  *
  *  Authors : Sam Hague
  */
-package org.opendaylight.ovsdb.utils.mdsal.openflow;
+package org.opendaylight.netvirt.utils.mdsal.openflow;
 
 import static org.junit.Assert.assertTrue;
 import org.junit.Test;
index f0c0610db1a26846ab95c7053ebf29d9f99b9612..21b2ff7531d31fba9b3d15e331f5a538e584ce1c 100644 (file)
@@ -10,7 +10,7 @@
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>utils.mdsal-utils</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
 
   <dependencies>
-    <!-- testing dependencies -->
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>sal-binding-api</artifactId>
+    </dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
         <configuration>
           <instructions>
             <Export-Package>
-              org.opendaylight.ovsdb.utils.mdsal.utils
+              org.opendaylight.netvirt.utils.mdsal.utils
             </Export-Package>
           </instructions>
         </configuration>
       </plugin>
     </plugins>
   </build>
-</project>
\ No newline at end of file
+</project>
similarity index 99%
rename from utils/mdsal-utils/src/main/java/org/opendaylight/ovsdb/utils/mdsal/utils/MdsalUtils.java
rename to utils/mdsal-utils/src/main/java/org/opendaylight/netvirt/utils/mdsal/utils/MdsalUtils.java
index 642ba080ae2e31a2f23a3ca38b4dab10612d88cd..a243f60be3cc2e2e0ded12091a0ff79e8fbe690b 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.utils.mdsal.utils;
+package org.opendaylight.netvirt.utils.mdsal.utils;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.CheckedFuture;
diff --git a/utils/mdsal-utils/src/main/java/org/opendaylight/netvirt/utils/mdsal/utils/NotifyingDataChangeListener.java b/utils/mdsal-utils/src/main/java/org/opendaylight/netvirt/utils/mdsal/utils/NotifyingDataChangeListener.java
new file mode 100644 (file)
index 0000000..66049b4
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2016 Red Hat, 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.netvirt.utils.mdsal.utils;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * This class provides methods for checking or waiting for various md-sal operations to complete.
+ * Once an instance is created one must invoke the registerDataChangeListener method
+ * with a DataBroker.
+ */
+public class NotifyingDataChangeListener implements AutoCloseable, DataChangeListener {
+    private static final Logger LOG = LoggerFactory.getLogger(NotifyingDataChangeListener.class);
+    private LogicalDatastoreType type;
+    private final Set<InstanceIdentifier<?>> createdIids = new HashSet<>();
+    private final Set<InstanceIdentifier<?>> removedIids = new HashSet<>();
+    private final Set<InstanceIdentifier<?>> updatedIids = new HashSet<>();
+    private InstanceIdentifier<?> iid;
+    private final int RETRY_WAIT = 100;
+    private final int MDSAL_TIMEOUT = 1000;
+    private ListenerRegistration<?> listenerRegistration;
+    private List<NotifyingDataChangeListener> waitList = null;
+
+    /**
+     * Create a new NotifyingDataChangeListener
+     * @param type
+     * @param iid of the md-sal object we're waiting for
+     * @param waitList for tracking outstanding changes
+     */
+    public NotifyingDataChangeListener(LogicalDatastoreType type,
+                                        InstanceIdentifier<?> iid, List<NotifyingDataChangeListener> waitList) {
+        this.type = type;
+        this.iid = iid;
+        this.waitList = waitList;
+        if(this.waitList != null) {
+            this.waitList.add(this);
+        }
+    }
+
+    /**
+     * Completely reset the state of this NotifyingDataChangeListener.
+     * @param type
+     * @param iid of the md-sal object we're waiting for
+     * @throws Exception
+     */
+    private void modify(LogicalDatastoreType type, InstanceIdentifier<?> iid) throws Exception {
+        this.close();
+        this.clear();
+        this.type = type;
+        this.iid = iid;
+    }
+
+    @Override
+    public void onDataChanged(
+            AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> asyncDataChangeEvent) {
+        LOG.info("{} DataChanged: created {}", type, asyncDataChangeEvent.getCreatedData().keySet());
+        LOG.info("{} DataChanged: updated {}", type, asyncDataChangeEvent.getUpdatedData().keySet());
+        LOG.info("{} DataChanged: removed {}", type, asyncDataChangeEvent.getRemovedPaths());
+        createdIids.addAll(asyncDataChangeEvent.getCreatedData().keySet());
+        removedIids.addAll(asyncDataChangeEvent.getRemovedPaths());
+        updatedIids.addAll(asyncDataChangeEvent.getUpdatedData().keySet());
+        synchronized (this) {
+            notifyAll();
+        }
+    }
+
+    public boolean isCreated(InstanceIdentifier<?> iid) {
+        return createdIids.remove(iid);
+    }
+
+    public boolean isUpdated(InstanceIdentifier<?> iid) {
+        return updatedIids.remove(iid);
+    }
+
+    public boolean isRemoved(InstanceIdentifier<?> iid) {
+        return removedIids.remove(iid);
+    }
+
+    public void clear() {
+        createdIids.clear();
+        removedIids.clear();
+        updatedIids.clear();
+    }
+
+    public void registerDataChangeListener(DataBroker dataBroker) {
+        listenerRegistration = dataBroker.registerDataChangeListener(type, iid, this,
+                AsyncDataBroker.DataChangeScope.SUBTREE);
+    }
+
+    public void waitForCreation() throws InterruptedException {
+        waitForCreation(MDSAL_TIMEOUT);
+    }
+
+    public void waitForCreation(long timeout) throws InterruptedException {
+        synchronized (this) {
+            long _start = System.currentTimeMillis();
+            LOG.info("Waiting for {} DataChanged creation on {}", type, iid);
+            while (!isCreated(iid) && (System.currentTimeMillis() - _start) < timeout) {
+                wait(RETRY_WAIT);
+            }
+            LOG.info("Woke up, waited {}ms for creation of {}", (System.currentTimeMillis() - _start), iid);
+        }
+    }
+
+    public void waitForUpdate() throws InterruptedException {
+        waitForUpdate(MDSAL_TIMEOUT);
+    }
+
+    public void waitForUpdate(long timeout) throws InterruptedException {
+        synchronized (this) {
+            long _start = System.currentTimeMillis();
+            LOG.info("Waiting for {} DataChanged update on {}", type, iid);
+            while (!isUpdated(iid) && (System.currentTimeMillis() - _start) < timeout) {
+                wait(RETRY_WAIT);
+            }
+            LOG.info("Woke up, waited {}ms for update of {}", (System.currentTimeMillis() - _start), iid);
+        }
+    }
+
+    public void waitForDeletion() throws InterruptedException {
+        waitForDeletion(MDSAL_TIMEOUT);
+    }
+
+    public void waitForDeletion(long timeout) throws InterruptedException {
+        synchronized (this) {
+            long _start = System.currentTimeMillis();
+            LOG.info("Waiting for {} DataChanged deletion on {}", type, iid);
+            while (!isRemoved(iid) && (System.currentTimeMillis() - _start) < timeout) {
+                wait(RETRY_WAIT);
+            }
+            LOG.info("Woke up, waited {}ms for deletion of {}", (System.currentTimeMillis() - _start), iid);
+        }
+    }
+
+    @Override
+    public void close() throws Exception {
+        if (listenerRegistration != null) {
+            try {
+                listenerRegistration.close();
+            } catch (final Exception ex) {
+                LOG.warn("Failed to close registration {}, iid {}", listenerRegistration, iid, ex);
+            }
+        }
+        if (waitList != null) {
+            waitList.remove(this);
+        }
+        listenerRegistration = null;
+    }
+}
similarity index 98%
rename from utils/mdsal-utils/src/test/java/org/opendaylight/ovsdb/utils/mdsal/utils/MdsalUtilsTest.java
rename to utils/mdsal-utils/src/test/java/org/opendaylight/netvirt/utils/mdsal/utils/MdsalUtilsTest.java
index c0e9ebbf21afd0503eb97bdffdf1f4f7843bec2c..38b1c9d41c92d4e6ebbac6197d2cb8f57eaf7447 100644 (file)
@@ -5,7 +5,7 @@
  * 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.ovsdb.utils.mdsal.utils;
+package org.opendaylight.netvirt.utils.mdsal.utils;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
index 32ea9216cc7c684364e650b0664bf2dd148a09df..c6bd5fa622ddb22ff16b64efeff2ca92a7e1b2da 100644 (file)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright Â© 2015 Red Hat, 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
-  -->
+Copyright (C) 2015 Red Hat, 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
+-->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       <relativePath/>
     </parent>
 
-    <groupId>org.opendaylight.ovsdb</groupId>
+    <groupId>org.opendaylight.netvirt</groupId>
     <artifactId>utils.neutron-utils</artifactId>
     <version>1.3.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
 
+    <properties>
+        <neutron.version>0.7.0-SNAPSHOT</neutron.version>
+    </properties>
+
     <dependencies>
     <!-- project specific dependencies -->
         <dependency>
             <artifactId>utils.mdsal-utils</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>utils.servicehelper</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     <!-- neutron dependencies -->
         <dependency>
             <groupId>org.opendaylight.neutron</groupId>
             <artifactId>model</artifactId>
             <version>0.7.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.neutron</groupId>
+            <artifactId>neutron-spi</artifactId>
+            <version>${neutron.version}</version>
+        </dependency>
     </dependencies>
-</project>
\ No newline at end of file
+</project>
similarity index 77%
rename from utils/neutron-utils/src/main/java/org/opendaylight/ovsdb/utils/neutron/utils/NeutronModelsDataStoreHelper.java
rename to utils/neutron-utils/src/main/java/org/opendaylight/netvirt/utils/neutron/utils/NeutronModelsDataStoreHelper.java
index 30bd0fbe34cccab35f5f64bc6ab1692f3cb2b65b..fa78525ac3cf9e0f36350a40796b33426f5156d0 100644 (file)
@@ -5,13 +5,16 @@
  * 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.ovsdb.utils.neutron.utils;
+package org.opendaylight.netvirt.utils.neutron.utils;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.Routers;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.Networks;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.NetworkKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.Ports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.PortKey;
@@ -59,22 +62,29 @@ public class NeutronModelsDataStoreHelper {
         return mdsalPort;
     }
 
-    private InstanceIdentifier<Routers> getNeutrounRoutersPath() {
+    public InstanceIdentifier<Routers> getNeutrounRoutersPath() {
         return InstanceIdentifier
                 .create(Neutron.class)
                 .child(Routers.class);
     }
 
-    private InstanceIdentifier<Ports> getNeutrounPortsPath() {
+    public InstanceIdentifier<Ports> getNeutrounPortsPath() {
         return InstanceIdentifier
                 .create(Neutron.class)
                 .child(Ports.class);
     }
 
-    private InstanceIdentifier<Port> getNeutronPortPath(Uuid portId) {
+    public InstanceIdentifier<Port> getNeutronPortPath(Uuid portId) {
         return InstanceIdentifier
                 .create(Neutron.class)
                 .child(Ports.class)
                 .child(Port.class,new PortKey(portId));
     }
+
+    public InstanceIdentifier<Network> getNeutronNetworkPath(Uuid networkId) {
+        return InstanceIdentifier
+                .create(Neutron.class)
+                .child(Networks.class)
+                .child(Network.class,new NetworkKey(networkId));
+    }
 }
diff --git a/utils/neutron-utils/src/main/java/org/opendaylight/netvirt/utils/neutron/utils/NeutronUtils.java b/utils/neutron-utils/src/main/java/org/opendaylight/netvirt/utils/neutron/utils/NeutronUtils.java
new file mode 100644 (file)
index 0000000..c1fd40d
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright Â© 2016 Red Hat, 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.netvirt.utils.neutron.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.opendaylight.neutron.spi.INeutronNetworkCRUD;
+import org.opendaylight.neutron.spi.INeutronPortCRUD;
+import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
+import org.opendaylight.neutron.spi.NeutronNetwork;
+import org.opendaylight.neutron.spi.NeutronPort;
+import org.opendaylight.neutron.spi.NeutronSecurityGroup;
+import org.opendaylight.neutron.spi.NeutronSubnet;
+import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
+
+public class NeutronUtils {
+    public NeutronPort createNeutronPort(String networkId, String subnetId,
+                                         String id, String owner, String ipaddr, String mac) {
+        INeutronPortCRUD iNeutronPortCRUD =
+                (INeutronPortCRUD) ServiceHelper.getGlobalInstance(INeutronPortCRUD.class, this);
+        NeutronPort np = new NeutronPort();
+        np.initDefaults();
+        np.setID(id);
+        np.setDeviceOwner(owner);
+        np.setMacAddress(mac);
+        np.setNetworkUUID(networkId);
+        List<org.opendaylight.neutron.spi.Neutron_IPs> srcAddressList =
+                new ArrayList<>();
+        org.opendaylight.neutron.spi.Neutron_IPs nip = new org.opendaylight.neutron.spi.Neutron_IPs();
+        nip.setIpAddress(ipaddr);
+        nip.setSubnetUUID(subnetId);
+        srcAddressList.add(nip);
+        np.setFixedIPs(srcAddressList);
+        List<NeutronSecurityGroup> nsgs = new ArrayList<>();
+        np.setSecurityGroups(nsgs);
+        iNeutronPortCRUD.add(np);
+        return np;
+    }
+
+    public NeutronSubnet createNeutronSubnet(String subnetId, String tenantId,
+                                              String networkId, String cidr) {
+        INeutronSubnetCRUD iNeutronSubnetCRUD =
+                (INeutronSubnetCRUD) ServiceHelper.getGlobalInstance(INeutronSubnetCRUD.class, this);
+        NeutronSubnet ns = new NeutronSubnet();
+        ns.setID(subnetId);
+        ns.setCidr(cidr);
+        ns.initDefaults();
+        ns.setNetworkUUID(networkId);
+        ns.setTenantID(tenantId);
+        iNeutronSubnetCRUD.add(ns);
+        return ns;
+    }
+
+    public NeutronNetwork createNeutronNetwork(String uuid, String tenantID, String networkTypeVxlan, String segId) {
+        INeutronNetworkCRUD iNeutronNetworkCRUD =
+                (INeutronNetworkCRUD) ServiceHelper.getGlobalInstance(INeutronNetworkCRUD.class, this);
+        NeutronNetwork nn = new NeutronNetwork();
+        nn.setID(uuid);
+        nn.initDefaults();
+        nn.setTenantID(tenantID);
+        nn.setProviderNetworkType(networkTypeVxlan);
+        nn.setProviderSegmentationID(segId);
+        iNeutronNetworkCRUD.addNetwork(nn);
+        return nn;
+    }
+}
index 90ac03ae9e867cb9560d23ac4ddc495b46c59309..373fb355124a01d5287ede08e674ae33d67cb9b2 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>utils</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <name>${project.artifactId}</name>
@@ -39,8 +39,8 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
@@ -50,13 +50,11 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
   </prerequisites>
   <modules>
     <module>config</module>
-    <module>mdsal-node</module>
+    <module>it-utils</module>
     <module>mdsal-openflow</module>
     <module>mdsal-utils</module>
     <module>neutron-utils</module>
     <module>servicehelper</module>
-    <module>southbound-utils</module>
-    <module>hwvtepsouthbound-utils</module>
   </modules>
 
 <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
index 01498477f78ba72d7a98ff3047c6037e49fd4f84..746bf64475d8b6b3911f96440e27055ef54b45ba 100644 (file)
@@ -18,7 +18,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <relativePath/>
   </parent>
 
-  <groupId>org.opendaylight.ovsdb</groupId>
+  <groupId>org.opendaylight.netvirt</groupId>
   <artifactId>utils.servicehelper</artifactId>
   <version>1.3.0-SNAPSHOT</version>
   <packaging>bundle</packaging>
@@ -38,16 +38,12 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     </developer>
   </developers>
   <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ovsdb.git</developerConnection>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/netvirt.git</developerConnection>
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/OVSDB_Integration:Main</url>
   </scm>
 
-  <properties>
-    <powermock.version>1.6.4</powermock.version>
-  </properties>
-
   <dependencies>
     <dependency>
       <groupId>junit</groupId>
@@ -72,19 +68,16 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.powermock</groupId>
       <artifactId>powermock-api-mockito</artifactId>
       <scope>test</scope>
-      <version>${powermock.version}</version>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-core</artifactId>
       <scope>test</scope>
-      <version>${powermock.version}</version>
     </dependency>
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-module-junit4</artifactId>
       <scope>test</scope>
-      <version>${powermock.version}</version>
     </dependency>
     <dependency>
       <groupId>org.springframework.osgi</groupId>
@@ -107,7 +100,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
         <configuration>
           <instructions>
             <Export-Package>
-              org.opendaylight.ovsdb.utils.servicehelper
+              org.opendaylight.netvirt.utils.servicehelper
             </Export-Package>
           </instructions>
         </configuration>
similarity index 98%
rename from utils/servicehelper/src/main/java/org/opendaylight/ovsdb/utils/servicehelper/ServiceHelper.java
rename to utils/servicehelper/src/main/java/org/opendaylight/netvirt/utils/servicehelper/ServiceHelper.java
index 402a9949388897672dd8e5826a3dd5c87844570d..7b7e12d96b7c43c93c82c5f6fa493ab94bdccaa2 100644 (file)
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.ovsdb.utils.servicehelper;
+package org.opendaylight.netvirt.utils.servicehelper;
 
 import java.util.HashMap;
 import java.util.Map;
similarity index 96%
rename from utils/servicehelper/src/test/java/org/opendaylight/ovsdb/utils/servicehelper/ServiceHelperTest.java
rename to utils/servicehelper/src/test/java/org/opendaylight/netvirt/utils/servicehelper/ServiceHelperTest.java
index d04b15a970067771ac20cc2d613dc6f6f6786a59..b06c68d0bba1b117141ad0d57b4c9cff1e23f6cc 100644 (file)
@@ -7,7 +7,7 @@
  *
  *  Authors : Sam Hague
  */
-package org.opendaylight.ovsdb.utils.servicehelper;
+package org.opendaylight.netvirt.utils.servicehelper;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
diff --git a/utils/southbound-utils/pom.xml b/utils/southbound-utils/pom.xml
deleted file mode 100644 (file)
index b2ac59d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.opendaylight.controller</groupId>
-    <artifactId>config-parent</artifactId>
-    <version>0.5.0-SNAPSHOT</version>
-    <relativePath/>
-  </parent>
-
-  <groupId>org.opendaylight.ovsdb</groupId>
-  <artifactId>utils.southbound-utils</artifactId>
-  <version>1.3.0-SNAPSHOT</version>
-  <packaging>bundle</packaging>
-
-  <dependencies>
-    <!-- project specific dependencies -->
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>southbound-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>southbound-impl</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>utils.mdsal-utils</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <!-- testing dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-</project>
\ No newline at end of file
diff --git a/utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java b/utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java
deleted file mode 100644 (file)
index 332c273..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * Copyright (c) 2015 Red Hat, 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.ovsdb.utils.southbound.utils;
-
-import com.google.common.collect.ImmutableBiMap;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-
-import java.util.List;
-import java.util.Map;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.ovsdb.southbound.SouthboundConstants;
-import org.opendaylight.ovsdb.southbound.SouthboundMapper;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeExternalIds;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntryBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceExternalIds;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceExternalIdsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceExternalIdsKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SouthboundUtils {
-    private static final Logger LOG = LoggerFactory.getLogger(SouthboundUtils.class);
-    private static final int OVSDB_UPDATE_TIMEOUT = 1000;
-    public static final TopologyId OVSDB_TOPOLOGY_ID = new TopologyId(new Uri("ovsdb:1"));
-    private final MdsalUtils mdsalUtils;
-
-    public SouthboundUtils(MdsalUtils mdsalUtils) {
-        this.mdsalUtils = mdsalUtils;
-    }
-
-    public static final ImmutableBiMap<String, Class<? extends InterfaceTypeBase>> OVSDB_INTERFACE_TYPE_MAP
-            = new ImmutableBiMap.Builder<String, Class<? extends InterfaceTypeBase>>()
-            .put("internal", InterfaceTypeInternal.class)
-            .put("vxlan", InterfaceTypeVxlan.class)
-            .put("patch", InterfaceTypePatch.class)
-            .put("system", InterfaceTypeSystem.class)
-            .put("tap", InterfaceTypeTap.class)
-            .put("geneve", InterfaceTypeGeneve.class)
-            .put("gre", InterfaceTypeGre.class)
-            .put("ipsec_gre", InterfaceTypeIpsecGre.class)
-            .put("gre64", InterfaceTypeGre64.class)
-            .put("ipsec_gre64", InterfaceTypeIpsecGre64.class)
-            .put("lisp", InterfaceTypeLisp.class)
-            .put("dpdk", InterfaceTypeDpdk.class)
-            .put("dpdkr", InterfaceTypeDpdkr.class)
-            .put("dpdkvhost", InterfaceTypeDpdkvhost.class)
-            .put("dpdkvhostuser", InterfaceTypeDpdkvhostuser.class)
-            .build();
-
-    public static NodeId createNodeId(IpAddress ip, PortNumber port) {
-        String uriString = SouthboundConstants.OVSDB_URI_PREFIX + "://"
-                + String.valueOf(ip.getValue()) + ":" + port.getValue();
-        Uri uri = new Uri(uriString);
-        return new NodeId(uri);
-    }
-
-    public static Node createNode(ConnectionInfo key) {
-        NodeBuilder nodeBuilder = new NodeBuilder();
-        nodeBuilder.setNodeId(createNodeId(key.getRemoteIp(), key.getRemotePort()));
-        nodeBuilder.addAugmentation(OvsdbNodeAugmentation.class, createOvsdbAugmentation(key));
-        return nodeBuilder.build();
-    }
-
-    public static OvsdbNodeAugmentation createOvsdbAugmentation(ConnectionInfo key) {
-        OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = new OvsdbNodeAugmentationBuilder();
-        ovsdbNodeBuilder.setConnectionInfo(key);
-        return ovsdbNodeBuilder.build();
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key) {
-        return createInstanceIdentifier(key.getRemoteIp(), key.getRemotePort());
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(IpAddress ip, PortNumber port) {
-        InstanceIdentifier<Node> path = InstanceIdentifier
-                .create(NetworkTopology.class)
-                .child(Topology.class, new TopologyKey(SouthboundConstants.OVSDB_TOPOLOGY_ID))
-                .child(Node.class,createNodeKey(ip,port));
-        LOG.debug("Created ovsdb path: {}",path);
-        return path;
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key,OvsdbBridgeName bridgeName) {
-        return SouthboundMapper.createInstanceIdentifier(createManagedNodeId(key, bridgeName));
-    }
-
-    public static InstanceIdentifier<Node> createInstanceIdentifier(ConnectionInfo key, String bridgeName) {
-        return createInstanceIdentifier(key, new OvsdbBridgeName(bridgeName));
-    }
-
-    public InstanceIdentifier<TerminationPoint> createTerminationPointInstanceIdentifier(Node node, String portName){
-
-        InstanceIdentifier<TerminationPoint> terminationPointPath = InstanceIdentifier
-                .create(NetworkTopology.class)
-                .child(Topology.class, new TopologyKey(OVSDB_TOPOLOGY_ID))
-                .child(Node.class,node.getKey())
-                .child(TerminationPoint.class, new TerminationPointKey(new TpId(portName)));
-
-        LOG.debug("Termination point InstanceIdentifier generated : {}",terminationPointPath);
-        return terminationPointPath;
-    }
-
-    public static NodeKey createNodeKey(IpAddress ip, PortNumber port) {
-        return new NodeKey(createNodeId(ip, port));
-    }
-
-    public static NodeId createManagedNodeId(ConnectionInfo key, OvsdbBridgeName bridgeName) {
-        return createManagedNodeId(key.getRemoteIp(), key.getRemotePort(), bridgeName);
-    }
-
-    public static NodeId createManagedNodeId(IpAddress ip, PortNumber port, OvsdbBridgeName bridgeName) {
-        return new NodeId(createNodeId(ip,port).getValue()
-                + "/" + SouthboundConstants.BRIDGE_URI_PREFIX + "/" + bridgeName.getValue());
-    }
-
-    public static NodeId createManagedNodeId(InstanceIdentifier<Node> iid) {
-        NodeKey nodeKey = iid.firstKeyOf(Node.class);
-        return nodeKey.getNodeId();
-    }
-
-    public static ConnectionInfo getConnectionInfo(final String addressStr, final String portStr) {
-        InetAddress inetAddress = null;
-        try {
-            inetAddress = InetAddress.getByName(addressStr);
-        } catch (UnknownHostException e) {
-            LOG.warn("Could not allocate InetAddress");
-        }
-
-        IpAddress address = SouthboundMapper.createIpAddress(inetAddress);
-        PortNumber port = new PortNumber(Integer.parseInt(portStr));
-
-        LOG.info("connectionInfo: {}", new ConnectionInfoBuilder()
-                .setRemoteIp(address)
-                .setRemotePort(port)
-                .build());
-        return new ConnectionInfoBuilder()
-                .setRemoteIp(address)
-                .setRemotePort(port)
-                .build();
-    }
-
-    public static String connectionInfoToString(final ConnectionInfo connectionInfo) {
-        return String.valueOf(
-                connectionInfo.getRemoteIp().getValue()) + ":" + connectionInfo.getRemotePort().getValue();
-    }
-
-    public boolean addOvsdbNode(final ConnectionInfo connectionInfo) {
-        return addOvsdbNode(connectionInfo, OVSDB_UPDATE_TIMEOUT);
-    }
-
-    public boolean addOvsdbNode(final ConnectionInfo connectionInfo, long timeout) {
-        boolean result = mdsalUtils.put(LogicalDatastoreType.CONFIGURATION,
-                createInstanceIdentifier(connectionInfo),
-                createNode(connectionInfo));
-        if (timeout != 0) {
-            try {
-                Thread.sleep(timeout);
-            } catch (InterruptedException e) {
-                LOG.warn("Interrupted while waiting after adding OVSDB node {}",
-                        connectionInfoToString(connectionInfo), e);
-            }
-        }
-        return result;
-    }
-
-    public Node getOvsdbNode(final ConnectionInfo connectionInfo) {
-        return mdsalUtils.read(LogicalDatastoreType.OPERATIONAL,
-                createInstanceIdentifier(connectionInfo));
-    }
-
-    public boolean deleteOvsdbNode(final ConnectionInfo connectionInfo) {
-        return deleteOvsdbNode(connectionInfo, OVSDB_UPDATE_TIMEOUT);
-    }
-
-    public boolean deleteOvsdbNode(final ConnectionInfo connectionInfo, long timeout) {
-        boolean result = mdsalUtils.delete(LogicalDatastoreType.CONFIGURATION,
-                createInstanceIdentifier(connectionInfo));
-        if (timeout != 0) {
-            try {
-                Thread.sleep(timeout);
-            } catch (InterruptedException e) {
-                LOG.warn("Interrupted while waiting after deleting OVSDB node {}",
-                        connectionInfoToString(connectionInfo), e);
-            }
-        }
-        return result;
-    }
-
-    public Node connectOvsdbNode(final ConnectionInfo connectionInfo) {
-        return connectOvsdbNode(connectionInfo, OVSDB_UPDATE_TIMEOUT);
-    }
-
-    public Node connectOvsdbNode(final ConnectionInfo connectionInfo, long timeout) {
-        addOvsdbNode(connectionInfo, timeout);
-        Node node = getOvsdbNode(connectionInfo);
-        LOG.info("Connected to {}", connectionInfoToString(connectionInfo));
-        return node;
-    }
-
-    public boolean disconnectOvsdbNode(final ConnectionInfo connectionInfo) {
-        return disconnectOvsdbNode(connectionInfo, OVSDB_UPDATE_TIMEOUT);
-    }
-
-    public boolean disconnectOvsdbNode(final ConnectionInfo connectionInfo, long timeout) {
-        deleteOvsdbNode(connectionInfo, timeout);
-        LOG.info("Disconnected from {}", connectionInfoToString(connectionInfo));
-        return true;
-    }
-
-    public List<ControllerEntry> createControllerEntry(String controllerTarget) {
-        List<ControllerEntry> controllerEntriesList = new ArrayList<>();
-        controllerEntriesList.add(new ControllerEntryBuilder()
-                .setTarget(new Uri(controllerTarget))
-                .build());
-        return controllerEntriesList;
-    }
-
-    /**
-     * Extract the <code>store</code> type data store contents for the particular bridge identified by
-     * <code>bridgeName</code>.
-     *
-     * @param connectionInfo address for the node
-     * @param bridgeName name of the bridge
-     * @param store defined by the <code>LogicalDatastoreType</code> enumeration
-     * @return <code>store</code> type data store contents
-     */
-    public OvsdbBridgeAugmentation getBridge(ConnectionInfo connectionInfo, String bridgeName,
-                                              LogicalDatastoreType store) {
-        OvsdbBridgeAugmentation ovsdbBridgeAugmentation = null;
-        Node bridgeNode = getBridgeNode(connectionInfo, bridgeName, store);
-        if (bridgeNode != null) {
-            ovsdbBridgeAugmentation = bridgeNode.getAugmentation(OvsdbBridgeAugmentation.class);
-        }
-        return ovsdbBridgeAugmentation;
-    }
-
-    /**
-     * extract the <code>LogicalDataStoreType.OPERATIONAL</code> type data store contents for the particular bridge
-     * identified by <code>bridgeName</code>
-     *
-     * @param connectionInfo address for the node
-     * @param bridgeName name of the bridge
-     * @see <code>NetvirtIT.getBridge(ConnectionInfo, String, LogicalDatastoreType)</code>
-     * @return <code>LogicalDatastoreType.OPERATIONAL</code> type data store contents
-     */
-    public OvsdbBridgeAugmentation getBridge(ConnectionInfo connectionInfo, String bridgeName) {
-        return getBridge(connectionInfo, bridgeName, LogicalDatastoreType.OPERATIONAL);
-    }
-
-    /**
-     * Extract the node contents from <code>store</code> type data store for the
-     * bridge identified by <code>bridgeName</code>.
-     *
-     * @param connectionInfo address for the node
-     * @param bridgeName name of the bridge
-     * @param store defined by the <code>LogicalDatastoreType</code> enumeration
-     * @return <code>store</code> type data store contents
-     */
-    public Node getBridgeNode(ConnectionInfo connectionInfo, String bridgeName, LogicalDatastoreType store) {
-        InstanceIdentifier<Node> bridgeIid = createInstanceIdentifier(connectionInfo, new OvsdbBridgeName(bridgeName));
-        return mdsalUtils.read(store, bridgeIid);
-    }
-
-    public boolean deleteBridge(final ConnectionInfo connectionInfo, final String bridgeName) {
-        return deleteBridge(connectionInfo, bridgeName, OVSDB_UPDATE_TIMEOUT);
-    }
-
-    public boolean deleteBridge(final ConnectionInfo connectionInfo, final String bridgeName, long timeout) {
-        boolean result = mdsalUtils.delete(LogicalDatastoreType.CONFIGURATION,
-                createInstanceIdentifier(connectionInfo, new OvsdbBridgeName(bridgeName)));
-        if (timeout != 0) {
-            try {
-                Thread.sleep(timeout);
-            } catch (InterruptedException e) {
-                LOG.warn("Interrupted while waiting after deleting bridge {}", bridgeName, e);
-            }
-        }
-        return result;
-    }
-
-    public List<ProtocolEntry> createMdsalProtocols() {
-        List<ProtocolEntry> protocolList = new ArrayList<>();
-        ImmutableBiMap<String, Class<? extends OvsdbBridgeProtocolBase>> mapper =
-                SouthboundConstants.OVSDB_PROTOCOL_MAP.inverse();
-        protocolList.add(new ProtocolEntryBuilder().setProtocol(mapper.get("OpenFlow13")).build());
-        return protocolList;
-    }
-
-    public boolean addBridge(final ConnectionInfo connectionInfo, InstanceIdentifier<Node> bridgeIid,
-                             final String bridgeName, NodeId bridgeNodeId, final boolean setProtocolEntries,
-                             final Class<? extends OvsdbFailModeBase> failMode, final boolean setManagedBy,
-                             final Class<? extends DatapathTypeBase> dpType,
-                             final List<BridgeExternalIds> externalIds,
-                             final List<ControllerEntry> controllerEntries,
-                             final List<BridgeOtherConfigs> otherConfigs,
-                             final String dpid) throws InterruptedException {
-        return addBridge(connectionInfo, bridgeIid, bridgeName, bridgeNodeId, setProtocolEntries, failMode,
-                setManagedBy, dpType, externalIds, controllerEntries, otherConfigs, dpid);
-    }
-
-    /*
-     * base method for adding test bridges.  Other helper methods used to create bridges should utilize this method.
-     *
-     * @param connectionInfo
-     * @param bridgeIid if passed null, one is created
-     * @param bridgeName cannot be null
-     * @param bridgeNodeId if passed null, one is created based on <code>bridgeIid</code>
-     * @param setProtocolEntries toggles whether default protocol entries are set for the bridge
-     * @param failMode toggles whether default fail mode is set for the bridge
-     * @param setManagedBy toggles whether to setManagedBy for the bridge
-     * @param dpType if passed null, this parameter is ignored
-     * @param externalIds if passed null, this parameter is ignored
-     * @param otherConfig if passed null, this parameter is ignored
-     * @return success of bridge addition
-     * @throws InterruptedException
-     */
-    public boolean addBridge(final ConnectionInfo connectionInfo, InstanceIdentifier<Node> bridgeIid,
-                             final String bridgeName, NodeId bridgeNodeId, final boolean setProtocolEntries,
-                             final Class<? extends OvsdbFailModeBase> failMode, final boolean setManagedBy,
-                             final Class<? extends DatapathTypeBase> dpType,
-                             final List<BridgeExternalIds> externalIds,
-                             final List<ControllerEntry> controllerEntries,
-                             final List<BridgeOtherConfigs> otherConfigs,
-                             final String dpid, long timeout) throws InterruptedException {
-
-        NodeBuilder bridgeNodeBuilder = new NodeBuilder();
-        if (bridgeIid == null) {
-            bridgeIid = createInstanceIdentifier(connectionInfo, new OvsdbBridgeName(bridgeName));
-        }
-        if (bridgeNodeId == null) {
-            bridgeNodeId = SouthboundMapper.createManagedNodeId(bridgeIid);
-        }
-        bridgeNodeBuilder.setNodeId(bridgeNodeId);
-        OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
-        ovsdbBridgeAugmentationBuilder.setBridgeName(new OvsdbBridgeName(bridgeName));
-        if (setProtocolEntries) {
-            ovsdbBridgeAugmentationBuilder.setProtocolEntry(createMdsalProtocols());
-        }
-        if (failMode != null) {
-            ovsdbBridgeAugmentationBuilder.setFailMode(failMode);
-        }
-        if (setManagedBy) {
-            setManagedBy(ovsdbBridgeAugmentationBuilder, connectionInfo);
-        }
-        if (dpType != null) {
-            ovsdbBridgeAugmentationBuilder.setDatapathType(dpType);
-        }
-        if (externalIds != null) {
-            ovsdbBridgeAugmentationBuilder.setBridgeExternalIds(externalIds);
-        }
-        if (controllerEntries != null) {
-            ovsdbBridgeAugmentationBuilder.setControllerEntry(controllerEntries);
-        }
-        if (otherConfigs != null) {
-            ovsdbBridgeAugmentationBuilder.setBridgeOtherConfigs(otherConfigs);
-        }
-        if (dpid != null && !dpid.isEmpty()) {
-            DatapathId datapathId = new DatapathId(dpid);
-            ovsdbBridgeAugmentationBuilder.setDatapathId(datapathId);
-        }
-        bridgeNodeBuilder.addAugmentation(OvsdbBridgeAugmentation.class, ovsdbBridgeAugmentationBuilder.build());
-        LOG.debug("Built with the intent to store bridge data {}",
-                ovsdbBridgeAugmentationBuilder.toString());
-        boolean result = mdsalUtils.merge(LogicalDatastoreType.CONFIGURATION,
-                bridgeIid, bridgeNodeBuilder.build());
-        if (timeout != 0) {
-            Thread.sleep(OVSDB_UPDATE_TIMEOUT);
-        }
-        return result;
-    }
-
-    private void setManagedBy(final OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder,
-                              final ConnectionInfo connectionInfo) {
-        InstanceIdentifier<Node> connectionNodePath = createInstanceIdentifier(connectionInfo);
-        ovsdbBridgeAugmentationBuilder.setManagedBy(new OvsdbNodeRef(connectionNodePath));
-    }
-
-    public boolean addTerminationPoint(
-            Node bridgeNode, String portName, String type, Map<String, String> options,
-            Map<String, String> externalIds) {
-        return addTerminationPoint(bridgeNode, portName, type, options, externalIds, null);
-    }
-
-    public boolean addTerminationPoint(
-            Node bridgeNode, String portName, String type, Map<String, String> options, Map<String, String> externalIds,
-            Long ofPort) {
-        InstanceIdentifier<TerminationPoint> tpIid = createTerminationPointInstanceIdentifier(bridgeNode, portName);
-        OvsdbTerminationPointAugmentationBuilder tpAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder();
-
-        tpAugmentationBuilder.setName(portName);
-        tpAugmentationBuilder.setOfport(ofPort);
-        if (type != null) {
-            tpAugmentationBuilder.setInterfaceType(OVSDB_INTERFACE_TYPE_MAP.get(type));
-        }
-
-        if (options != null && options.size() > 0) {
-            List<Options> optionsList = new ArrayList<>();
-            for (Map.Entry<String, String> entry : options.entrySet()) {
-                OptionsBuilder optionsBuilder = new OptionsBuilder();
-                optionsBuilder.setKey(new OptionsKey(entry.getKey()));
-                optionsBuilder.setOption(entry.getKey());
-                optionsBuilder.setValue(entry.getValue());
-                optionsList.add(optionsBuilder.build());
-            }
-            tpAugmentationBuilder.setOptions(optionsList);
-        }
-
-        if (externalIds != null && externalIds.size() > 0) {
-            List<InterfaceExternalIds> externalIdsList = new ArrayList<>();
-            for (Map.Entry<String, String> entry : externalIds.entrySet()) {
-                InterfaceExternalIdsBuilder interfaceExternalIdsBuilder = new InterfaceExternalIdsBuilder();
-                interfaceExternalIdsBuilder.setKey(new InterfaceExternalIdsKey(entry.getKey()));
-                interfaceExternalIdsBuilder.setExternalIdKey(entry.getKey());
-                interfaceExternalIdsBuilder.setExternalIdValue(entry.getValue());
-                externalIdsList.add(interfaceExternalIdsBuilder.build());
-            }
-            tpAugmentationBuilder.setInterfaceExternalIds(externalIdsList);
-        }
-
-        TerminationPointBuilder tpBuilder = new TerminationPointBuilder();
-        tpBuilder.setKey(InstanceIdentifier.keyOf(tpIid));
-        tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build());
-        /* TODO SB_MIGRATION should this be merge or mdsalUtils.put */
-        return mdsalUtils.put(LogicalDatastoreType.CONFIGURATION, tpIid, tpBuilder.build());
-    }
-
-    public Boolean addTerminationPoint(Node bridgeNode, String portName, String type) {
-        return addTerminationPoint(bridgeNode, portName, type, null, null);
-    }
-}
diff --git a/utils/southbound-utils/src/test/java/SouthboundUtilsTest.java b/utils/southbound-utils/src/test/java/SouthboundUtilsTest.java
deleted file mode 100644 (file)
index 149a619..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2015 Red Hat, 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
- */
-
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-public class SouthboundUtilsTest {
-    @Test
-    public void testDefault() {
-        assertTrue(true);
-    }
-}