<classifier>features</classifier>
<type>xml</type>
</dependency>
- <dependency>
- <groupId>org.opendaylight.openflowplugin</groupId>
- <artifactId>features-openflowplugin-li</artifactId>
- <version>${openflowplugin.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.openflowplugin</groupId>
- <artifactId>features-openflowplugin-extension-li</artifactId>
- <version>${openflowplugin.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>openstack.net-virt</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>utils.neutron-utils</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ovsdb-ui-bundle</artifactId>
<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/hwvtepsouthbound-features/{{VERSION}}/xml/features</repository>
<repository>mvn:org.opendaylight.ovsdb/southbound-features/{{VERSION}}/xml/features</repository>
<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"
- version='${project.version}'>
- <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="${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.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.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>
- <bundle>wrap:mvn:com.googlecode.java-ipv6/java-ipv6/{{VERSION}}</bundle>
- <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.netvirt/ovsdb-ui-bundle/{{VERSION}}</bundle>
<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>
+ <feature version="${openflowplugin.version}">odl-openflowplugin-nsf-model</feature>
+ <feature version="${openflowplugin.version}">odl-openflowplugin-nxm-extensions</feature>
+ <bundle>mvn:org.opendaylight.netvirt/openstack.net-virt/{{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.netvirt/utils.neutron-utils/{{VERSION}}</bundle>
<bundle>mvn:org.opendaylight.netvirt/utils.servicehelper/{{VERSION}}</bundle>
<artifactId>utils.neutron-utils</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>openstack.net-virt</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.opendaylight.ovsdb</groupId>
<artifactId>utils.mdsal-utils</artifactId>
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.openstack.netvirt.NeutronModelsDataStoreHelper;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.NeutronNetwork;
+import org.opendaylight.netvirt.utils.netvirt.it.utils.ItConstants;
+import org.opendaylight.netvirt.utils.netvirt.it.utils.NetvirtItUtils;
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.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.INeutronPortCRUD;
-import org.opendaylight.neutron.spi.INeutronSecurityGroupCRUD;
-import org.opendaylight.neutron.spi.INeutronSecurityRuleCRUD;
-import org.opendaylight.neutron.spi.NeutronPort;
-import org.opendaylight.neutron.spi.NeutronSecurityGroup;
-import org.opendaylight.neutron.spi.NeutronSecurityRule;
-import org.opendaylight.neutron.spi.NeutronNetwork;
-import org.opendaylight.neutron.spi.NeutronSubnet;
+import org.opendaylight.netvirt.utils.neutron.utils.NeutronUtils;
import org.opendaylight.ovsdb.lib.notation.Version;
import org.opendaylight.netvirt.openstack.netvirt.NetworkHandler;
import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
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.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.crud.INeutronPortCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityGroupCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
assertNotNull("Could not find ineutronSecurityRuleCRUD Service", ineutronSecurityRuleCRUD);
NeutronSecurityGroup neutronSG = new NeutronSecurityGroup();
- neutronSG.setSecurityGroupDescription("testig defaultSG-IT");
neutronSG.setSecurityGroupName("DefaultSG");
- neutronSG.setSecurityGroupUUID("d3329053-bae5-4bf4-a2d1-7330f11ba5db");
- neutronSG.setTenantID(tenantId);
+ neutronSG.setID("d3329053-bae5-4bf4-a2d1-7330f11ba5db");
+ neutronSG.setSecurityGroupTenantID(tenantId);
List<NeutronSecurityRule> nsrs = new ArrayList<>();
NeutronSecurityRule nsrIN = new NeutronSecurityRule();
nsrIN.setSecurityRuleGroupID("d3329053-bae5-4bf4-a2d1-7330f11ba5db");
nsrIN.setSecurityRuleProtocol("TCP");
nsrIN.setSecurityRuleRemoteIpPrefix("10.0.0.0/24");
- nsrIN.setSecurityRuleUUID("823faaf7-175d-4f01-a271-0bf56fb1e7e6");
- nsrIN.setTenantID(tenantId);
+ nsrIN.setID("823faaf7-175d-4f01-a271-0bf56fb1e7e6");
+ nsrIN.setSecurityRuleTenantID(tenantId);
NeutronSecurityRule nsrEG = new NeutronSecurityRule();
nsrEG.setSecurityRemoteGroupID(null);
nsrEG.setSecurityRuleGroupID("d3329053-bae5-4bf4-a2d1-7330f11ba5db");
nsrEG.setSecurityRuleProtocol("TCP");
nsrEG.setSecurityRuleRemoteIpPrefix("10.0.0.0/24");
- nsrEG.setSecurityRuleUUID("823faaf7-175d-4f01-a271-0bf56fb1e7e1");
- nsrEG.setTenantID(tenantId);
+ nsrEG.setID("823faaf7-175d-4f01-a271-0bf56fb1e7e1");
+ nsrEG.setSecurityRuleTenantID(tenantId);
nsrs.add(nsrIN);
nsrs.add(nsrEG);
- neutronSG.setSecurityRules(nsrs);
ineutronSecurityRuleCRUD.addNeutronSecurityRule(nsrIN);
ineutronSecurityRuleCRUD.addNeutronSecurityRule(nsrEG);
- ineutronSecurityGroupCRUD.add(neutronSG);
+ ineutronSecurityGroupCRUD.addNeutronSecurityGroup(neutronSG);
List<NeutronSecurityGroup> sgs = new ArrayList<>();
sgs.add(neutronSG);
INeutronPortCRUD iNeutronPortCRUD =
(INeutronPortCRUD) ServiceHelper.getGlobalInstance(INeutronPortCRUD.class, this);
- iNeutronPortCRUD.update(portId, nport);
+ iNeutronPortCRUD.updatePort(portId, nport);
LOG.info("Neutron ports have been added");
Thread.sleep(10000);
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.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.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.NeutronSubnet;
import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
public class NeutronUtils {
np.setDeviceOwner(owner);
np.setMacAddress(mac);
np.setNetworkUUID(networkId);
- List<org.opendaylight.neutron.spi.Neutron_IPs> srcAddressList =
+ List<org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs> srcAddressList =
new ArrayList<>();
- org.opendaylight.neutron.spi.Neutron_IPs nip = new org.opendaylight.neutron.spi.Neutron_IPs();
+ org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs nip = new org.opendaylight.netvirt.openstack.netvirt.translator.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);
+ iNeutronPortCRUD.addPort(np);
return np;
}
ns.initDefaults();
ns.setNetworkUUID(networkId);
ns.setTenantID(tenantId);
- iNeutronSubnetCRUD.add(ns);
+ iNeutronSubnetCRUD.addSubnet(ns);
return ns;
}
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.INeutronSecurityRuleCRUD;
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 java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
private static final Logger LOG = LoggerFactory.getLogger(EgressAclService.class);
private volatile SecurityServicesManager securityServicesManager;
private volatile SecurityGroupCacheManger securityGroupCacheManger;
+ private volatile INeutronSecurityRuleCRUD neutronSecurityRule;
private static final int DHCP_SOURCE_PORT = 67;
private static final int DHCP_DESTINATION_PORT = 68;
private static final int DHCPV6_SOURCE_PORT = 547;
NeutronSecurityGroup securityGroup, String portUuid, boolean write) {
LOG.trace("programPortSecurityGroup: neutronSecurityGroup: {} ", securityGroup);
- if (securityGroup == null || securityGroup.getSecurityRules() == null) {
+ if (securityGroup == null || getSecurityRulesforGroup(securityGroup) == null) {
return;
}
- List<NeutronSecurityRule> portSecurityList = securityGroup.getSecurityRules();
+ List<NeutronSecurityRule> portSecurityList = getSecurityRulesforGroup(securityGroup);
/* Iterate over the Port Security Rules in the Port Security Group bound to the port*/
for (NeutronSecurityRule portSecurityRule : portSecurityList) {
}
}
+ private List<NeutronSecurityRule> getSecurityRulesforGroup(NeutronSecurityGroup securityGroup) {
+ List<NeutronSecurityRule> securityRules = new ArrayList<>();
+ List<NeutronSecurityRule> rules = neutronSecurityRule.getAllNeutronSecurityRules();
+ for (NeutronSecurityRule securityRule : rules) {
+ if (securityGroup.getID().equals(securityRule.getSecurityRuleGroupID())) {
+ securityRules.add(securityRule);
+ }
+ }
+ return securityRules;
+ }
@Override
public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
(SecurityServicesManager) ServiceHelper.getGlobalInstance(SecurityServicesManager.class, this);
securityGroupCacheManger =
(SecurityGroupCacheManger) ServiceHelper.getGlobalInstance(SecurityGroupCacheManger.class, this);
+ neutronSecurityRule = (INeutronSecurityRuleCRUD) ServiceHelper.getGlobalInstance(INeutronSecurityRuleCRUD.class, this);
}
@Override
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.INeutronSecurityRuleCRUD;
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 java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
private static final Logger LOG = LoggerFactory.getLogger(IngressAclService.class);
private volatile SecurityServicesManager securityServicesManager;
private volatile SecurityGroupCacheManger securityGroupCacheManger;
+ private volatile INeutronSecurityRuleCRUD neutronSecurityRule;
private static final int PORT_RANGE_MIN = 1;
private static final int PORT_RANGE_MAX = 65535;
String portUuid, boolean write) {
LOG.trace("programPortSecurityGroup neutronSecurityGroup: {} ", securityGroup);
- if (securityGroup == null || securityGroup.getSecurityRules() == null) {
+ if (securityGroup == null || getSecurityRulesforGroup(securityGroup) == null) {
return;
}
- List<NeutronSecurityRule> portSecurityList = securityGroup.getSecurityRules();
+ List<NeutronSecurityRule> portSecurityList = getSecurityRulesforGroup(securityGroup);
/* Iterate over the Port Security Rules in the Port Security Group bound to the port*/
for (NeutronSecurityRule portSecurityRule : portSecurityList) {
}
}
+ private List<NeutronSecurityRule> getSecurityRulesforGroup(NeutronSecurityGroup securityGroup) {
+ List<NeutronSecurityRule> securityRules = new ArrayList<>();
+ List<NeutronSecurityRule> rules = neutronSecurityRule.getAllNeutronSecurityRules();
+ for (NeutronSecurityRule securityRule : rules) {
+ if (securityGroup.getID().equals(securityRule.getSecurityRuleGroupID())) {
+ securityRules.add(securityRule);
+ }
+ }
+ return securityRules;
+ }
+
@Override
public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
super.setDependencies(bundleContext.getServiceReference(IngressAclProvider.class.getName()), this);
(SecurityServicesManager) ServiceHelper.getGlobalInstance(SecurityServicesManager.class, this);
securityGroupCacheManger =
(SecurityGroupCacheManger) ServiceHelper.getGlobalInstance(SecurityGroupCacheManger.class, this);
+ neutronSecurityRule = (INeutronSecurityRuleCRUD) ServiceHelper.getGlobalInstance(INeutronSecurityRuleCRUD.class, this);
}
@Override
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.netvirt.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
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;
@Mock private NeutronSecurityRule portSecurityRule;
@Mock private NeutronSecurityGroup securityGroupIpv6;
@Mock private NeutronSecurityRule portSecurityIpv6Rule;
+ @Mock private INeutronSecurityRuleCRUD neutronSecurityRuleCache;
@Mock private SecurityServicesManager securityServices;
@Mock private SecurityGroupCacheManger securityGroupCacheManger;
List<NeutronSecurityRule> portSecurityIpv6List = new ArrayList<>();
portSecurityIpv6List.add(portSecurityIpv6Rule);
- when(securityGroupIpv6.getSecurityRules()).thenReturn(portSecurityIpv6List);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(portSecurityIpv6List);
neutron_ipv6_dest_1 = new Neutron_IPs();
neutron_ipv6_dest_1.setIpAddress(IPV6_DEST_IP_1);
neutron_ipv6_dest_2.setIpAddress(IPV6_DEST_IP_2);
neutronDestIpList.add(neutron_ipv6_dest_2);
- when(securityGroup.getSecurityRules()).thenReturn(portSecurityList);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(portSecurityList);
when(securityServices.getVmListForSecurityGroup(PORT_UUID, SECURITY_GROUP_UUID)).thenReturn(neutronDestIpList);
NetvirtProvidersProvider netvirtProvider = mock(NetvirtProvidersProvider.class);
portSecurityList.add(portSecurityRule4);
NeutronSecurityGroup localSecurityGroup = mock(NeutronSecurityGroup.class);
- when(localSecurityGroup.getSecurityRules()).thenReturn(portSecurityList);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(portSecurityList);
egressAclServiceSpy.programPortSecurityGroup(DP_ID_LONG, SEGMENT_ID, MAC_ADDRESS, LOCAL_PORT,
localSecurityGroup, PORT_UUID, true);
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.translator.crud.INeutronSecurityRuleCRUD;
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;
@Mock private NeutronSecurityRule portSecurityIpv6Rule;
@Mock private SecurityServicesManager securityServices;
@Mock private SecurityGroupCacheManger securityGroupCacheManger;
+ @Mock private INeutronSecurityRuleCRUD neutronSecurityRuleCache;
private List<Neutron_IPs> neutronSrcIpList = new ArrayList<>();
private List<Neutron_IPs> neutronDestIpList = new ArrayList<>();
List<NeutronSecurityRule> portSecurityIpv6List = new ArrayList<>();
portSecurityIpv6List.add(portSecurityIpv6Rule);
- when(securityGroupIpv6.getSecurityRules()).thenReturn(portSecurityIpv6List);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(portSecurityIpv6List);
neutron_ipv6_dest_1 = new Neutron_IPs();
neutron_ipv6_dest_1.setIpAddress(IPV6_DEST_IP_1);
neutron_ipv6_dest_2.setIpAddress(IPV6_DEST_IP_2);
neutronDestIpList.add(neutron_ipv6_dest_2);
- when(securityGroup.getSecurityRules()).thenReturn(portSecurityList);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(portSecurityList);
when(securityServices.getVmListForSecurityGroup
(PORT_UUID, SECURITY_GROUP_UUID)).thenReturn(neutronDestIpList);
NetvirtProvidersProvider netvirtProvider = mock(NetvirtProvidersProvider.class);
portSecurityList.add(portSecurityRule4);
NeutronSecurityGroup localSecurityGroup = mock(NeutronSecurityGroup.class);
- when(localSecurityGroup.getSecurityRules()).thenReturn(portSecurityList);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(portSecurityList);
ingressAclServiceSpy.programPortSecurityGroup(
Long.valueOf(1554), "2", MAC_ADDRESS, 124, localSecurityGroup, PORT_UUID, false);
<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.neutron</groupId>
<artifactId>model</artifactId>
<Embed-Transitive>true</Embed-Transitive>
<Export-Package>
org.opendaylight.netvirt.openstack.netvirt.translator,
+ org.opendaylight.netvirt.openstack.netvirt.translator.crud,
org.opendaylight.netvirt.openstack.netvirt.api,
org.opendaylight.netvirt.openstack.netvirt
</Export-Package>
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.Constants;
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.InboundNatProvider;
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.OvsdbInventoryListener;
import org.opendaylight.netvirt.openstack.netvirt.api.OvsdbInventoryService;
import org.opendaylight.netvirt.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.netvirt.openstack.netvirt.api.SecurityGroupCacheManger;
import org.opendaylight.netvirt.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.netvirt.openstack.netvirt.api.Southbound;
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.NeutronL3Adapter;
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.SecurityGroupCacheManagerImpl;
import org.opendaylight.netvirt.openstack.netvirt.impl.SecurityServicesImpl;
import org.opendaylight.netvirt.openstack.netvirt.impl.SouthboundImpl;
+import org.opendaylight.netvirt.openstack.netvirt.impl.TenantNetworkManagerImpl;
import org.opendaylight.netvirt.openstack.netvirt.impl.VlanConfigurationCacheImpl;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronFloatingIPCRUD;
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.INeutronSubnetCRUD;
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.NeutronLoadBalancerHealthMonitorInterface;
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.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.INeutronFirewallRuleAware;
import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFirewallPolicyAware;
+import org.opendaylight.netvirt.openstack.netvirt.translator.iaware.INeutronFloatingIPAware;
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.INeutronPortAware;
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;
* 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;
+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.netvirt.openstack.netvirt.AbstractHandler;
import org.opendaylight.netvirt.openstack.netvirt.ConfigInterface;
import org.opendaylight.netvirt.openstack.netvirt.NeutronL3AdapterEvent;
+import org.opendaylight.netvirt.openstack.netvirt.NeutronModelsDataStoreHelper;
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.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;
port.getDeviceOwner().equals(OWNER_ROUTER_INTERFACE)) {
LOG.debug("L3 Cache Population : Router interface {} found.",port);
networkIdToRouterMacCache.put(port.getNetworkId().getValue()
- , port.getMacAddress());
+ , port.getMacAddress().getValue());
networkIdToRouterIpListCache.put(port.getNetworkId().getValue(),
NeutronIAwareUtil.convertMDSalIpToNeutronIp(port.getFixedIps()));
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.INeutronSecurityRuleCRUD;
import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
import org.osgi.framework.ServiceReference;
import org.slf4j.Logger;
private volatile SecurityServicesManager securityServicesManager;
private volatile INeutronPortCRUD neutronPortCache;
private volatile NeutronL3Adapter neutronL3Adapter;
+ private volatile INeutronSecurityRuleCRUD neutronSecurityRule;
@Override
public void portAdded(String securityGroupUuid, String portUuid) {
List<NeutronSecurityRule> remoteSecurityRules = new ArrayList<>();
List<NeutronSecurityGroup> securityGroups = port.getSecurityGroups();
for (NeutronSecurityGroup securityGroup : securityGroups) {
- List<NeutronSecurityRule> securityRules = securityGroup.getSecurityRules();
+ List<NeutronSecurityRule> securityRules = getSecurityRulesforGroup(securityGroup);
for (NeutronSecurityRule securityRule : securityRules) {
if (securityGroupUuid.equals(securityRule.getSecurityRemoteGroupID())) {
remoteSecurityRules.add(securityRule);
List<NeutronSecurityGroup> securityGroupList = port.getSecurityGroups();
if ( null != securityGroupList) {
for (NeutronSecurityGroup securityGroup : securityGroupList) {
- List<NeutronSecurityRule> securityRuleList = securityGroup.getSecurityRules();
+ List<NeutronSecurityRule> securityRuleList = getSecurityRulesforGroup(securityGroup);
if ( null != securityRuleList) {
for (NeutronSecurityRule securityRule : securityRuleList) {
if (null != securityRule.getSecurityRemoteGroupID()) {
}
}
+ private List<NeutronSecurityRule> getSecurityRulesforGroup(NeutronSecurityGroup securityGroup) {
+ List<NeutronSecurityRule> securityRules = new ArrayList<>();
+ List<NeutronSecurityRule> rules = neutronSecurityRule.getAllNeutronSecurityRules();
+ for (NeutronSecurityRule securityRule : rules) {
+ if (securityGroup.getID().equals(securityRule.getSecurityRuleGroupID())) {
+ securityRules.add(securityRule);
+ }
+ }
+ return securityRules;
+ }
+
@Override
public void setDependencies(ServiceReference serviceReference) {
neutronL3Adapter =
securityServicesManager =
(SecurityServicesManager) ServiceHelper.getGlobalInstance(SecurityServicesManager.class, this);
neutronPortCache = (INeutronPortCRUD) ServiceHelper.getGlobalInstance(INeutronPortCRUD.class, this);
+ neutronSecurityRule = (INeutronSecurityRuleCRUD) ServiceHelper.getGlobalInstance(INeutronSecurityRuleCRUD.class, this);
init();
}
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
//@XmlElement (name = "binding:vif_details")
@XmlElement (namespace = "binding", name = "vif_details")
- List<NeutronPort_VIFDetail> vifDetails;
+ Map<String, String> vifDetails;
@XmlElement (name = "extra_dhcp_opts")
List<NeutronPort_ExtraDHCPOption> extraDHCPOptions;
public Boolean getAdminStateUp() { return adminStateUp; }
public void setAdminStateUp(Boolean newValue) {
- adminStateUp = newValue;
+ adminStateUp = newValue;
}
public String getStatus() {
this.extraDHCPOptions = extraDHCPOptions;
}
- public List<NeutronPort_VIFDetail> getVIFDetail() {
+ public Map<String, String> getVIFDetails() {
return vifDetails;
}
- public void setVIFDetail(List<NeutronPort_VIFDetail> vifDetails) {
+ public void setVIFDetails(Map<String, String> vifDetails) {
this.vifDetails = vifDetails;
}
public String getBindinghostID() {
- return bindinghostID;
+ return bindinghostID;
}
public void setBindinghostID(String bindinghostID) {
- this.bindinghostID = bindinghostID;
+ this.bindinghostID = bindinghostID;
}
public String getBindingvnicType() {
@XmlElement (name = "routes")
List<Routes> routes;
- /* Holds a map of OpenStackRouterInterfaces by subnet UUID
- * used for internal mapping to DOVE
- */
- Map<String, NeutronRouter_Interface> interfaces;
-
- public NeutronRouter() {
- interfaces = new HashMap<>();
- }
-
public String getID() { return routerUUID; }
public void setID(String id) { this.routerUUID = id; }
return ans;
}
- public void setInterfaces(Map<String, NeutronRouter_Interface> input) {
- interfaces = input;
- }
-
- public Map<String, NeutronRouter_Interface> getInterfaces() {
- return interfaces;
- }
-
- public void addInterface(String s, NeutronRouter_Interface i) {
- interfaces.put(s, i);
- }
-
- public void removeInterface(String s) {
- interfaces.remove(s);
- }
-
public void initDefaults() {
adminStateUp = true;
}
", distributed=" + distributed +
", gw_port_id=" + gatewayPortId +
", routes=" + routes +
- ", interfaces=" + interfaces +
"]";
}
-
}
* name String name of the security group.
* description String name of the security group.
* tenant_id uuid-str Owner of security rule..
- * security_group_rules List<NeutronSecurityRule> nested RO in the sec group.
*/
@XmlRootElement
@XmlElement(name = "tenant_id")
String securityGroupTenantID;
- @XmlElement(name = "security_group_rules")
- List<NeutronSecurityRule> neutronSecurityRule;
-
public NeutronSecurityGroup() {
- neutronSecurityRule = new ArrayList<>();
-
}
public String getID() {
this.securityGroupTenantID = securityGroupTenantID;
}
- // Rules In Group
- public List<NeutronSecurityRule> getSecurityRules() {
- return neutronSecurityRule;
- }
-
- public void setSecurityRules(List<NeutronSecurityRule> neutronSecurityRule) {
- this.neutronSecurityRule = neutronSecurityRule;
- }
-
public NeutronSecurityGroup extractFields(List<String> fields) {
NeutronSecurityGroup ans = new NeutronSecurityGroup ();
for (String s : fields) {
case "tenant_id":
ans.setSecurityGroupTenantID(this.getSecurityGroupTenantID());
break;
- case "security_group_rules":
- ans.setSecurityRules(this.getSecurityRules());
- break;
}
}
return ans;
", securityGroupName='" + securityGroupName + '\'' +
", securityGroupDescription='" + securityGroupDescription + '\'' +
", securityGroupTenantID='" + securityGroupTenantID + '\'' +
- ", securityRules=" + neutronSecurityRule + "]";
+ "]";
}
public void initDefaults() {
protected Loadbalancer toMd(NeutronLoadBalancer loadBalancer) {
LoadbalancerBuilder loadBalancersBuilder = new LoadbalancerBuilder();
loadBalancersBuilder.setAdminStateUp(loadBalancer.getLoadBalancerAdminStateUp());
- if (loadBalancer.getLoadBalancerDescription() != null) {
- loadBalancersBuilder.setDescr(loadBalancer.getLoadBalancerDescription());
- }
if (loadBalancer.getLoadBalancerName() != null) {
loadBalancersBuilder.setName(loadBalancer.getLoadBalancerName());
}
protected Pool toMd(NeutronLoadBalancerPool pool) {
PoolBuilder poolBuilder = new PoolBuilder();
poolBuilder.setAdminStateUp(pool.getLoadBalancerPoolAdminIsStateIsUp());
- if (pool.getLoadBalancerPoolDescription() != null) {
- poolBuilder.setDescr(pool.getLoadBalancerPoolDescription());
- }
if (pool.getNeutronLoadBalancerPoolHealthMonitorID() != null) {
poolBuilder.setHealthmonitorId(toUuid(pool.getNeutronLoadBalancerPoolHealthMonitorID()));
}
package org.opendaylight.netvirt.openstack.netvirt.translator.crud.impl;
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.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
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.MacAddress;
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.PortBindingExtensionBuilder;
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.PortBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.types.rev160517.IpPrefixOrAddress;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
PortBindingExtension binding = port.getAugmentation(PortBindingExtension.class);
result.setBindinghostID(binding.getHostId());
if (binding.getVifDetails() != null) {
- List<NeutronPort_VIFDetail> details = new ArrayList<>();
- for (VifDetails vifDetail : binding.getVifDetails()) {
- NeutronPort_VIFDetail detail = new NeutronPort_VIFDetail();
- detail.setPortFilter(vifDetail.isPortFilter());
- detail.setOvsHybridPlug(vifDetail.isOvsHybridPlug());
- details.add(detail);
+ final Map<String, String> details = new HashMap<String, String>(binding.getVifDetails().size());
+ for (final VifDetails vifDetail : binding.getVifDetails()) {
+ details.put(vifDetail.getDetailsKey(), vifDetail.getValue());
}
- result.setVIFDetail(details);
+ result.setVIFDetails(details);
}
result.setBindingvifType(binding.getVifType());
result.setBindingvnicType(binding.getVnicType());
List<NeutronPort_AllowedAddressPairs> pairs = new ArrayList<>();
for (AllowedAddressPairs mdPair : port.getAllowedAddressPairs()) {
NeutronPort_AllowedAddressPairs pair = new NeutronPort_AllowedAddressPairs();
- pair.setIpAddress(mdPair.getIpAddress());
- pair.setMacAddress(mdPair.getMacAddress());
+ pair.setIpAddress(String.valueOf(mdPair.getIpAddress().getValue()));
+ pair.setMacAddress(mdPair.getMacAddress().getValue());
pairs.add(pair);
}
result.setAllowedAddressPairs(pairs);
}
result.setFixedIPs(ips);
}
- result.setMacAddress(port.getMacAddress());
+ result.setMacAddress(port.getMacAddress().getValue());
result.setName(port.getName());
result.setNetworkUUID(String.valueOf(port.getNetworkId().getValue()));
if (port.getSecurityGroups() != null) {
if (neutronPort.getBindinghostID() != null) {
bindingBuilder.setHostId(neutronPort.getBindinghostID());
}
- if (neutronPort.getVIFDetail() != null) {
- List<VifDetails> listVifDetail = new ArrayList<>();
- for (NeutronPort_VIFDetail detail: neutronPort.getVIFDetail()) {
- VifDetailsBuilder vifDetailsBuilder = new VifDetailsBuilder();
- if (detail.getPortFilter() != null) {
- vifDetailsBuilder.setPortFilter(detail.getPortFilter());
+ if (neutronPort.getVIFDetails() != null) {
+ final Map<String, String> vifDetails = neutronPort.getVIFDetails();
+ final List<VifDetails> listVifDetail = new ArrayList<VifDetails>(vifDetails.size());
+ for (final Map.Entry<String, String> vifDetail : vifDetails.entrySet()) {
+ final VifDetailsBuilder vifDetailsBuilder = new VifDetailsBuilder();
+ if (vifDetail.getKey() != null) {
+ vifDetailsBuilder.setDetailsKey(vifDetail.getKey());
}
- if (detail.getOvsHybridPlug() != null) {
- vifDetailsBuilder.setOvsHybridPlug(detail.getOvsHybridPlug());
+ if (vifDetail.getValue() != null) {
+ vifDetailsBuilder.setValue(vifDetail.getValue());
}
listVifDetail.add(vifDetailsBuilder.build());
}
List<AllowedAddressPairs> listAllowedAddressPairs = new ArrayList<>();
for (NeutronPort_AllowedAddressPairs allowedAddressPairs : neutronPort.getAllowedAddressPairs()) {
AllowedAddressPairsBuilder allowedAddressPairsBuilder = new AllowedAddressPairsBuilder();
- allowedAddressPairsBuilder.setIpAddress(allowedAddressPairs.getIpAddress());
- allowedAddressPairsBuilder.setMacAddress(allowedAddressPairs.getMacAddress());
+ allowedAddressPairsBuilder.setIpAddress(new IpPrefixOrAddress(allowedAddressPairs.getIpAddress().toCharArray()));
+ allowedAddressPairsBuilder.setMacAddress(new MacAddress(allowedAddressPairs.getMacAddress()));
listAllowedAddressPairs.add(allowedAddressPairsBuilder.build());
}
portBuilder.setAllowedAddressPairs(listAllowedAddressPairs);
portBuilder.setFixedIps(listNeutronIPs);
}
if (neutronPort.getMacAddress() != null) {
- portBuilder.setMacAddress(neutronPort.getMacAddress());
+ portBuilder.setMacAddress(new MacAddress(neutronPort.getMacAddress()));
}
if (neutronPort.getName() != null) {
portBuilder.setName(neutronPort.getName());
import java.util.Set;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-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.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.RouterBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.ExternalGatewayInfo;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.ExternalGatewayInfoBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.Interfaces;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.external_gateway_info.ExternalFixedIps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.external_gateway_info.ExternalFixedIpsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
@Override
public boolean routerInUse(String routerUUID) {
- if (!routerExists(routerUUID)) {
- return true;
- }
- NeutronRouter target = getRouter(routerUUID);
- return (target.getInterfaces().size() > 0);
+ return !routerExists(routerUUID);
}
@Override
}
routerBuilder.setExternalGatewayInfo(externalGatewayInfo);
}
- if (router.getInterfaces() != null) {
- Map<String, NeutronRouter_Interface> mapInterfaces = new HashMap<>();
- List<Interfaces> interfaces = new ArrayList<>();
- for (Entry<String, NeutronRouter_Interface> entry : mapInterfaces.entrySet()) {
- interfaces.add((Interfaces) entry.getValue());
- }
- routerBuilder.setInterfaces(interfaces);
- }
if (router.getID() != null) {
routerBuilder.setUuid(toUuid(router.getID()));
} else {
result.setExternalGatewayInfo(extGwInfo);
}
- if (router.getInterfaces() != null) {
- Map<String, NeutronRouter_Interface> interfaces = new HashMap<>();
- for (Interfaces mdInterface : router.getInterfaces()) {
- NeutronRouter_Interface pojoInterface = new NeutronRouter_Interface();
- String id = String.valueOf(mdInterface.getUuid().getValue());
- pojoInterface.setID(id);
- pojoInterface.setTenantID(String.valueOf(mdInterface.getTenantId().getValue()));
- pojoInterface.setSubnetUUID(String.valueOf(mdInterface.getSubnetId().getValue()));
- pojoInterface.setPortUUID(String.valueOf(mdInterface.getPortId().getValue()));
- interfaces.put(id, pojoInterface);
- }
- result.setInterfaces(interfaces);
- }
return result;
}
if (group.getName() != null) {
answer.setSecurityGroupName(group.getName());
}
- if (group.getDescription() != null) {
- answer.setSecurityGroupDescription(group.getDescription());
- }
if (group.getTenantId() != null) {
answer.setSecurityGroupTenantID(group.getTenantId().getValue().replace("-",""));
}
-
- // Bug 4550
- // https://bugs.opendaylight.org/show_bug.cgi?id=4550
- // Now SecurityGroup::securityGroupRule isn't updated.
- // always rebuid it from security group rules
- NeutronCRUDInterfaces interfaces = new NeutronCRUDInterfaces()
- .fetchINeutronSecurityRuleCRUD(this);
- INeutronSecurityRuleCRUD srCrud = interfaces.getSecurityRuleInterface();
-
- List<NeutronSecurityRule> rules = new ArrayList<NeutronSecurityRule>();
- String sgId = group.getUuid().getValue();
- for (NeutronSecurityRule rule: srCrud.getAllNeutronSecurityRules()) {
- if (rule.getSecurityRuleGroupID().equals(sgId)) {
- rules.add(rule);
- }
- }
- answer.setSecurityRules(rules);
-
if (group.getUuid() != null) {
answer.setID(group.getUuid().getValue());
}
if (securityGroup.getSecurityGroupName() != null) {
securityGroupBuilder.setName(securityGroup.getSecurityGroupName());
}
- if (securityGroup.getSecurityGroupDescription() != null) {
- securityGroupBuilder.setDescription(securityGroup.getSecurityGroupDescription());
- }
if (securityGroup.getSecurityGroupTenantID() != null) {
securityGroupBuilder.setTenantId(toUuid(securityGroup.getSecurityGroupTenantID()));
}
-
- // don't update security group rule, always empty list
- // Bug 4550
- // https://bugs.opendaylight.org/show_bug.cgi?id=4550
- securityGroupBuilder.setSecurityRules(new ArrayList<Uuid>());
-
if (securityGroup.getID() != null) {
securityGroupBuilder.setUuid(toUuid(securityGroup.getID()));
} else {
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolIcmpV6;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolTcp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.ProtocolUdp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.NeutronUtils;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.SecurityRuleAttributes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.rules.attributes.SecurityRules;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.rules.attributes.security.rules.SecurityRule;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.secgroups.rev150712.security.rules.attributes.security.rules.SecurityRuleBuilder;
super(providerContext);
}
- private void updateSecGroupRuleInSecurityGroup(NeutronSecurityRule input) {
- NeutronCRUDInterfaces interfaces = new NeutronCRUDInterfaces()
- .fetchINeutronSecurityGroupCRUD(this);
- INeutronSecurityGroupCRUD sgCrud = interfaces.getSecurityGroupInterface();
- NeutronSecurityGroup sg = sgCrud.getNeutronSecurityGroup(input.getSecurityRuleGroupID());
- if(sg != null && sg.getSecurityRules() != null) {
- for(NeutronSecurityRule sgr :sg.getSecurityRules()) {
- if(sgr != null && sgr.getID() != null && sgr.getID().equals(input.getID())) {
- int index = sg.getSecurityRules().indexOf(sgr);
- sg.getSecurityRules().set(index, input);
- }
- }
- }
- if (sg != null) {
- sg.getSecurityRules().add(input);
- }
- }
-
- private void removeSecGroupRuleFromSecurityGroup(NeutronSecurityRule input) {
- NeutronCRUDInterfaces interfaces = new NeutronCRUDInterfaces()
- .fetchINeutronSecurityGroupCRUD(this);
- INeutronSecurityGroupCRUD sgCrud = interfaces.getSecurityGroupInterface();
- NeutronSecurityGroup sg = sgCrud.getNeutronSecurityGroup(input.getSecurityRuleGroupID());
- if(sg != null && sg.getSecurityRules() != null) {
- List<NeutronSecurityRule> toRemove = new ArrayList<>();
- for(NeutronSecurityRule sgr :sg.getSecurityRules()) {
- if(sgr.getID() != null && sgr.getID().equals(input.getID())) {
- toRemove.add(sgr);
- }
- }
- sg.getSecurityRules().removeAll(toRemove);
- }
- }
-
@Override
public boolean neutronSecurityRuleExists(String uuid) {
SecurityRule rule = readMd(createInstanceIdentifier(toMd(uuid)));
if (neutronSecurityRuleExists(input.getID())) {
return false;
}
- updateSecGroupRuleInSecurityGroup(input);
addMd(input);
return true;
}
if (!neutronSecurityRuleExists(uuid)) {
return false;
}
- removeSecGroupRuleFromSecurityGroup(getNeutronSecurityRule(uuid));
removeMd(toMd(uuid));
return true;
}
if (!neutronSecurityRuleExists(uuid)) {
return false;
}
- updateSecGroupRuleInSecurityGroup(delta);
updateMd(delta);
return true;
}
rule.getRemoteIpPrefix().getIpv4Prefix().getValue():rule.getRemoteIpPrefix().getIpv6Prefix().getValue());
}
if (rule.getProtocol() != null) {
- answer.setSecurityRuleProtocol(PROTOCOL_MAP.get(rule.getProtocol()));
+ SecurityRuleAttributes.Protocol protocol = rule.getProtocol();
+ if (protocol.getUint8() != null) {
+ // uint8
+ answer.setSecurityRuleProtocol(protocol.getUint8().toString());
+ } else {
+ // symbolic protocol name
+ answer.setSecurityRuleProtocol(NeutronUtils.ProtocolMapper.getName(protocol.getIdentityref()));
+ }
}
if (rule.getEthertype() != null) {
answer.setSecurityRuleEthertype(ETHERTYPE_MAP.get(rule.getEthertype()));
if (rule.getPortRangeMax() != null) {
answer.setSecurityRulePortMax(rule.getPortRangeMax());
}
- if (rule.getId() != null) {
- answer.setID(rule.getId().getValue());
+ if (rule.getUuid() != null) {
+ answer.setID(rule.getUuid().getValue());
}
return answer;
}
securityRuleBuilder.setRemoteIpPrefix(new IpPrefix(securityRule.getSecurityRuleRemoteIpPrefix().toCharArray()));
}
if (securityRule.getSecurityRuleProtocol() != null) {
- ImmutableBiMap<String, Class<? extends ProtocolBase>> mapper =
- PROTOCOL_MAP.inverse();
- securityRuleBuilder.setProtocol(mapper.get(securityRule.getSecurityRuleProtocol()));
+ String protocolString = securityRule.getSecurityRuleProtocol();
+ SecurityRuleAttributes.Protocol protocol = new SecurityRuleAttributes.Protocol(protocolString.toCharArray());
+ securityRuleBuilder.setProtocol(protocol);
}
if (securityRule.getSecurityRuleEthertype() != null) {
ImmutableBiMap<String, Class<? extends EthertypeBase>> mapper =
securityRuleBuilder.setPortRangeMax(securityRule.getSecurityRulePortMax());
}
if (securityRule.getID() != null) {
- securityRuleBuilder.setId(toUuid(securityRule.getID()));
+ securityRuleBuilder.setUuid(toUuid(securityRule.getID()));
} else {
LOGGER.warn("Attempting to write neutron securityRule without UUID");
}
@Override
protected SecurityRule toMd(String uuid) {
SecurityRuleBuilder securityRuleBuilder = new SecurityRuleBuilder();
- securityRuleBuilder.setId(toUuid(uuid));
+ securityRuleBuilder.setUuid(toUuid(uuid));
return securityRuleBuilder.build();
}
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.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Base;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Off;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.constants.rev150712.Dhcpv6Slaac;
result.setTenantID(String.valueOf(subnet.getTenantId().getValue()).replace("-",""));
result.setNetworkUUID(subnet.getNetworkId().getValue());
result.setIpVersion(IPV_MAP.get(subnet.getIpVersion()));
- result.setCidr(subnet.getCidr());
+ result.setCidr(String.valueOf(subnet.getCidr().getValue()));
result.setIpV6RaMode(DHCPV6_MAP.get(subnet.getIpv6RaMode()));
result.setIpV6AddressMode(DHCPV6_MAP.get(subnet.getIpv6AddressMode()));
result.setEnableDHCP(subnet.isEnableDhcp());
List<NeutronSubnetIPAllocationPool> allocationPools = new ArrayList<>();
for (AllocationPools allocationPool : subnet.getAllocationPools()) {
NeutronSubnetIPAllocationPool pool = new NeutronSubnetIPAllocationPool();
- pool.setPoolStart(allocationPool.getStart());
- pool.setPoolEnd(allocationPool.getEnd());
+ pool.setPoolStart(String.valueOf(allocationPool.getStart().getValue()));
+ pool.setPoolEnd(String.valueOf(allocationPool.getEnd().getValue()));
allocationPools.add(pool);
}
result.setAllocationPools(allocationPools);
.getIpVersion()));
}
if (subnet.getCidr() != null) {
- subnetBuilder.setCidr(subnet.getCidr());
+ IpPrefix ipPrefix = new IpPrefix(subnet.getCidr().toCharArray());
+ subnetBuilder.setCidr(ipPrefix);
}
if (subnet.getGatewayIP() != null) {
IpAddress ipAddress = new IpAddress(subnet.getGatewayIP()
for (NeutronSubnetIPAllocationPool allocationPool : subnet
.getAllocationPools()) {
AllocationPoolsBuilder builder = new AllocationPoolsBuilder();
- builder.setStart(allocationPool.getPoolStart());
- builder.setEnd(allocationPool.getPoolEnd());
+ builder.setStart(new IpAddress(allocationPool.getPoolStart().toCharArray()));
+ builder.setEnd(new IpAddress(allocationPool.getPoolEnd().toCharArray()));
AllocationPools temp = builder.build();
allocationPools.add(temp);
}
if (pool.getName() != null) {
result.setLoadBalancerPoolName(pool.getName());
}
- if (pool.getDescr() != null) {
- result.setLoadBalancerPoolDescription(pool.getDescr());
- }
if (pool.getProtocol() != null) {
result.setLoadBalancerPoolProtocol(PROTOCOL_MAP.get(pool.getProtocol()));
}
List<NeutronPort_AllowedAddressPairs> pairs = new ArrayList<>();
for (AllowedAddressPairs mdPair : port.getAllowedAddressPairs()) {
NeutronPort_AllowedAddressPairs pair = new NeutronPort_AllowedAddressPairs();
- pair.setIpAddress(mdPair.getIpAddress());
- pair.setMacAddress(mdPair.getMacAddress());
+ pair.setIpAddress(String.valueOf(mdPair.getIpAddress().getValue()));
+ pair.setMacAddress(mdPair.getMacAddress().getValue());
pairs.add(pair);
}
result.setAllowedAddressPairs(pairs);
}
result.setFixedIPs(ips);
}
- result.setMacAddress(port.getMacAddress());
+ result.setMacAddress(port.getMacAddress().getValue());
result.setName(port.getName());
result.setNetworkUUID(String.valueOf(port.getNetworkId().getValue()));
if (port.getSecurityGroups() != null) {
PortBindingExtension binding = port.getAugmentation(PortBindingExtension.class);
result.setBindinghostID(binding.getHostId());
if (binding.getVifDetails() != null) {
- List<NeutronPort_VIFDetail> details = new ArrayList<>();
- for (VifDetails vifDetail : binding.getVifDetails()) {
- NeutronPort_VIFDetail detail = new NeutronPort_VIFDetail();
- detail.setPortFilter(vifDetail.isPortFilter());
- detail.setOvsHybridPlug(vifDetail.isOvsHybridPlug());
- details.add(detail);
+ final Map<String, String> details = new HashMap<String, String>(binding.getVifDetails().size());
+ for (final VifDetails vifDetail : binding.getVifDetails()) {
+ details.put(vifDetail.getDetailsKey(), vifDetail.getValue());
}
- result.setVIFDetail(details);
+ result.setVIFDetails(details);
}
result.setBindingvifType(binding.getVifType());
result.setBindingvnicType(binding.getVnicType());
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
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;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.Interfaces;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers.router.external_gateway_info.ExternalFixedIps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
result.setExternalGatewayInfo(extGwInfo);
}
- if (router.getInterfaces() != null) {
- Map<String, NeutronRouter_Interface> interfaces = new HashMap<>();
- for (Interfaces mdInterface : router.getInterfaces()) {
- NeutronRouter_Interface pojoInterface = new NeutronRouter_Interface();
- String id = String.valueOf(mdInterface.getUuid().getValue());
- pojoInterface.setID(id);
- if (mdInterface.getTenantId() != null) {
- pojoInterface.setTenantID(String.valueOf(mdInterface.getTenantId().getValue()));
- }
- pojoInterface.setSubnetUUID(String.valueOf(mdInterface.getSubnetId().getValue()));
- pojoInterface.setPortUUID(String.valueOf(mdInterface.getPortId().getValue()));
- interfaces.put(id, pojoInterface);
- }
- result.setInterfaces(interfaces);
- }
return result;
}
if (group.getName() != null) {
answer.setSecurityGroupName(group.getName());
}
- if (group.getDescription() != null) {
- answer.setSecurityGroupDescription(group.getDescription());
- }
if (group.getTenantId() != null) {
answer.setSecurityGroupTenantID(group.getTenantId().getValue()
.replace("-", ""));
}
- if (group.getSecurityRules() != null) {
- NeutronCRUDInterfaces interfaces = new NeutronCRUDInterfaces()
- .fetchINeutronSecurityRuleCRUD(this);
- INeutronSecurityRuleCRUD srCrud = interfaces
- .getSecurityRuleInterface();
-
- List<NeutronSecurityRule> rules = new ArrayList<>();
- for (Uuid uuid : group.getSecurityRules()) {
- rules.add(srCrud.getNeutronSecurityRule(uuid.getValue()));
- }
- answer.setSecurityRules(rules);
- }
if (group.getUuid() != null) {
answer.setID(group.getUuid().getValue());
}
if (rule.getPortRangeMax() != null) {
answer.setSecurityRulePortMax(rule.getPortRangeMax());
}
- if (rule.getId() != null) {
- answer.setID(rule.getId().getValue());
+ if (rule.getUuid() != null) {
+ answer.setID(rule.getUuid().getValue());
}
return answer;
}
}
result.setNetworkUUID(subnet.getNetworkId().getValue());
result.setIpVersion(IPV_MAP.get(subnet.getIpVersion()));
- result.setCidr(subnet.getCidr());
+ result.setCidr(String.valueOf(subnet.getCidr().getValue()));
if (subnet.getGatewayIp() != null) {
result.setGatewayIP(String.valueOf(subnet.getGatewayIp().getValue()));
}
List<NeutronSubnetIPAllocationPool> allocationPools = new ArrayList<>();
for (AllocationPools allocationPool : subnet.getAllocationPools()) {
NeutronSubnetIPAllocationPool pool = new NeutronSubnetIPAllocationPool();
- pool.setPoolStart(allocationPool.getStart());
- pool.setPoolEnd(allocationPool.getEnd());
+ pool.setPoolStart(String.valueOf(allocationPool.getStart().getValue()));
+ pool.setPoolEnd(String.valueOf(allocationPool.getEnd().getValue()));
allocationPools.add(pool);
}
result.setAllocationPools(allocationPools);
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;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSecurityRuleCRUD;
/**
* Unit test fort {@link SecurityGroupCacheManagerImpl}
@InjectMocks private SecurityGroupCacheManagerImpl securityGroupCacheManagerImpl;
@Mock private INeutronPortCRUD neutronPortCache;
@Mock private INeutronSecurityGroupCRUD securityGroupCache;
+ @Mock private INeutronSecurityRuleCRUD neutronSecurityRuleCache;
@Mock NeutronPort neutronPort_Vm1;
@Mock NeutronPort neutronPort_Vm2;
@Mock NeutronPort neutronPort_Vm3;
securityGroups_Vm_2.add(neutronSecurityGroup_2);
List<NeutronSecurityGroup> securityGroups_Vm_3 = new ArrayList<>();
securityGroups_Vm_3.add(neutronSecurityGroup_3);
- List<NeutronSecurityRule> securityRule_1 = new ArrayList<>();
- securityRule_1.add(neutronSecurityRule_1);
- List<NeutronSecurityRule> securityRule_2 = new ArrayList<>();
- securityRule_2.add(neutronSecurityRule_2);
- List<NeutronSecurityRule> securityRule_3 = new ArrayList<>();
- securityRule_3.add(neutronSecurityRule_3);
+ List<NeutronSecurityRule> securityRule = new ArrayList<>();
+ securityRule.add(neutronSecurityRule_1);
+ securityRule.add(neutronSecurityRule_2);
+ securityRule.add(neutronSecurityRule_3);
neutron_IPs_1.add(neutron_ip_1);
neutron_IPs_2.add(neutron_ip_2);
when(neutronPort_Vm3.getSecurityGroups()).thenReturn(securityGroups_Vm_3);
when(neutronPort_Vm4.getSecurityGroups()).thenReturn(securityGroups_Vm_1);
when(neutronPort_Vm5.getSecurityGroups()).thenReturn(securityGroups_Vm_3);
- when(neutronSecurityGroup_1.getSecurityRules()).thenReturn(securityRule_1);
- when(neutronSecurityGroup_2.getSecurityRules()).thenReturn(securityRule_2);
- when(neutronSecurityGroup_3.getSecurityRules()).thenReturn(securityRule_3);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(securityRule);
when(neutronSecurityGroup_1.getSecurityGroupUUID()).thenReturn(SECURITY_GROUP_ID_1);
when(neutronSecurityGroup_2.getSecurityGroupUUID()).thenReturn(SECURITY_GROUP_ID_2);
when(neutronSecurityGroup_3.getSecurityGroupUUID()).thenReturn(SECURITY_GROUP_ID_3);
+ when(neutronSecurityGroup_1.getID()).thenReturn(SECURITY_GROUP_ID_1);
+ when(neutronSecurityGroup_2.getID()).thenReturn(SECURITY_GROUP_ID_2);
+ when(neutronSecurityGroup_3.getID()).thenReturn(SECURITY_GROUP_ID_3);
+ when(neutronSecurityRule_1.getSecurityRuleGroupID()).thenReturn(SECURITY_GROUP_ID_1);
+ when(neutronSecurityRule_2.getSecurityRuleGroupID()).thenReturn(SECURITY_GROUP_ID_2);
+ when(neutronSecurityRule_3.getSecurityRuleGroupID()).thenReturn(SECURITY_GROUP_ID_3);
when(neutronSecurityRule_1.getSecurityRemoteGroupID()).thenReturn(SECURITY_GROUP_ID_1);
when(neutronSecurityRule_3.getSecurityRemoteGroupID()).thenReturn(SECURITY_GROUP_ID_2);
when(neutronPort_Vm1.getFixedIPs()).thenReturn(neutron_IPs_1);
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.INeutronSecurityRuleCRUD;
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
@Mock private INeutronSubnetCRUD subNetCache;
@Mock private Southbound southbound;
@Mock private ConfigurationService configurationService;
+ @Mock private INeutronSecurityRuleCRUD neutronSecurityRuleCache;
@Mock NeutronNetwork neutronNetwork;
@Mock NeutronPort neutronPort_Vm1;
@Mock NeutronPort neutronPort_Vm2;
securityGroups_2.add(neutronSecurityGroup_2);
List<NeutronSecurityGroup> securityGroups_3 = new ArrayList<>();
securityGroups_3.add(neutronSecurityGroup_3);
- List<NeutronSecurityRule> securityRule_1 = new ArrayList<>();
- securityRule_1.add(neutronSecurityRule_1);
- List<NeutronSecurityRule> securityRule_2 = new ArrayList<>();
- securityRule_1.add(neutronSecurityRule_2);
- List<NeutronSecurityRule> securityRule_3 = new ArrayList<>();
- securityRule_1.add(neutronSecurityRule_3);
+ List<NeutronSecurityRule> securityRule = new ArrayList<>();
+ securityRule.add(neutronSecurityRule_1);
+ securityRule.add(neutronSecurityRule_2);
+ securityRule.add(neutronSecurityRule_3);
neutron_IPs_1.add(neutron_ip_1);
neutron_IPs_2.add(neutron_ip_2);
when(neutronPort_Vm1.getSecurityGroups()).thenReturn(securityGroups_1);
when(neutronPort_Vm2.getSecurityGroups()).thenReturn(securityGroups_2);
when(neutronPort_Vm3.getSecurityGroups()).thenReturn(securityGroups_3);
- when(neutronSecurityGroup_1.getSecurityRules()).thenReturn(securityRule_1);
- when(neutronSecurityGroup_2.getSecurityRules()).thenReturn(securityRule_2);
- when(neutronSecurityGroup_3.getSecurityRules()).thenReturn(securityRule_3);
+ when(neutronSecurityRuleCache.getAllNeutronSecurityRules()).thenReturn(securityRule);
when(neutronSecurityGroup_1.getSecurityGroupUUID()).thenReturn(SECURITY_GROUP_ID_1);
when(neutronSecurityGroup_2.getSecurityGroupUUID()).thenReturn(SECURITY_GROUP_ID_2);
when(neutronSecurityGroup_3.getSecurityGroupUUID()).thenReturn(SECURITY_GROUP_ID_3);
+ when(neutronSecurityGroup_1.getID()).thenReturn(SECURITY_GROUP_ID_1);
+ when(neutronSecurityGroup_2.getID()).thenReturn(SECURITY_GROUP_ID_2);
+ when(neutronSecurityGroup_3.getID()).thenReturn(SECURITY_GROUP_ID_3);
+ when(neutronSecurityRule_1.getSecurityRuleGroupID()).thenReturn(SECURITY_GROUP_ID_1);
+ when(neutronSecurityRule_2.getSecurityRuleGroupID()).thenReturn(SECURITY_GROUP_ID_2);
+ when(neutronSecurityRule_3.getSecurityRuleGroupID()).thenReturn(SECURITY_GROUP_ID_3);
when(neutronPort_Vm1.getDeviceOwner()).thenReturn(DEVICE_OWNER_VM);
when(neutronPort_Vm2.getDeviceOwner()).thenReturn(DEVICE_OWNER_VM);
when(neutronPort_Vm3.getDeviceOwner()).thenReturn(DEVICE_OWNER_VM);
<!-- openflowplugin dependencies -->
<dependency>
<groupId>org.opendaylight.openflowplugin</groupId>
- <artifactId>features-openflowplugin-li</artifactId>
+ <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-li</artifactId>
+ <artifactId>features-openflowplugin-extension</artifactId>
<version>${openflowplugin.version}</version>
<classifier>features</classifier>
<type>xml</type>
<artifactId>routemgr-impl</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.netvirt</groupId>
+ <artifactId>utils.neutron-utils</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>routemgr-config</artifactId>
<artifactId>routemgr-api</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.opendaylight.openflowplugin</groupId>
+ <artifactId>openflowplugin-extension-nicira</artifactId>
+ <version>${openflowplugin.version}</version>
+ </dependency>
<!--
<dependency>
<groupId>org.opendaylight.mdsal</groupId>
-->
<repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
<repository>mvn:org.opendaylight.neutron/features-neutron/{{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.openflowplugin/features-openflowplugin-extension/{{VERSION}}/xml/features</repository>
+ <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/{{VERSION}}/xml/features</repository>
<repository>mvn:org.opendaylight.ovsdb/southbound-features/1.3.0-SNAPSHOT/xml/features</repository>
<feature name='odl-routemgr-plugin' description="Opendaylight :: Routemgr :: Plugin" version='${project.version}'>
- <feature version="${openflowplugin.version}">odl-openflowplugin-flow-services-li</feature>
+ <feature version="${openflowplugin.version}">odl-openflowplugin-flow-services</feature>
<feature version="${neutron.version}">odl-neutron-transcriber</feature>
<feature version="1.3.0-SNAPSHOT">odl-ovsdb-southbound-impl</feature>
<feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
- <feature version="${openflowplugin.version}">odl-openflowplugin-nxm-extensions-li</feature>
+ <feature version="${openflowplugin.version}">odl-openflowplugin-nxm-extensions</feature>
<!--
<feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
-->
import com.google.common.net.InetAddresses;
import org.opendaylight.netvirt.routemgr.utils.RoutemgrUtil;
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.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
/**
* Add Subnet
- *
- * @param snetId subnet id
+ * @param snetId subnet id
* @param name subnet name
* @param networkId network id
* @param tenantId tenant id
*/
public void addSubnet(Uuid snetId, String name, Uuid networkId, Uuid tenantId,
IpAddress gatewayIp, List<AllocationPools> poolsList,
- String ipVersion, String subnetCidr,
+ String ipVersion, IpPrefix subnetCidr,
String ipV6AddressMode, String ipV6RaMode) {
// Save the gateway ipv6 address in its fully expanded format. We always store the v6Addresses
fixedip.getSubnetId(),
port.getNetworkId(),
fixedip.getIpAddress(),
- port.getMacAddress(),
+ port.getMacAddress().getValue(),
port.getDeviceOwner());
} else {
// Add host interface
fixedip.getSubnetId(),
port.getNetworkId(),
fixedip.getIpAddress(),
- port.getMacAddress(),
+ port.getMacAddress().getValue(),
port.getDeviceOwner());
}
}
&& (ifMgr.IPV6_AUTO_ADDRESS_SUBNETS.contains(subnet.getIpv6AddressMode())))
|| ((!subnet.getIpv6RAMode().isEmpty())
&& (ifMgr.IPV6_AUTO_ADDRESS_SUBNETS.contains(subnet.getIpv6RAMode())))) {
- prefixList.add(subnet.getSubnetCidr());
+ prefixList.add(String.valueOf(subnet.getSubnetCidr().getValue()));
}
if (subnet.getIpv6RAMode().equalsIgnoreCase(ifMgr.IPV6_DHCPV6_STATELESS)) {
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.inet.types.rev100924.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private IpAddress gatewayIp;
private Boolean allocPoolFlag;
private List<APool> poolList;
- private String subnetCidr;
+ private IpPrefix subnetCidr;
private String ipVersion;
private String ipv6AddressMode;
private String ipv6RAMode;
public String getIpVersion() { return ipVersion;}
- public VirtualSubnet setSubnetCidr(String subnetCidr) {
+ public VirtualSubnet setSubnetCidr(IpPrefix subnetCidr) {
this.subnetCidr = subnetCidr;
return this;
}
- public String getSubnetCidr() { return subnetCidr;}
+ public IpPrefix getSubnetCidr() { return subnetCidr;}
public VirtualSubnet setIpv6AddressMode(String ipv6AddressMode) {
this.ipv6AddressMode = ipv6AddressMode;
return allocPoolFlag;
}
- public void addPool(String start, String end) {
+ public void addPool(IpAddress start, IpAddress end) {
APool pool = new APool();
pool.setPoolStart(start);
pool.setPoolEnd(end);
}
private class APool {
- private String poolStart;
- private String poolEnd;
+ private IpAddress poolStart;
+ private IpAddress poolEnd;
- public void setPoolStart(String start) {
+ public void setPoolStart(IpAddress start) {
this.poolStart = start;
}
- public String getPoolStart() {
+ public IpAddress getPoolStart() {
return poolStart;
}
- public void setPoolEnd(String end) {
+ public void setPoolEnd(IpAddress end) {
this.poolEnd = end;
}
- public String getPoolEnd() {
+ public IpAddress getPoolEnd() {
return poolEnd;
}
}
import org.junit.Test;
import org.mockito.Mockito;
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.IpPrefix;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
v6Subnet.setGatewayIp(gwIpAddress);
v6Subnet.setIpv6AddressMode(ifMgrInstance.IPV6_SLAAC);
v6Subnet.setIpv6RAMode(ifMgrInstance.IPV6_SLAAC);
- v6Subnet.setSubnetCidr("2001:db8::/64");
+ v6Subnet.setSubnetCidr(new IpPrefix("2001:db8::/64".toCharArray()));
List<VirtualSubnet> subnetList = new ArrayList<>();
subnetList.add(v6Subnet);
v6Subnet1.setGatewayIp(gwIpAddress);
v6Subnet1.setIpv6AddressMode(ifMgrInstance.IPV6_SLAAC);
v6Subnet1.setIpv6RAMode(ifMgrInstance.IPV6_SLAAC);
- v6Subnet1.setSubnetCidr("2001:db8:1111::/64");
+ v6Subnet1.setSubnetCidr(new IpPrefix("2001:db8:1111::/64".toCharArray()));
VirtualSubnet v6Subnet2 = new VirtualSubnet();
v6Subnet2.setRouter(vRouter);
v6Subnet2.setGatewayIp(gwIpAddress);
v6Subnet2.setIpv6AddressMode(ifMgrInstance.IPV6_DHCPV6_STATELESS);
v6Subnet2.setIpv6RAMode(ifMgrInstance.IPV6_DHCPV6_STATELESS);
- v6Subnet2.setSubnetCidr("2001:db8:2222::/64");
+ v6Subnet2.setSubnetCidr(new IpPrefix("2001:db8:2222::/64".toCharArray()));
List<VirtualSubnet> subnetList = new ArrayList<>();
subnetList.add(v6Subnet1);
<artifactId>utils.mdsal-utils</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>openstack.net-virt</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>
<artifactId>utils.servicehelper</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>openstack.net-virt</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>
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 java.util.UUID;
+
+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.crud.INeutronNetworkCRUD;
+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.INeutronSecurityRuleCRUD;
+import org.opendaylight.netvirt.openstack.netvirt.translator.crud.INeutronSubnetCRUD;
import org.opendaylight.netvirt.utils.servicehelper.ServiceHelper;
public class NeutronUtils {
np.setDeviceOwner(owner);
np.setMacAddress(mac);
np.setNetworkUUID(networkId);
- List<org.opendaylight.neutron.spi.Neutron_IPs> srcAddressList =
+ List<org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs> srcAddressList =
new ArrayList<>();
- org.opendaylight.neutron.spi.Neutron_IPs nip = new org.opendaylight.neutron.spi.Neutron_IPs();
+ org.opendaylight.netvirt.openstack.netvirt.translator.Neutron_IPs nip = new org.opendaylight.netvirt.openstack.netvirt.translator.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);
+ iNeutronPortCRUD.addPort(np);
return np;
}
ns.initDefaults();
ns.setNetworkUUID(networkId);
ns.setTenantID(tenantId);
- iNeutronSubnetCRUD.add(ns);
+ iNeutronSubnetCRUD.addSubnet(ns);
return ns;
}