import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronFloatingIpAware;
import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronNetworkAware;
import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronPortAware;
import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronRouterAware;
import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronSecurityGroupAware;
import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronSubnetAware;
+import org.opendaylight.neutron.spi.INeutronFloatingIPAware;
import org.opendaylight.neutron.spi.INeutronNetworkAware;
import org.opendaylight.neutron.spi.INeutronPortAware;
import org.opendaylight.neutron.spi.INeutronRouterAware;
ServiceRegistration<INeutronRouterAware> neutronRouterAwareRegistration = context.registerService(
INeutronRouterAware.class, NeutronRouterAware.getInstance(), null);
registrations.add(neutronRouterAwareRegistration);
+
+ ServiceRegistration<INeutronFloatingIPAware> neutronFloatingIpAwareRegistration = context.registerService(
+ INeutronFloatingIPAware.class, new NeutronFloatingIpAware(dataProvider), null);
+ registrations.add(neutronFloatingIpAwareRegistration);
}
/**
--- /dev/null
+package org.opendaylight.groupbasedpolicy.neutron.mapper.mapping;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.neutron.spi.INeutronFloatingIPAware;
+import org.opendaylight.neutron.spi.NeutronFloatingIP;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+
+public class NeutronFloatingIpAware implements INeutronFloatingIPAware {
+
+ public static final Logger LOG = LoggerFactory.getLogger(NeutronFloatingIpAware.class);
+ private final DataBroker dataProvider;
+
+ public NeutronFloatingIpAware(DataBroker dataProvider) {
+ this.dataProvider = Preconditions.checkNotNull(dataProvider);
+ }
+
+ @Override
+ public int canCreateFloatingIP(NeutronFloatingIP floatingIP) {
+ LOG.trace("canCreateFloatingIP - {}", floatingIP);
+ return StatusCode.OK;
+ }
+
+ @Override
+ public void neutronFloatingIPCreated(NeutronFloatingIP floatingIP) {
+ LOG.trace("neutronFloatingIPCreated - {}", floatingIP);
+ }
+
+ @Override
+ public int canUpdateFloatingIP(NeutronFloatingIP delta, NeutronFloatingIP original) {
+ LOG.trace("canUpdateFloatingIP - delta: {} original: {}", delta, original);
+ return StatusCode.OK;
+ }
+
+ @Override
+ public void neutronFloatingIPUpdated(NeutronFloatingIP floatingIP) {
+ LOG.trace("neutronFloatingIPUpdated - {}", floatingIP);
+ }
+
+ @Override
+ public int canDeleteFloatingIP(NeutronFloatingIP floatingIP) {
+ LOG.trace("canDeleteFloatingIP - {}", floatingIP);
+ return StatusCode.OK;
+ }
+
+ @Override
+ public void neutronFloatingIPDeleted(NeutronFloatingIP floatingIP) {
+ LOG.trace("neutronFloatingIPDeleted - {}", floatingIP);
+ }
+
+}
public static final Logger LOG = LoggerFactory.getLogger(NeutronPortAware.class);
private static final String DEVICE_OWNER_DHCP = "network:dhcp";
private static final String DEVICE_OWNER_ROUTER_IFACE = "network:router_interface";
+ private static final String DEVICE_OWNER_ROUTER_GATEWAY = "network:router_gateway";
+ private static final String DEVICE_OWNER_FLOATING_IP = "network:floatingip";
private static final int DHCP_CLIENT_PORT = 68;
private static final int DHCP_SERVER_PORT = 67;
private final DataBroker dataProvider;
NeutronPortAware.class.getSimpleName(), NeutronRouterAware.class.getSimpleName());
return;
}
+ if (isRouterGatewayPort(port)) {
+ LOG.trace("Port is router gateway - {}", port.getID());
+ return;
+ }
+ if (isFloatingIp(port)) {
+ LOG.trace("Port is floating ip - {}", port.getID());
+ return;
+ }
+ if (Strings.isNullOrEmpty(port.getTenantID())) {
+ LOG.trace("REMOVE ME: Tenant is null - {}", port.getID());
+ return;
+ }
ReadWriteTransaction rwTx = dataProvider.newReadWriteTransaction();
TenantId tenantId = new TenantId(Utils.normalizeUuid(port.getTenantID()));
if (isDhcpPort(port)) {
- LOG.trace("Port is DHCP port.");
+ LOG.trace("Port is DHCP port. - {}", port.getID());
List<NeutronSecurityRule> dhcpSecRules = createDhcpSecRules(port, null, rwTx);
if (dhcpSecRules == null) {
rwTx.cancel();
NeutronPortAware.class.getSimpleName(), NeutronRouterAware.class.getSimpleName());
return;
}
+ if (isRouterGatewayPort(port)) {
+ LOG.trace("Port is router gateway - {}", port.getID());
+ return;
+ }
+ if (isFloatingIp(port)) {
+ LOG.trace("Port is floating ip - {}", port.getID());
+ return;
+ }
+ if (Strings.isNullOrEmpty(port.getTenantID())) {
+ LOG.trace("REMOVE ME: Tenant is null - {}", port.getID());
+ return;
+ }
+
ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
TenantId tenantId = new TenantId(Utils.normalizeUuid(port.getTenantID()));
MacAddress macAddress = new MacAddress(port.getMacAddress());
return DEVICE_OWNER_ROUTER_IFACE.equals(port.getDeviceOwner());
}
+ private static boolean isRouterGatewayPort(NeutronPort port) {
+ return DEVICE_OWNER_ROUTER_GATEWAY.equals(port.getDeviceOwner());
+ }
+
+ private static boolean isFloatingIp(NeutronPort port) {
+ return DEVICE_OWNER_FLOATING_IP.equals(port.getDeviceOwner());
+ }
+
private UnregisterEndpointInput createUnregisterEndpointInput(Endpoint ep) {
UnregisterEndpointInputBuilder inputBuilder = new UnregisterEndpointInputBuilder();
L2 l2Ep = new L2Builder().setL2Context(ep.getL2Context()).setMacAddress(ep.getMacAddress()).build();