import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
import org.opendaylight.controller.networkconfig.neutron.INeutronPortAware;
import org.opendaylight.controller.networkconfig.neutron.INeutronRouterAware;
+import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityGroupAware;
+//import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityRuleAware;
import org.opendaylight.controller.networkconfig.neutron.INeutronSubnetAware;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
/**
* Function called to get APIConnector object. porperties must be defined in
- * opendaylight configuration folder inside config.ini at opendaylight/distribution
+ * opendaylight configuration folder inside config.ini at
+ * opendaylight/distribution
* /opendaylight/src/main/resources/configuration/config.ini
*
*/
*/
@Override
public Object[] getImplementations() {
- Object[] res = { NetworkHandler.class, SubnetHandler.class, PortHandler.class, RouterHandler.class, FloatingIpHandler.class };
+ Object[] res = { NetworkHandler.class, SubnetHandler.class, PortHandler.class, RouterHandler.class, FloatingIpHandler.class,
+ SecurityGroupHandler.class,
+// SecurityGroupRulesHandler.class
+ };
return res;
}
if (imp.equals(FloatingIpHandler.class)) {
c.setInterface(INeutronFloatingIPAware.class.getName(), null);
}
+ if (imp.equals(SecurityGroupHandler.class)) {
+ c.setInterface(INeutronSecurityGroupAware.class.getName(), null);
+ }
+// if (imp.equals(SecurityGroupRulesHandler.class)) {
+// c.setInterface(INeutronSecurityRuleAware.class.getName(), null);
+// }
// Create service dependencies.
c.add(createServiceDependency().setService(BindingAwareBroker.class).setCallbacks("setBindingAwareBroker", "unsetBindingAwareBroker")
.setRequired(true));
/**
* Logger instance.
*/
- static final Logger LOGGER = LoggerFactory.getLogger(PortHandler.class);
+ static final Logger LOGGER = LoggerFactory.getLogger(FloatingIpHandler.class);
static ApiConnector apiConnector;
/**
- * Invoked when a floating ip creation is requested to check if the
- * specified floating ip can be created.
+ * Invoked when a floating IP creation is requested to check if the
+ * specified floating IP can be created.
*
* @param floatingip
- * An instance of proposed new Neutron Floating ip object.
+ * An instance of proposed new Neutron Floating IP object.
*
* @return A HTTP status code to the creation request.
*/
LOGGER.error(" Floating Ip address can not be null");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
+ String fipUUID = fip.getFloatingIPUUID();
+ String projectUUID = fip.getTenantUUID();
+ String floatingNetworkUUID = fip.getFloatingNetworkUUID();
try {
- return createfloatingIp(fip);
- } catch (Exception e) {
- e.printStackTrace();
- LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked when a floating ip creation is requested to create the floating
- * ip
- *
- * @param floatingip
- * An instance of proposed new Neutron Floating ip object.
- *
- * @return A HTTP status code to the creation request.
- */
- private int createfloatingIp(NeutronFloatingIP neutronFloatingIp) throws IOException {
- String projectUUID = null;
- String floatingPoolNetworkId = null;
- String fipId = neutronFloatingIp.getID();
- String floatingIpaddress = neutronFloatingIp.getFloatingIPAddress();
- try {
- floatingPoolNetworkId = neutronFloatingIp.getFloatingNetworkUUID();
- projectUUID = neutronFloatingIp.getTenantUUID().toString();
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
if (!(projectUUID.contains("-"))) {
- projectUUID = uuidFormater(projectUUID);
+ projectUUID = Utils.uuidFormater(projectUUID);
+ }
+ if (!(floatingNetworkUUID.contains("-"))) {
+ floatingNetworkUUID = Utils.uuidFormater(floatingNetworkUUID);
}
+ boolean isValidFloatingIPUUID = Utils.isValidHexNumber(fipUUID);
+ boolean isValidFloatingNetworkUUID = Utils.isValidHexNumber(floatingNetworkUUID);
+ boolean isValidprojectUUID = Utils.isValidHexNumber(projectUUID);
+ if (!isValidFloatingIPUUID || !isValidFloatingNetworkUUID || !isValidprojectUUID) {
+ LOGGER.info("Badly formed Hexadecimal UUID...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
projectUUID = UUID.fromString(projectUUID).toString();
+ floatingNetworkUUID = UUID.fromString(floatingNetworkUUID).toString();
} catch (Exception ex) {
LOGGER.error("UUID input incorrect", ex);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
- Project project;
try {
- project = (Project) apiConnector.findById(Project.class, projectUUID);
+ FloatingIp floatingIpByID = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ if (floatingIpByID != null) {
+ LOGGER.error("Floating IP already exists...");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);
if (project == null) {
try {
Thread.currentThread();
Thread.sleep(3000);
- } catch (InterruptedException interruptedException) {
- LOGGER.error("InterruptedException : ", interruptedException);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ } catch (InterruptedException e) {
+ LOGGER.error("InterruptedException : ", e);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
project = (Project) apiConnector.findById(Project.class, projectUUID);
if (project == null) {
return HttpURLConnection.HTTP_NOT_FOUND;
}
}
- VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, floatingPoolNetworkId);
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, floatingNetworkUUID);
if (virtualNetwork == null) {
LOGGER.error("Could not find Virtual network...");
return HttpURLConnection.HTTP_NOT_FOUND;
FloatingIpPool floatingIpPool = (FloatingIpPool) apiConnector.findById(FloatingIpPool.class, floatingPoolId);
if (floatingIpPool == null) {
LOGGER.error("Could not find Floating ip pool...");
+
return HttpURLConnection.HTTP_NOT_FOUND;
}
+ } catch (IOException ie) {
+ LOGGER.error("IOException : " + ie);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ } catch (Exception e) {
+ LOGGER.error("Exception : " + e);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ }
+ return HttpURLConnection.HTTP_OK;
+ }
+
+ /**
+ * Invoked when a floating IP creation is requested to create the floating
+ * IP
+ *
+ * @param floatingip
+ * An instance of proposed new Neutron Floating IP object.
+ */
+ private void createfloatingIp(NeutronFloatingIP neutronFloatingIp) throws IOException {
+ String fipUUID = neutronFloatingIp.getFloatingIPUUID();
+ String projectUUID = neutronFloatingIp.getTenantUUID();
+ String floatingNetworkUUID = neutronFloatingIp.getFloatingNetworkUUID();
+ String floatingIpaddress = neutronFloatingIp.getFloatingIPAddress();
+ String fipPortUUID = neutronFloatingIp.getPortUUID();
+ try {
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ if (!(projectUUID.contains("-"))) {
+ projectUUID = Utils.uuidFormater(projectUUID);
+ }
+ projectUUID = UUID.fromString(projectUUID).toString();
+ if (!(floatingNetworkUUID.contains("-"))) {
+ floatingNetworkUUID = Utils.uuidFormater(floatingNetworkUUID);
+ }
+ floatingNetworkUUID = UUID.fromString(floatingNetworkUUID).toString();
+ if (neutronFloatingIp.getPortUUID() != null) {
+ if (!(fipPortUUID.contains("-"))) {
+ fipPortUUID = Utils.uuidFormater(fipPortUUID);
+ }
+ fipPortUUID = UUID.fromString(fipPortUUID).toString();
+ }
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ }
+ try {
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, floatingNetworkUUID);
+ String floatingPoolId = virtualNetwork.getFloatingIpPools().get(0).getUuid();
+ FloatingIpPool floatingIpPool = (FloatingIpPool) apiConnector.findById(FloatingIpPool.class, floatingPoolId);
FloatingIp floatingIp = new FloatingIp();
- floatingIp.setUuid(fipId);
- floatingIp.setName(fipId);
- floatingIp.setDisplayName(fipId);
+ floatingIp.setUuid(fipUUID);
+ floatingIp.setName(fipUUID);
+ floatingIp.setDisplayName(fipUUID);
floatingIp.setAddress(floatingIpaddress);
floatingIp.setParent(floatingIpPool);
floatingIp.setProject(project);
- if (neutronFloatingIp.getPortUUID() != null) {
- VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class,
- neutronFloatingIp.getPortUUID());
+ if (fipPortUUID != null) {
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, fipPortUUID);
if (virtualMachineInterface != null) {
floatingIp.addVirtualMachineInterface(virtualMachineInterface);
}
boolean floatingIpCreaterd = apiConnector.create(floatingIp);
if (!floatingIpCreaterd) {
LOGGER.warn("Floating Ip creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
LOGGER.info("Floating Ip : " + floatingIp.getName() + " having UUID : " + floatingIp.getUuid() + " sucessfully created...");
- return HttpURLConnection.HTTP_OK;
} catch (IOException ioEx) {
LOGGER.error("Exception : " + ioEx);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
}
/**
- * Invoked to take action after a floating ip has been created.
+ * Invoked to create a Floating IP and take action after the floating IP has
+ * been created.
*
- * @param floatingip
- * An instance of proposed new Neutron Floating ip object.
+ * @param floatingIP
+ * An instance of proposed new Neutron Floating IP object.
*
- * @return A HTTP status code to the creation request.
*/
@Override
public void neutronFloatingIPCreated(NeutronFloatingIP neutronFloatingIp) {
- FloatingIp floatingIp = null;
try {
- floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, neutronFloatingIp.getFloatingIPUUID());
+ createfloatingIp(neutronFloatingIp);
+ } catch (Exception ex) {
+ LOGGER.error("Exception : " + ex);
+ }
+ try {
+ String fipUUID = neutronFloatingIp.getFloatingIPUUID();
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ FloatingIp floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
if (floatingIp != null) {
LOGGER.info("Floating Ip creation verified....");
+ } else {
+ LOGGER.error("Floating Ip creation failed....");
}
} catch (Exception ex) {
LOGGER.error("Exception : " + ex);
}
-
}
/**
- * Invoked when a floating ip update is requested to indicate if the
- * specified floating ip can be changed using the specified delta.
+ * Invoked when a floating IP update is requested to indicate if the
+ * specified floating IP can be changed using the specified delta.
*
* @param delta
- * Updates to the floating ip object using patch semantics.
+ * Updates to the floating IP object using patch semantics.
* @param original
- * An instance of the Neutron floating ip object to be updated.
+ * An instance of the Neutron floating IP object to be updated.
* @return A HTTP status code to the update request.
*/
@Override
public int canUpdateFloatingIP(NeutronFloatingIP deltaFloatingIp, NeutronFloatingIP originalFloatingIp) {
- apiConnector = Activator.apiConnector;
- FloatingIp floatingIP = null;
apiConnector = Activator.apiConnector;
if (deltaFloatingIp == null || originalFloatingIp == null) {
LOGGER.error("Neutron Floating Ip can't be null..");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
+ FloatingIp floatingIp = null;
+ String fipUUID = originalFloatingIp.getFloatingIPUUID();
+
try {
- floatingIP = (FloatingIp) apiConnector.findById(FloatingIp.class, originalFloatingIp.getFloatingIPUUID());
- } catch (IOException e) {
- LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- if (floatingIP == null) {
- LOGGER.error("No network exists for the specified UUID...");
- return HttpURLConnection.HTTP_FORBIDDEN;
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
try {
- return updateFloatingIP(originalFloatingIp.getFloatingIPUUID(), deltaFloatingIp);
+ floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ if (floatingIp == null) {
+ LOGGER.error("No floating IP exists for the specified UUID...");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
} catch (IOException ex) {
LOGGER.error("Exception : " + ex);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
-
+ return HttpURLConnection.HTTP_OK;
}
/**
- * Invoked to update the floating ip
+ * Invoked to update the floating IP
*
- * @param string
- * An instance of floating ip UUID.
* @param delta_floatingip
- * An instance of delta floating ip.
+ * An instance of delta floating IP.
*
- * @return A boolean to the update request.
* @throws IOException
*/
- private int updateFloatingIP(String floatingIpUUID, NeutronFloatingIP deltaFloatingIp) throws IOException {
- FloatingIp floatingIP = (FloatingIp) apiConnector.findById(FloatingIp.class, floatingIpUUID);
- String virtualMachineInterfaceUUID = deltaFloatingIp.getPortUUID();
- if (deltaFloatingIp.getPortUUID() != null) {
+ private void updateFloatingIP(NeutronFloatingIP neutronFloatingIp) throws IOException {
+ String fipUUID = neutronFloatingIp.getFloatingIPUUID();
+ String fipPortUUID = neutronFloatingIp.getPortUUID();
+ try {
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ if (neutronFloatingIp.getPortUUID() != null) {
+ if (!(fipPortUUID.contains("-"))) {
+ fipPortUUID = Utils.uuidFormater(fipPortUUID);
+ }
+ fipPortUUID = UUID.fromString(fipPortUUID).toString();
+ }
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ }
+ FloatingIp floatingIP = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ if (fipPortUUID != null) {
VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class,
- virtualMachineInterfaceUUID);
+ fipPortUUID);
if (virtualMachineInterface != null) {
floatingIP.setVirtualMachineInterface(virtualMachineInterface);
}
}
- if (virtualMachineInterfaceUUID == null) {
+ if (fipPortUUID == null) {
floatingIP.clearVirtualMachineInterface();
}
boolean floatingIpUpdate = apiConnector.update(floatingIP);
if (!floatingIpUpdate) {
LOGGER.warn("Floating Ip Updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
LOGGER.info("Floating Ip having UUID : " + floatingIP.getUuid() + " has been sucessfully updated...");
- return HttpURLConnection.HTTP_OK;
}
/**
- * Invoked to take action after a floating ip has been updated.
+ * Invoked to take action after a floating IP has been updated.
*
* @param floatingIp
- * An instance of modified Neutron floating ip object.
+ * An instance of modified Neutron floating IP object.
*/
@Override
- public void neutronFloatingIPUpdated(NeutronFloatingIP neutronFloatingIp) {
+ public void neutronFloatingIPUpdated(NeutronFloatingIP updatedFloatingIp) {
try {
- FloatingIp floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, neutronFloatingIp.getFloatingIPUUID());
- if (neutronFloatingIp.getPortUUID() != null) {
- if (floatingIp.getVirtualMachineInterface().get(0).getUuid().matches(neutronFloatingIp.getPortUUID())) {
- LOGGER.info("Floating Ip with floating UUID " + neutronFloatingIp.getFloatingIPUUID() + " is Updated successfully.");
+ updateFloatingIP(updatedFloatingIp);
+ String fipUUID = updatedFloatingIp.getFloatingIPUUID();
+ String fipPortUUID = updatedFloatingIp.getPortUUID();
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ if (fipPortUUID != null) {
+ if (!(fipPortUUID.contains("-"))) {
+ fipPortUUID = Utils.uuidFormater(fipPortUUID);
+ }
+ fipPortUUID = UUID.fromString(fipPortUUID).toString();
+ }
+ FloatingIp floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ if (fipPortUUID != null) {
+ if (floatingIp.getVirtualMachineInterface().get(0).getUuid().matches(fipPortUUID)) {
+ LOGGER.info("Floating Ip with floating UUID " + fipUUID + " is Updated successfully.");
} else {
LOGGER.info("Floating Ip Updation failed..");
}
- } else if (neutronFloatingIp.getPortUUID() == null && floatingIp.getVirtualMachineInterface() == null) {
- LOGGER.info("Floating Ip with floating UUID " + neutronFloatingIp.getFloatingIPUUID() + " is Updated successfully.");
+ } else if (fipPortUUID == null && floatingIp.getVirtualMachineInterface() == null) {
+ LOGGER.info("Floating Ip with floating UUID " + fipUUID + " is Updated successfully.");
} else {
LOGGER.info("Floating Ip Updation failed..");
}
@Override
public int canDeleteFloatingIP(NeutronFloatingIP neutronFloatingIp) {
apiConnector = Activator.apiConnector;
- if (neutronFloatingIp == null) {
- LOGGER.error("Neutron Floating Ip can not be null.. ");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
+ String fipUUID = neutronFloatingIp.getFloatingIPUUID();
try {
- return deleteFloatingIP(neutronFloatingIp.getFloatingIPUUID());
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ FloatingIp floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ if (floatingIp == null) {
+ LOGGER.info("No Floating Ip exists with UUID : " + fipUUID);
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
+ return HttpURLConnection.HTTP_OK;
} catch (IOException ioEx) {
LOGGER.error("Exception : " + ioEx);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
}
- /**
- * Invoked to delete the specified Neutron floating ip.
- *
- * @param String
- * An instance of floating ip UUID.
- *
- * @return A boolean to the delete request.
- * @throws IOException
- */
- private int deleteFloatingIP(String neutronFloatingIp) throws IOException {
- FloatingIp floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, neutronFloatingIp);
- if (floatingIp != null) {
- apiConnector.delete(floatingIp);
- LOGGER.info("Floating Ip with UUID : " + floatingIp.getUuid() + " has been deleted successfully....");
- return HttpURLConnection.HTTP_OK;
- } else {
- LOGGER.info("No Floating Ip exists with UUID : " + neutronFloatingIp);
- return HttpURLConnection.HTTP_NOT_FOUND;
- }
- }
-
/**
* Invoked to take action after a floatingIP has been deleted.
*
* @param NeutronfloatingIP
- * An instance of deleted floatingIP Network object.
+ * An instance of deleted floatingIP object.
*/
@Override
public void neutronFloatingIPDeleted(NeutronFloatingIP neutronFloatingIp) {
- FloatingIp fip = null;
+ String fipUUID = neutronFloatingIp.getFloatingIPUUID();
+ FloatingIp floatingIp = null;
try {
- fip = (FloatingIp) apiConnector.findById(FloatingIp.class, neutronFloatingIp.getFloatingIPUUID());
- if (fip == null) {
+ if (!(fipUUID.contains("-"))) {
+ fipUUID = Utils.uuidFormater(fipUUID);
+ }
+ fipUUID = UUID.fromString(fipUUID).toString();
+ floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ apiConnector.delete(floatingIp);
+ floatingIp = (FloatingIp) apiConnector.findById(FloatingIp.class, fipUUID);
+ if (floatingIp == null) {
LOGGER.info("Floating ip deletion verified....");
+ } else {
+ LOGGER.info("Floating ip deletion failed....");
}
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
+ } catch (IOException ioEx) {
+ LOGGER.error("Exception : " + ioEx);
+ } catch (Exception ex) {
+ LOGGER.error("Exception : " + ex);
}
-
- }
-
- /**
- * Invoked to format the UUID if UUID is not in correct format.
- *
- * @param String
- * An instance of UUID string.
- *
- * @return Correctly formated UUID string.
- */
- private String uuidFormater(String uuid) {
- String uuidPattern = null;
- String id1 = uuid.substring(0, 8);
- String id2 = uuid.substring(8, 12);
- String id3 = uuid.substring(12, 16);
- String id4 = uuid.substring(16, 20);
- String id5 = uuid.substring(20, 32);
- uuidPattern = (id1 + "-" + id2 + "-" + id3 + "-" + id4 + "-" + id5);
- return uuidPattern;
}
-}
+}
\ No newline at end of file
-/*
- * Copyright (C) 2014 Juniper Networks, Inc.
- *
- * 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.plugin2oc.neutron;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.UUID;
-
-import net.juniper.contrail.api.ApiConnector;
-import net.juniper.contrail.api.types.FloatingIpPool;
-import net.juniper.contrail.api.types.Project;
-import net.juniper.contrail.api.types.VirtualNetwork;
-
-import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
-import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Handle requests for Neutron Network.
- */
-public class NetworkHandler implements INeutronNetworkAware {
- /**
- * Logger instance.
- */
- static final Logger LOGGER = LoggerFactory.getLogger(NetworkHandler.class);
- static ApiConnector apiConnector;
-
- /**
- * Invoked when a network creation is requested to check if the specified
- * network can be created and then creates the network
- *
- * @param network
- * An instance of proposed new Neutron Network object.
- *
- * @return A HTTP status code to the creation request.
- */
- @Override
- public int canCreateNetwork(NeutronNetwork network) {
- if (network == null) {
- LOGGER.error("Network object can't be null..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- LOGGER.debug("Network object " + network);
- apiConnector = Activator.apiConnector;
- if (network.getNetworkUUID() == null || network.getNetworkName() == null || network.getNetworkUUID().equals("")
- || network.getNetworkName().equals("")) {
- LOGGER.error("Network UUID and Network Name can't be null/empty...");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- if (network.getTenantID() == null) {
- LOGGER.error("Network tenant Id can not be null");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- try {
- VirtualNetwork virtualNetwork = null;
- String networkUUID = null;
- String projectUUID = null;
- try {
- networkUUID = UUID.fromString(network.getNetworkUUID()).toString();
- projectUUID = network.getTenantID().toString();
- if (!(projectUUID.contains("-"))) {
- projectUUID = uuidFormater(projectUUID);
- }
- projectUUID = UUID.fromString(projectUUID).toString();
- } catch (Exception ex) {
- LOGGER.error("UUID input incorrect", ex);
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
- Project project = (Project) apiConnector.findById(Project.class, projectUUID);
- if (project == null) {
- try {
- Thread.currentThread();
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- LOGGER.error("InterruptedException : ", e);
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- project = (Project) apiConnector.findById(Project.class, projectUUID);
- if (project == null) {
- LOGGER.error("Could not find projectUUID...");
- return HttpURLConnection.HTTP_NOT_FOUND;
- }
- }
- if (virtualNetwork != null) {
- LOGGER.warn("Network already exists..");
- return HttpURLConnection.HTTP_FORBIDDEN;
- }
- return createNetwork(network);
- } catch (IOException ie) {
- LOGGER.error("IOException : " + ie);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to take action after a network has been created.
- *
- * @param network
- * An instance of new Neutron Network object.
- */
- @Override
- public void neutronNetworkCreated(NeutronNetwork network) {
- VirtualNetwork virtualNetwork = null;
- try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, network.getNetworkUUID());
- if (virtualNetwork != null) {
- LOGGER.info("Network creation verified....");
- }
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- }
- }
-
- /**
- * Invoked to create the specified Neutron Network.
- *
- * @param network
- * An instance of new Neutron Network object.
- *
- * @return A HTTP status code to the creation request.
- */
- private int createNetwork(NeutronNetwork network) throws IOException {
- VirtualNetwork virtualNetwork = null;
- Project project;
- virtualNetwork = new VirtualNetwork();
- try {
- project = (Project) apiConnector.findById(Project.class, network.getTenantID());
- virtualNetwork.setParent(project);
- } catch (IOException ioEx) {
- LOGGER.error("Exception : " + ioEx);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- // map neutronNetwork to virtualNetwork
- virtualNetwork = mapNetworkProperties(network, virtualNetwork);
- boolean networkCreated;
- try {
- networkCreated = apiConnector.create(virtualNetwork);
- LOGGER.debug("networkCreated: " + networkCreated);
- if (!networkCreated) {
- LOGGER.warn("Network creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- } catch (IOException ioEx) {
- LOGGER.error("Exception : " + ioEx);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("Network : " + virtualNetwork.getName() + " having UUID : " + virtualNetwork.getUuid() + " sucessfully created...");
- if (virtualNetwork.getRouterExternal()) {
- FloatingIpPool floatingIpPool = null;
- String fipId = UUID.randomUUID().toString();
- floatingIpPool = new FloatingIpPool();
- floatingIpPool.setName(fipId);
- floatingIpPool.setDisplayName(fipId);
- floatingIpPool.setUuid(fipId);
- floatingIpPool.setParent(virtualNetwork);
- boolean createFloatingIpPool;
- try {
- createFloatingIpPool = apiConnector.create(floatingIpPool);
- if (!createFloatingIpPool) {
- LOGGER.info("Floating Ip pool creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } else {
- LOGGER.info("Floating Ip pool created with UUID : " + floatingIpPool.getUuid());
- }
- } catch (IOException ioEx) {
- LOGGER.error("IOException : " + ioEx);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
- return HttpURLConnection.HTTP_OK;
- }
-
-
- /**
- * Invoked to map the NeutronNetwork object properties to the virtualNetwork
- * object.
- *
- * @param neutronNetwork
- * An instance of new Neutron Network object.
- * @param virtualNetwork
- * An instance of new virtualNetwork object.
- * @return {@link VirtualNetwork}
- */
- private VirtualNetwork mapNetworkProperties(NeutronNetwork neutronNetwork, VirtualNetwork virtualNetwork) {
- boolean routerExternal = false;
- boolean ishared = false;
- String networkUUID = neutronNetwork.getNetworkUUID();
- String networkName = neutronNetwork.getNetworkName();
- if (neutronNetwork.getRouterExternal() != null) {
- routerExternal = neutronNetwork.getRouterExternal();
- }
- if (neutronNetwork.getShared() != null) {
- ishared = neutronNetwork.getShared();
- }
- virtualNetwork.setName(networkName);
- virtualNetwork.setUuid(networkUUID);
- virtualNetwork.setDisplayName(networkName);
- virtualNetwork.setRouterExternal(routerExternal);
- virtualNetwork.setIsShared(ishared);
- return virtualNetwork;
- }
-
- /**
- * Invoked when a network update is requested to indicate if the specified
- * network can be changed using the specified delta.
- *
- * @param delta
- * Updates to the network object using patch semantics.
- * @param original
- * An instance of the Neutron Network object to be updated.
- * @return A HTTP status code to the update request.
- */
- @Override
- public int canUpdateNetwork(NeutronNetwork deltaNetwork, NeutronNetwork originalNetwork) {
- VirtualNetwork virtualnetwork;
- apiConnector = Activator.apiConnector;
- if (deltaNetwork == null || originalNetwork == null) {
- LOGGER.error("Neutron Networks can't be null..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- if (("").equals(deltaNetwork.getNetworkName())) {
- LOGGER.error("Neutron Networks name to be update can't be empty..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- try {
- virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, originalNetwork.getNetworkUUID());
- } catch (IOException e) {
- LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- if (virtualnetwork == null) {
- LOGGER.error("No network exists for the specified UUID...");
- return HttpURLConnection.HTTP_FORBIDDEN;
- } else {
- try {
- return updateNetwork(originalNetwork.getNetworkUUID(),deltaNetwork);
- } catch (IOException ie) {
- LOGGER.error("IOException: " + ie);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } catch (Exception e) {
- LOGGER.error("Exception: " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
- }
-
- /**
- * Invoked to update the network
- *
- * @param delta_network
- * An instance of Network.
- * @param virtualNetwork
- * An instance of new virtualNetwork object.
- *
- * @return A HTTP status code to the creation request.
- */
- private int updateNetwork(String networkUUID, NeutronNetwork deltaNetwork) throws IOException {
- VirtualNetwork originalNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
- VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
-
- String networkName = deltaNetwork.getNetworkName();
- if (deltaNetwork.getShared() != null) {
- virtualNetwork.setIsShared(deltaNetwork.getShared());
- }
- if (deltaNetwork.getRouterExternal() != null) {
- virtualNetwork.setRouterExternal(deltaNetwork.getRouterExternal());
- }
- virtualNetwork.setName(networkName);
- virtualNetwork.setDisplayName(networkName);
- boolean networkUpdate;
- try {
- networkUpdate = apiConnector.update(virtualNetwork);
- if (!networkUpdate) {
- LOGGER.warn("Network Updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- } catch (IOException e) {
- LOGGER.warn("Network Updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("Network having UUID : " + virtualNetwork.getUuid() + " has been sucessfully updated...");
- if (deltaNetwork.getRouterExternal() != null) {
- if (!(originalNetwork.getRouterExternal()) && deltaNetwork.getRouterExternal()) {
- VirtualNetwork updatedVirtualnetwork;
- try {
- updatedVirtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, originalNetwork.getUuid());
- FloatingIpPool floatingIpPool = null;
- String fipId = UUID.randomUUID().toString();
- floatingIpPool = new FloatingIpPool();
- floatingIpPool.setName(fipId);
- floatingIpPool.setDisplayName(fipId);
- floatingIpPool.setUuid(fipId);
- floatingIpPool.setParent(updatedVirtualnetwork);
- boolean createFloatingIpPool = apiConnector.create(floatingIpPool);
- if (!createFloatingIpPool) {
- LOGGER.info("Floating Ip pool creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } else {
- LOGGER.info("Floating Ip pool created with UUID : " + floatingIpPool.getUuid());
- }
- } catch (IOException e) {
- LOGGER.info("Floating Ip pool creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- } else if (originalNetwork.getRouterExternal() && !(deltaNetwork.getRouterExternal())) {
- String floatingPoolId = virtualNetwork.getFloatingIpPools().get(0).getUuid();
- FloatingIpPool floatingIpPool;
- try {
- floatingIpPool = (FloatingIpPool) apiConnector.findById(FloatingIpPool.class, floatingPoolId);
- if (floatingIpPool != null) {
- apiConnector.delete(floatingIpPool);
- }
- floatingIpPool = (FloatingIpPool) apiConnector.findById(FloatingIpPool.class, floatingPoolId);
- if (floatingIpPool == null) {
- LOGGER.info("Floating Ip pool removed after update network..");
- } else {
- LOGGER.info("Floating Ip pool removal failed after update network..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- } catch (IOException e) {
- LOGGER.info("Floating Ip pool is failed to removed after update network..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
- }
- return HttpURLConnection.HTTP_OK;
-}
-
-
- /**
- * Invoked to take action after a network has been updated.
- *
- * @param network
- * An instance of modified Neutron Network object.
- */
- @Override
- public void neutronNetworkUpdated(NeutronNetwork network) {
- try {
- VirtualNetwork virtualnetwork = new VirtualNetwork();
- virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, network.getNetworkUUID());
- if (network.getNetworkName().equalsIgnoreCase(virtualnetwork.getDisplayName()) && network.getRouterExternal().equals(virtualnetwork.getRouterExternal())) {
- LOGGER.info("Network updatation verified....");
- } else {
- LOGGER.info("Network updatation failed....");
- }
- } catch (Exception e) {
- LOGGER.error("Exception :" + e);
- }
- }
-
-
- /**
- * Invoked when a network deletion is requested to indicate if the specified
- * network can be deleted.
- *
- * @param network
- * An instance of the Neutron Network object to be deleted.
- * @return A HTTP status code to the deletion request.
- */
- @Override
- public int canDeleteNetwork(NeutronNetwork network) {
- apiConnector = Activator.apiConnector;
- VirtualNetwork virtualNetwork = null;
- try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, network.getNetworkUUID());
- if (virtualNetwork != null) {
- if (virtualNetwork.getVirtualMachineInterfaceBackRefs() != null) {
- LOGGER.info("Network with UUID : " + network.getNetworkUUID() + " cannot be deleted as it has port(s) associated with it....");
- return HttpURLConnection.HTTP_FORBIDDEN;
- } else {
- apiConnector.delete(virtualNetwork);
- LOGGER.info("Network with UUID : " + network.getNetworkUUID() + " has been deleted successfully....");
- return HttpURLConnection.HTTP_OK;
- }
- } else {
- LOGGER.info("No Network exists with UUID : " + network.getNetworkUUID());
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
-
- /**
- * Invoked to take action after a network has been deleted.
- *
- * @param network
- * An instance of deleted Neutron Network object.
- */
- @Override
- public void neutronNetworkDeleted(NeutronNetwork network) {
- VirtualNetwork virtualNetwork = null;
- try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, network.getNetworkUUID());
- if (virtualNetwork == null) {
- LOGGER.info("Network deletion verified....");
- }
- else {
- LOGGER.info("Network deletion failed....");
- }
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- }
- }
-
- /**
- * Invoked to format the UUID if UUID is not in correct format.
- *
- * @param String
- * An instance of UUID string.
- *
- * @return Correctly formated UUID string.
- */
- private String uuidFormater(String uuid) {
- String uuidPattern = null;
- String id1 = uuid.substring(0, 8);
- String id2 = uuid.substring(8, 12);
- String id3 = uuid.substring(12, 16);
- String id4 = uuid.substring(16, 20);
- String id5 = uuid.substring(20, 32);
- uuidPattern = (id1 + "-" + id2 + "-" + id3 + "-" + id4 + "-" + id5);
- return uuidPattern;
- }
-
+/*\r
+ * Copyright (C) 2014 Juniper Networks, Inc.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ */\r
+package org.opendaylight.plugin2oc.neutron;\r
+\r
+import java.io.IOException;\r
+import java.net.HttpURLConnection;\r
+import java.util.UUID;\r
+\r
+import net.juniper.contrail.api.ApiConnector;\r
+import net.juniper.contrail.api.types.FloatingIpPool;\r
+import net.juniper.contrail.api.types.Project;\r
+import net.juniper.contrail.api.types.VirtualNetwork;\r
+\r
+import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;\r
+import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+/**\r
+ * Handle requests for Neutron Network.\r
+ */\r
+public class NetworkHandler implements INeutronNetworkAware {\r
+ /**\r
+ * Logger instance.\r
+ */\r
+ static final Logger LOGGER = LoggerFactory.getLogger(NetworkHandler.class);\r
+ static ApiConnector apiConnector;\r
+\r
+ /**\r
+ * Invoked when a network creation is requested to check if the specified\r
+ * network can be created and then creates the network\r
+ *\r
+ * @param network\r
+ * An instance of proposed new Neutron Network object.\r
+ *\r
+ * @return A HTTP status code to the creation request.\r
+ */\r
+ @Override\r
+ public int canCreateNetwork(NeutronNetwork network) {\r
+ if (network == null) {\r
+ LOGGER.error("Network object can't be null..");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ LOGGER.debug("Network object " + network);\r
+ apiConnector = Activator.apiConnector;\r
+ if (network.getNetworkUUID() == null || network.getNetworkName() == null || network.getNetworkUUID().equals("")\r
+ || network.getNetworkName().equals("")) {\r
+ LOGGER.error("Network UUID and Network Name can't be null/empty...");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ if (network.getTenantID() == null) {\r
+ LOGGER.error("Network tenant Id can not be null");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ try {\r
+ String networkUUID = network.getNetworkUUID();\r
+ String projectUUID = network.getTenantID();\r
+ try {\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ if (!(projectUUID.contains("-"))) {\r
+ projectUUID = Utils.uuidFormater(projectUUID);\r
+ }\r
+ boolean isValidNetworkUUID = Utils.isValidHexNumber(networkUUID);\r
+ boolean isValidprojectUUID = Utils.isValidHexNumber(projectUUID);\r
+ if (!isValidNetworkUUID || !isValidprojectUUID) {\r
+ LOGGER.info("Badly formed Hexadecimal UUID...");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ projectUUID = UUID.fromString(projectUUID).toString();\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ if (project == null) {\r
+ try {\r
+ Thread.currentThread();\r
+ Thread.sleep(3000);\r
+ } catch (InterruptedException e) {\r
+ LOGGER.error("InterruptedException : ", e);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ if (project == null) {\r
+ LOGGER.error("Could not find projectUUID...");\r
+ return HttpURLConnection.HTTP_NOT_FOUND;\r
+ }\r
+ }\r
+ VirtualNetwork virtualNetworkById = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ if (virtualNetworkById != null) {\r
+ LOGGER.warn("Network already exists with UUID" + networkUUID);\r
+ return HttpURLConnection.HTTP_FORBIDDEN;\r
+ }\r
+ String virtualNetworkByName = apiConnector.findByName(VirtualNetwork.class, project, network.getNetworkName());\r
+ if (virtualNetworkByName != null) {\r
+ LOGGER.warn("Network already exists with name : " + virtualNetworkByName);\r
+ return HttpURLConnection.HTTP_FORBIDDEN;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ } catch (IOException ie) {\r
+ LOGGER.error("IOException : " + ie);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a network has been created.\r
+ *\r
+ * @param network\r
+ * An instance of new Neutron Network object.\r
+ */\r
+ @Override\r
+ public void neutronNetworkCreated(NeutronNetwork network) {\r
+ try {\r
+ createNetwork(network);\r
+ } catch (IOException ex) {\r
+ LOGGER.warn("Exception : " + ex);\r
+ }\r
+ VirtualNetwork virtualNetwork = null;\r
+ try {\r
+ String networkUUID = network.getNetworkUUID();\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ if (virtualNetwork != null) {\r
+ LOGGER.info("Network creation verified....");\r
+ }\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to create the specified Neutron Network.\r
+ *\r
+ * @param network\r
+ * An instance of new Neutron Network object.\r
+ */\r
+ private void createNetwork(NeutronNetwork network) throws IOException {\r
+ VirtualNetwork virtualNetwork = new VirtualNetwork();\r
+ // map neutronNetwork to virtualNetwork\r
+ virtualNetwork = mapNetworkProperties(network, virtualNetwork);\r
+ boolean networkCreated;\r
+ try {\r
+ networkCreated = apiConnector.create(virtualNetwork);\r
+ LOGGER.debug("networkCreated: " + networkCreated);\r
+ if (!networkCreated) {\r
+ LOGGER.warn("Network creation failed..");\r
+ }\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("Exception : " + ioEx);\r
+ }\r
+ LOGGER.info("Network : " + virtualNetwork.getName() + " having UUID : " + virtualNetwork.getUuid() + " sucessfully created...");\r
+ if (virtualNetwork.getRouterExternal()) {\r
+ FloatingIpPool floatingIpPool = null;\r
+ String fipId = UUID.randomUUID().toString();\r
+ floatingIpPool = new FloatingIpPool();\r
+ floatingIpPool.setName(fipId);\r
+ floatingIpPool.setDisplayName(fipId);\r
+ floatingIpPool.setUuid(fipId);\r
+ floatingIpPool.setParent(virtualNetwork);\r
+ boolean createFloatingIpPool;\r
+ try {\r
+ createFloatingIpPool = apiConnector.create(floatingIpPool);\r
+ if (!createFloatingIpPool) {\r
+ LOGGER.info("Floating Ip pool creation failed..");\r
+ } else {\r
+ LOGGER.info("Floating Ip pool created with UUID : " + floatingIpPool.getUuid());\r
+ }\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("IOException : " + ioEx);\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to map the NeutronNetwork object properties to the virtualNetwork\r
+ * object.\r
+ *\r
+ * @param neutronNetwork\r
+ * An instance of new Neutron Network object.\r
+ * @param virtualNetwork\r
+ * An instance of new virtualNetwork object.\r
+ * @return {@link VirtualNetwork}\r
+ */\r
+ private VirtualNetwork mapNetworkProperties(NeutronNetwork neutronNetwork, VirtualNetwork virtualNetwork) {\r
+ boolean routerExternal = false;\r
+ boolean ishared = false;\r
+ String networkUUID = neutronNetwork.getNetworkUUID();\r
+ String projectUUID = neutronNetwork.getTenantID();\r
+ String networkName = neutronNetwork.getNetworkName();\r
+ try {\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ if (!(projectUUID.contains("-"))) {\r
+ projectUUID = Utils.uuidFormater(projectUUID);\r
+ }\r
+ projectUUID = UUID.fromString(projectUUID).toString();\r
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ virtualNetwork.setParent(project);\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ }\r
+ if (neutronNetwork.getRouterExternal() != null) {\r
+ routerExternal = neutronNetwork.getRouterExternal();\r
+ }\r
+ if (neutronNetwork.getShared() != null) {\r
+ ishared = neutronNetwork.getShared();\r
+ }\r
+ virtualNetwork.setName(networkName);\r
+ virtualNetwork.setUuid(networkUUID);\r
+ virtualNetwork.setDisplayName(networkName);\r
+ virtualNetwork.setRouterExternal(routerExternal);\r
+ virtualNetwork.setIsShared(ishared);\r
+ return virtualNetwork;\r
+ }\r
+\r
+ /**\r
+ * Invoked when a network update is requested to indicate if the specified\r
+ * network can be changed using the specified delta.\r
+ *\r
+ * @param delta\r
+ * Updates to the network object using patch semantics.\r
+ * @param original\r
+ * An instance of the Neutron Network object to be updated.\r
+ * @return A HTTP status code to the update request.\r
+ */\r
+ @Override\r
+ public int canUpdateNetwork(NeutronNetwork deltaNetwork, NeutronNetwork originalNetwork) {\r
+ VirtualNetwork virtualnetwork;\r
+ apiConnector = Activator.apiConnector;\r
+ if (deltaNetwork == null || originalNetwork == null) {\r
+ LOGGER.error("Neutron Networks can't be null..");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ String networkUUID = originalNetwork.getNetworkUUID();\r
+ String projectUUID = originalNetwork.getTenantID();\r
+ try {\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ }\r
+ if (!(projectUUID.contains("-"))) {\r
+ projectUUID = Utils.uuidFormater(projectUUID);\r
+ projectUUID = UUID.fromString(projectUUID).toString();\r
+ }\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ }\r
+ if (("").equals(deltaNetwork.getNetworkName())) {\r
+ LOGGER.error("Neutron Networks name to be update can't be empty..");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ try {\r
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ String virtualNetworkByName = apiConnector.findByName(VirtualNetwork.class, project, deltaNetwork.getNetworkName());\r
+ if (virtualNetworkByName != null) {\r
+ LOGGER.warn("Network with name " + deltaNetwork.getNetworkName() + " already exists with UUID : " + virtualNetworkByName);\r
+ return HttpURLConnection.HTTP_FORBIDDEN;\r
+ }\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("IOException : " + ioEx);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ try {\r
+ virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ } catch (IOException ex) {\r
+ LOGGER.error("Exception : " + ex);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ if (virtualnetwork == null) {\r
+ LOGGER.error("No network exists for the specified UUID...");\r
+ return HttpURLConnection.HTTP_FORBIDDEN;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ }\r
+\r
+ /**\r
+ * Invoked to update the network\r
+ *\r
+ * @param delta_network\r
+ * An instance of Network.\r
+ */\r
+ private void updateNetwork(NeutronNetwork updatedNetwork) throws IOException {\r
+ String networkUUID = updatedNetwork.getNetworkUUID();\r
+ try {\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ }\r
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ if (updatedNetwork.getShared() != null) {\r
+ virtualNetwork.setIsShared(updatedNetwork.getShared());\r
+ }\r
+ if (updatedNetwork.getRouterExternal() != null) {\r
+ virtualNetwork.setRouterExternal(updatedNetwork.getRouterExternal());\r
+ }\r
+ virtualNetwork.setDisplayName(updatedNetwork.getNetworkName());\r
+ boolean networkUpdate;\r
+ try {\r
+ networkUpdate = apiConnector.update(virtualNetwork);\r
+ if (!networkUpdate) {\r
+ LOGGER.warn("Network Updation failed..");\r
+ }\r
+ } catch (IOException e) {\r
+ LOGGER.warn("Network Updation failed..");\r
+ }\r
+ LOGGER.info("Network having UUID : " + virtualNetwork.getUuid() + " has been sucessfully updated...");\r
+ if (updatedNetwork.getRouterExternal()) {\r
+ if (virtualNetwork.getFloatingIpPools() == null) {\r
+ try {\r
+ FloatingIpPool floatingIpPool = null;\r
+ String fipId = UUID.randomUUID().toString();\r
+ floatingIpPool = new FloatingIpPool();\r
+ floatingIpPool.setName(fipId);\r
+ floatingIpPool.setDisplayName(fipId);\r
+ floatingIpPool.setUuid(fipId);\r
+ floatingIpPool.setParent(virtualNetwork);\r
+ boolean createFloatingIpPool = apiConnector.create(floatingIpPool);\r
+ if (!createFloatingIpPool) {\r
+ LOGGER.info("Floating Ip pool creation failed..");\r
+ } else {\r
+ LOGGER.info("Floating Ip pool created with UUID : " + floatingIpPool.getUuid());\r
+ }\r
+ } catch (IOException e) {\r
+ LOGGER.info("Floating Ip pool creation failed..");\r
+ }\r
+ }\r
+ } else {\r
+ if (virtualNetwork.getFloatingIpPools() != null) {\r
+ String floatingPoolId = virtualNetwork.getFloatingIpPools().get(0).getUuid();\r
+ FloatingIpPool floatingIpPool;\r
+ try {\r
+ floatingIpPool = (FloatingIpPool) apiConnector.findById(FloatingIpPool.class, floatingPoolId);\r
+ if (floatingIpPool != null) {\r
+ apiConnector.delete(floatingIpPool);\r
+ }\r
+ floatingIpPool = (FloatingIpPool) apiConnector.findById(FloatingIpPool.class, floatingPoolId);\r
+ if (floatingIpPool == null) {\r
+ LOGGER.info("Floating Ip pool removed after update network..");\r
+ } else {\r
+ LOGGER.info("Floating Ip pool removal failed after update network..");\r
+ }\r
+ } catch (IOException e) {\r
+ LOGGER.info("Floating Ip pool is failed to removed after update network..");\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a network has been updated.\r
+ *\r
+ * @param network\r
+ * An instance of modified Neutron Network object.\r
+ */\r
+ @Override\r
+ public void neutronNetworkUpdated(NeutronNetwork network) {\r
+ try {\r
+ String networkUUID = network.getNetworkUUID();\r
+ try {\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ }\r
+ updateNetwork(network);\r
+ VirtualNetwork virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ if (network.getNetworkName().equalsIgnoreCase(virtualnetwork.getDisplayName())\r
+ && network.getRouterExternal().equals(virtualnetwork.getRouterExternal())) {\r
+ LOGGER.info("Network updatation verified....");\r
+ } else {\r
+ LOGGER.info("Network updatation failed....");\r
+ }\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception :" + e);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked when a network deletion is requested to indicate if the specified\r
+ * network can be deleted.\r
+ *\r
+ * @param network\r
+ * An instance of the Neutron Network object to be deleted.\r
+ * @return A HTTP status code to the deletion request.\r
+ */\r
+ @Override\r
+ public int canDeleteNetwork(NeutronNetwork network) {\r
+ apiConnector = Activator.apiConnector;\r
+ VirtualNetwork virtualNetwork = null;\r
+ String networkUUID = network.getNetworkUUID();\r
+ try {\r
+ try {\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ if (virtualNetwork != null) {\r
+ if (virtualNetwork.getVirtualMachineInterfaceBackRefs() != null || virtualNetwork.getFloatingIpPools() != null\r
+ || virtualNetwork.getNetworkIpam() != null) {\r
+ LOGGER.info("Network with UUID : " + networkUUID\r
+ + " cannot be deleted as it has subnet(s)/port(s)/FloatingIp Pool(s) associated with it....");\r
+ return HttpURLConnection.HTTP_FORBIDDEN;\r
+ } else {\r
+ return HttpURLConnection.HTTP_OK;\r
+ }\r
+ } else {\r
+ LOGGER.info("No Network exists with UUID : " + networkUUID);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a network has been deleted.\r
+ *\r
+ * @param network\r
+ * An instance of deleted Neutron Network object.\r
+ */\r
+ @Override\r
+ public void neutronNetworkDeleted(NeutronNetwork network) {\r
+ VirtualNetwork virtualNetwork = null;\r
+ try {\r
+ String networkUUID = network.getNetworkUUID();\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ apiConnector.delete(virtualNetwork);\r
+ LOGGER.info("Network with UUID : " + network.getNetworkUUID() + " has been deleted successfully....");\r
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ if (virtualNetwork == null) {\r
+ LOGGER.info("Network deletion verified....");\r
+ } else {\r
+ LOGGER.info("Network deletion failed....");\r
+ }\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ }\r
+ }\r
+\r
}
\ No newline at end of file
import java.io.IOException;
import java.net.HttpURLConnection;
+import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
LOGGER.error("NeutronPort object can't be null..");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
- if (neutronPort.getID().equals("")) {
- LOGGER.error("Port Device Id or Port Uuid can't be empty/null...");
+ if (neutronPort.getPortUUID() == null || neutronPort.getPortUUID().equals("")) {
+ LOGGER.error("Port Uuid can't be empty/null...");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
if (neutronPort.getTenantID() == null) {
LOGGER.error("Tenant ID can't be null...");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
-
- List<Neutron_IPs> ips = neutronPort.getFixedIPs();
- if (ips == null) {
- LOGGER.warn("Neutron Fixed Ips can't be null..");
- return HttpURLConnection.HTTP_FORBIDDEN;
+ if (neutronPort.getName() == null || neutronPort.getName().equals("")) {
+ LOGGER.error("Port Name can't be empty/null...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
try {
- return createPort(neutronPort);
+ String portUUID = neutronPort.getPortUUID();
+ String projectUUID = neutronPort.getTenantID();
+ String deviceUUID = neutronPort.getDeviceID();
+ String networkUUID = neutronPort.getNetworkUUID();
+ try {
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
+ }
+ if (!(projectUUID.contains("-"))) {
+ projectUUID = Utils.uuidFormater(projectUUID);
+ }
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ if (deviceUUID != null && !(("").equals(deviceUUID))) {
+ if (!(deviceUUID.contains("-"))) {
+ deviceUUID = Utils.uuidFormater(deviceUUID);
+ }
+ boolean isValidDeviceUUID = Utils.isValidHexNumber(deviceUUID);
+ if (!isValidDeviceUUID) {
+ LOGGER.info("Badly formed Hexadecimal UUID...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ deviceUUID = UUID.fromString(deviceUUID).toString();
+ }
+ boolean isValidNetworkUUID = Utils.isValidHexNumber(networkUUID);
+ boolean isValidProjectUUID = Utils.isValidHexNumber(projectUUID);
+ boolean isValidPortUUID = Utils.isValidHexNumber(portUUID);
+ if (!isValidPortUUID || !isValidProjectUUID || !isValidNetworkUUID) {
+ LOGGER.info("Badly formed Hexadecimal UUID...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ portUUID = UUID.fromString(portUUID).toString();
+ projectUUID = UUID.fromString(projectUUID).toString();
+ networkUUID = UUID.fromString(networkUUID).toString();
+
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);
+ if (project == null) {
+ try {
+ Thread.currentThread();
+ Thread.sleep(3000);
+ } catch (InterruptedException e) {
+ LOGGER.error("InterruptedException : ", e);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ project = (Project) apiConnector.findById(Project.class, projectUUID);
+ if (project == null) {
+ LOGGER.error("Could not find projectUUID...");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
+ }
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ if (!virtualNetwork.getParentUuid().matches(projectUUID)) {
+ LOGGER.info("Port and Network should belong to same tenant...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ VirtualMachineInterface virtualMAchineInterfaceByID = (VirtualMachineInterface)apiConnector.findById(VirtualMachineInterface.class, portUUID);
+ if (virtualMAchineInterfaceByID != null) {
+ LOGGER.warn("Port already exists with UUID : " + virtualMAchineInterfaceByID);
+ return HttpURLConnection.HTTP_FORBIDDEN;
+ }
+ String virtualMAchineInterfaceByName = apiConnector.findByName(VirtualMachineInterface.class, project, neutronPort.getName());
+ if (virtualMAchineInterfaceByName != null) {
+ LOGGER.warn("Port already exists with Name : " + virtualMAchineInterfaceByName);
+ return HttpURLConnection.HTTP_FORBIDDEN;
+ }
+ } catch (IOException ie) {
+ LOGGER.error("IOException : " + ie);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
} catch (Exception e) {
- LOGGER.error("exception : ", e);
+ LOGGER.error("Exception : " + e);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
+ return HttpURLConnection.HTTP_OK;
}
/**
* Invoked to create the specified Neutron port.
*
- * @param network
+ * @param neutronPort
* An instance of new Neutron Port object.
- *
- * @return A HTTP status code to the creation request.
*/
- private int createPort(NeutronPort neutronPort) {
- String networkID = neutronPort.getNetworkUUID();
- String portID = neutronPort.getID();
-// String portDesc = neutronPort.getID();
- String deviceID = neutronPort.getDeviceID();
- String projectID = neutronPort.getTenantID();
+ private void createPort(NeutronPort neutronPort) {
+ String networkUUID = neutronPort.getNetworkUUID();
+ String portUUID = neutronPort.getPortUUID();
+ String deviceUUID = neutronPort.getDeviceID();
+ String projectUUID = neutronPort.getTenantID();
String portMACAddress = neutronPort.getMacAddress();
String portName = neutronPort.getName();
VirtualMachineInterface virtualMachineInterface = null;
Project project = null;
MacAddressesType macAddressesType = new MacAddressesType();
try {
- networkID = UUID.fromString(neutronPort.getNetworkUUID()).toString();
- portID = UUID.fromString(neutronPort.getID()).toString();
- if (neutronPort.getDeviceID() != null && !(("").equals(neutronPort.getDeviceID()))) {
- if (!(deviceID.contains("-"))) {
- deviceID = uuidFormater(deviceID);
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (deviceUUID != null && !(("").equals(deviceUUID))) {
+ if (!(deviceUUID.contains("-"))) {
+ deviceUUID = Utils.uuidFormater(deviceUUID);
}
- deviceID = UUID.fromString(deviceID).toString();
+ deviceUUID = UUID.fromString(deviceUUID).toString();
+ }
+ if (!(projectUUID.contains("-"))) {
+ projectUUID = Utils.uuidFormater(projectUUID);
}
- if (!(projectID.contains("-"))) {
- projectID = uuidFormater(projectID);
+ projectUUID = UUID.fromString(projectUUID).toString();
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
}
- projectID = UUID.fromString(projectID).toString();
+ portUUID = UUID.fromString(portUUID).toString();
} catch (Exception ex) {
- LOGGER.error("exception : ", ex);
- return HttpURLConnection.HTTP_BAD_REQUEST;
+ LOGGER.error("UUID input incorrect", ex);
}
try {
- LOGGER.debug("portId: " + portID);
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portID);
- if (virtualMachineInterface != null) {
- LOGGER.warn("Port already exist.");
- return HttpURLConnection.HTTP_FORBIDDEN;
- } else {
- if (deviceID != null && !(("").equals(deviceID))) {
- virtualMachine = (VirtualMachine) apiConnector.findById(VirtualMachine.class, deviceID);
- LOGGER.debug("virtualMachine: " + virtualMachine);
- if (virtualMachine == null) {
- virtualMachine = new VirtualMachine();
- virtualMachine.setName(deviceID+"--"+portName);
- virtualMachine.setUuid(deviceID);
- boolean virtualMachineCreated = apiConnector.create(virtualMachine);
- LOGGER.debug("virtualMachineCreated: " + virtualMachineCreated);
- if (!virtualMachineCreated) {
- LOGGER.warn("virtualMachine creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("virtualMachine : " + virtualMachine.getName() + " having UUID : " + virtualMachine.getUuid()
- + " sucessfully created...");
- }
- }
- project = (Project) apiConnector.findById(Project.class, projectID);
- if (project == null) {
- try {
- Thread.currentThread();
- Thread.sleep(3000);
- } catch (InterruptedException e) {
- LOGGER.error("InterruptedException : ", e);
- }
- project = (Project) apiConnector.findById(Project.class, projectID);
- if (project == null) {
- LOGGER.error("Could not find projectUUID...");
- return HttpURLConnection.HTTP_NOT_FOUND;
- }
- }
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkID);
- LOGGER.info("virtualNetwork: " + virtualNetwork);
- if (virtualNetwork == null) {
- LOGGER.warn("virtualNetwork does not exist..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- } else {
- virtualMachineInterface = new VirtualMachineInterface();
- virtualMachineInterface.setUuid(portID);
- virtualMachineInterface.setName(portName);
- virtualMachineInterface.setParent(project);
- virtualMachineInterface.setVirtualNetwork(virtualNetwork);
- macAddressesType.addMacAddress(portMACAddress);
- virtualMachineInterface.setMacAddresses(macAddressesType);
- if (deviceID != null && !(("").equals(deviceID))) {
- virtualMachineInterface.setVirtualMachine(virtualMachine);
- }
- boolean virtualMachineInterfaceCreated = apiConnector.create(virtualMachineInterface);
- if (!virtualMachineInterfaceCreated) {
- LOGGER.warn("actual virtualMachineInterface creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ LOGGER.info("portId: " + portUUID);
+ if (deviceUUID != null && !(("").equals(deviceUUID))) {
+ virtualMachine = (VirtualMachine) apiConnector.findById(VirtualMachine.class, deviceUUID);
+ LOGGER.debug("virtualMachine: " + virtualMachine);
+ if (virtualMachine == null) {
+ virtualMachine = new VirtualMachine();
+ virtualMachine.setName(deviceUUID);
+ virtualMachine.setUuid(deviceUUID);
+ boolean virtualMachineCreated = apiConnector.create(virtualMachine);
+ LOGGER.debug("virtualMachineCreated: " + virtualMachineCreated);
+ if (!virtualMachineCreated) {
+ LOGGER.warn("virtualMachine creation failed..");
}
- LOGGER.info("virtualMachineInterface : " + virtualMachineInterface.getName() + " having UUID : "
- + virtualMachineInterface.getUuid() + " sucessfully created...");
+ LOGGER.info("virtualMachine : " + virtualMachine.getName() + " having UUID : " + virtualMachine.getUuid()
+ + " sucessfully created...");
}
-
}
- INeutronSubnetCRUD systemCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this);
- NeutronSubnet subnet = null;
- List<Neutron_IPs> ips = neutronPort.getFixedIPs();
- InstanceIp instanceIp = new InstanceIp();
- String instaneIpUuid = UUID.randomUUID().toString();
- for (Neutron_IPs ipValues : ips) {
- if (ipValues.getIpAddress() == null) {
- subnet = systemCRUD.getSubnet(ipValues.getSubnetUUID());
- instanceIp.setAddress(subnet.getLowAddr());
- } else {
- instanceIp.setAddress(ipValues.getIpAddress());
- }
+ project = (Project) apiConnector.findById(Project.class, projectUUID);
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ LOGGER.debug("virtualNetwork: " + virtualNetwork);
+ virtualMachineInterface = new VirtualMachineInterface();
+ virtualMachineInterface.setUuid(portUUID);
+ virtualMachineInterface.setName(portName);
+ virtualMachineInterface.setDisplayName(portName);
+ virtualMachineInterface.setParent(project);
+ virtualMachineInterface.setVirtualNetwork(virtualNetwork);
+ macAddressesType.addMacAddress(portMACAddress);
+ virtualMachineInterface.setMacAddresses(macAddressesType);
+ if (deviceUUID != null && !(("").equals(deviceUUID))) {
+ virtualMachineInterface.setVirtualMachine(virtualMachine);
}
+ boolean virtualMachineInterfaceCreated = apiConnector.create(virtualMachineInterface);
+ if (!virtualMachineInterfaceCreated) {
+ LOGGER.warn("actual virtualMachineInterface creation failed..");
+ }
+ LOGGER.info("virtualMachineInterface : " + virtualMachineInterface.getName() + " having UUID : " + virtualMachineInterface.getUuid()
+ + " sucessfully created...");
+ List<Neutron_IPs> ips = neutronPort.getFixedIPs();
+ if (ips != null) {
+ for (Neutron_IPs ipValues : ips) {
+ INeutronSubnetCRUD systemCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this);
+ NeutronSubnet subnet = null;
+ InstanceIp instanceIp = new InstanceIp();
+ String instaneIpUuid = UUID.randomUUID().toString();
+ if (ipValues.getIpAddress() == null) {
+ subnet = systemCRUD.getSubnet(ipValues.getSubnetUUID());
+ instanceIp.setAddress(subnet.getLowAddr());
+ } else {
+ instanceIp.setAddress(ipValues.getIpAddress());
+ }
+ instanceIp.setName(instaneIpUuid);
+ instanceIp.setUuid(instaneIpUuid);
+ instanceIp.setParent(virtualMachineInterface);
+ instanceIp.setVirtualMachineInterface(virtualMachineInterface);
+ instanceIp.setVirtualNetwork(virtualNetwork);
- instanceIp.setName(instaneIpUuid);
- instanceIp.setUuid(instaneIpUuid);
- instanceIp.setParent(virtualMachineInterface);
- instanceIp.setVirtualMachineInterface(virtualMachineInterface);
- instanceIp.setVirtualNetwork(virtualNetwork);
-
- boolean instanceIpCreated = apiConnector.create(instanceIp);
- if (!instanceIpCreated) {
- LOGGER.warn("instanceIp addition failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ boolean instanceIpCreated = apiConnector.create(instanceIp);
+ if (!instanceIpCreated) {
+ LOGGER.warn("instanceIp addition failed..");
+ }
+ LOGGER.info("Instance IP " + instanceIp.getAddress() + " added sucessfully...");
+ }
}
- LOGGER.info("Instance IP added sucessfully...");
- return HttpURLConnection.HTTP_OK;
} catch (IOException ie) {
LOGGER.error("IOException : ", ie);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
}
/**
- * Invoked to take action after a port has been created.
+ * Invoked to create a port and take action after the port has been created.
*
* @param network
* An instance of new Neutron port object.
*/
@Override
public void neutronPortCreated(NeutronPort neutronPort) {
- VirtualMachineInterface virtualMachineInterface = null;
try {
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID());
+ createPort(neutronPort);
+ String portUUID = neutronPort.getPortUUID();
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
+ }
+ portUUID = UUID.fromString(portUUID).toString();
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector
+ .findById(VirtualMachineInterface.class, portUUID);
if (virtualMachineInterface != null) {
LOGGER.info("Port creation verified....");
}
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
+ } catch (Exception ex) {
+ LOGGER.error("Exception : " + ex);
}
}
/**
* Invoked when a port deletion is requested to check if the specified Port
- * can be deleted and then delete the port
+ * can be deleted
*
* @param NeutronPort
* An instance of proposed Neutron Port object.
return HttpURLConnection.HTTP_BAD_REQUEST;
}
apiConnector = Activator.apiConnector;
+ String portUUID = neutronPort.getPortUUID();
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
+ }
+ portUUID = UUID.fromString(portUUID).toString();
try {
- return deletePort(neutronPort);
- } catch (Exception e) {
- LOGGER.error("exception : ", e);
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector
+ .findById(VirtualMachineInterface.class, portUUID);
+
+ if (virtualMachineInterface == null) {
+ LOGGER.error("No port exists for specified UUID...");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ } else {
+ List<ObjectReference<ApiPropertyBase>> vmi = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ vmi = virtualMachineInterface.getFloatingIpBackRefs();
+ if (vmi != null) {
+ LOGGER.info("Port has floating Ip associated with it...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ return HttpURLConnection.HTTP_OK;
+ }
+ } catch (Exception ioEx) {
+ LOGGER.error("IOException : ", ioEx);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
}
/**
* Invoked to delete the specified Neutron port.
*
- * @param network
+ * @param neutronPort
* An instance of new Neutron Port object.
- *
- * @return A HTTP status code to the deletion request.
*/
- private int deletePort(NeutronPort neutronPort) {
- String portID = neutronPort.getID();
- String deviceID = neutronPort.getDeviceID();
+ private void deletePort(NeutronPort neutronPort) {
+ String portUUID = neutronPort.getPortUUID();
+ String deviceUUID = neutronPort.getDeviceID();
VirtualMachineInterface virtualMachineInterface = null;
VirtualMachine virtualMachine = null;
InstanceIp instanceIP = null;
List<ObjectReference<ApiPropertyBase>> virtualMachineInterfaceBackRefs = null;
try {
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portID);
- if (virtualMachineInterface == null) {
- LOGGER.info("Specified port does not exist...");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- } else {
- List<ObjectReference<ApiPropertyBase>> instanceIPs = virtualMachineInterface.getInstanceIpBackRefs();
- if (instanceIPs != null) {
- for (ObjectReference<ApiPropertyBase> ref : instanceIPs) {
- String instanceIPUUID = ref.getUuid();
- if (instanceIPUUID != null) {
- instanceIP = (InstanceIp) apiConnector.findById(InstanceIp.class, instanceIPUUID);
- apiConnector.delete(instanceIP);
- }
+ try {
+ if (deviceUUID != null && !(("").equals(deviceUUID))) {
+ if (!(deviceUUID.contains("-"))) {
+ deviceUUID = Utils.uuidFormater(deviceUUID);
}
+ deviceUUID = UUID.fromString(deviceUUID).toString();
+ }
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
}
- apiConnector.delete(virtualMachineInterface);
- virtualMachine = (VirtualMachine) apiConnector.findById(VirtualMachine.class, deviceID);
- if (virtualMachine != null) {
- virtualMachineInterfaceBackRefs = virtualMachine.getVirtualMachineInterfaceBackRefs();
- if (virtualMachineInterfaceBackRefs == null) {
- apiConnector.delete(virtualMachine);
+ portUUID = UUID.fromString(portUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ }
+ virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portUUID);
+ List<ObjectReference<ApiPropertyBase>> instanceIPs = virtualMachineInterface.getInstanceIpBackRefs();
+ if (instanceIPs != null) {
+ for (ObjectReference<ApiPropertyBase> ref : instanceIPs) {
+ String instanceIPUUID = ref.getUuid();
+ if (instanceIPUUID != null) {
+ instanceIP = (InstanceIp) apiConnector.findById(InstanceIp.class, instanceIPUUID);
+ apiConnector.delete(instanceIP);
}
}
- LOGGER.info("Specified port deleted sucessfully...");
- return HttpURLConnection.HTTP_OK;
}
+ apiConnector.delete(virtualMachineInterface);
+ virtualMachine = (VirtualMachine) apiConnector.findById(VirtualMachine.class, deviceUUID);
+ if (virtualMachine != null) {
+ virtualMachineInterfaceBackRefs = virtualMachine.getVirtualMachineInterfaceBackRefs();
+ if (virtualMachineInterfaceBackRefs == null) {
+ apiConnector.delete(virtualMachine);
+ }
+ }
+ LOGGER.info("Specified port deleted sucessfully...");
} catch (IOException io) {
LOGGER.error("Exception : " + io);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
} catch (Exception e) {
LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
}
/**
* Invoked to take action after a port has been deleted.
*
- * @param network
+ * @param neutronPort
* An instance of new Neutron port object.
*/
@Override
public void neutronPortDeleted(NeutronPort neutronPort) {
- VirtualMachineInterface virtualMachineInterface = new VirtualMachineInterface();
try {
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID());
+ deletePort(neutronPort);
+ String portUUID = neutronPort.getPortUUID();
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
+ }
+ portUUID = UUID.fromString(portUUID).toString();
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector
+ .findById(VirtualMachineInterface.class, portUUID);
if (virtualMachineInterface == null) {
LOGGER.info("Port deletion verified....");
}
+ } catch (IOException ioEx) {
+ LOGGER.error("Exception : " + ioEx);
} catch (Exception e) {
LOGGER.error("Exception : " + e);
}
/**
* Invoked when a port update is requested to indicate if the specified port
- * can be updated using the specified delta and update the port
+ * can be updated using the specified delta
*
* @param delta
* Updates to the port object using patch semantics.
@Override
public int canUpdatePort(NeutronPort deltaPort, NeutronPort originalPort) {
apiConnector = Activator.apiConnector;
- VirtualMachineInterface virtualMachineInterface = null;
if (deltaPort == null || originalPort == null) {
LOGGER.error("Neutron Port objects can't be null..");
return HttpURLConnection.HTTP_BAD_REQUEST;
return HttpURLConnection.HTTP_BAD_REQUEST;
}
try {
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, originalPort.getPortUUID());
- return updatePort(deltaPort, virtualMachineInterface, originalPort);
+ String portUUID = originalPort.getPortUUID();
+ String networkUUID = deltaPort.getNetworkUUID();
+ String projectUUID = originalPort.getTenantID();
+ List<Neutron_IPs> fixedIPs = deltaPort.getFixedIPs();
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
+ }
+ portUUID = UUID.fromString(portUUID).toString();
+ if (!(projectUUID.contains("-"))) {
+ projectUUID = Utils.uuidFormater(projectUUID);
+ }
+ projectUUID = UUID.fromString(projectUUID).toString();
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector
+ .findById(VirtualMachineInterface.class, portUUID);
+ if (virtualMachineInterface == null) {
+ LOGGER.error("No port exists for specified UUID...");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
+ String virtualMachineInterfaceByName = apiConnector.findByName(VirtualMachineInterface.class, project, deltaPort.getName());
+ if (virtualMachineInterfaceByName != null) {
+ LOGGER.warn("Port already exists with UUID : " + virtualMachineInterfaceByName);
+ return HttpURLConnection.HTTP_FORBIDDEN;
+ }
+ if (networkUUID != null && !(("").equals(networkUUID))) {
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ }
+ VirtualNetwork virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ if (networkUUID != null && fixedIPs == null) {
+ LOGGER.error("Subnet UUID must exist in the network..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ if (fixedIPs != null) {
+ if (virtualnetwork.getNetworkIpam() != null) {
+ for (Neutron_IPs fixedIp : fixedIPs) {
+ for (ObjectReference<VnSubnetsType> ref : virtualnetwork.getNetworkIpam()) {
+ VnSubnetsType vnSubnetsType = ref.getAttr();
+ if (vnSubnetsType != null) {
+ List<VnSubnetsType.IpamSubnetType> subnets = vnSubnetsType.getIpamSubnets();
+ if (subnets != null) {
+ for (VnSubnetsType.IpamSubnetType subnetValue : subnets) {
+ String subnetUUID = fixedIp.getSubnetUUID();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ Boolean doesSubnetExist = subnetValue.getSubnetUuid().matches(subnetUUID);
+ if (!doesSubnetExist) {
+ LOGGER.error("Subnet UUID must exist in the network..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return HttpURLConnection.HTTP_OK;
} catch (IOException ie) {
LOGGER.error("IOException: " + ie);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
/**
* Invoked to update the port
*
- * @param delta_network
+ * @param delta_neutronPort
* An instance of Neutron Port.
- * @param An
- * instance of new {@link VirtualMachineInterface} object.
- *
- * @return A HTTP status code to the updation request.
*/
- private int updatePort(NeutronPort deltaPort, VirtualMachineInterface virtualMachineInterface, NeutronPort originalPort) throws IOException {
- VirtualMachine virtualMachine = null;
- String deviceID = deltaPort.getDeviceID();
- String portName = deltaPort.getName();
- List<Neutron_IPs> fixedIPs = deltaPort.getFixedIPs();
+ private void updatePort(NeutronPort neutronPort) throws IOException {
+ String deviceUUID = neutronPort.getDeviceID();
+ String portName = neutronPort.getName();
+ String portUUID = neutronPort.getPortUUID();
+ String networkUUID = neutronPort.getNetworkUUID();
+ List<Neutron_IPs> fixedIPs = neutronPort.getFixedIPs();
boolean instanceIpUpdate = false;
- String networkUUID = deltaPort.getNetworkUUID();
+ VirtualMachineInterface virtualMachineInterface = null;
+ VirtualMachine virtualMachine = null;
VirtualNetwork virtualnetwork = null;
- if (fixedIPs != null) {
- if (networkUUID == null) {
- for (ObjectReference<ApiPropertyBase> networks : virtualMachineInterface.getVirtualNetwork()) {
- networkUUID = networks.getUuid();
- }
+ try {
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
}
- boolean subnetExist = false;
- virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
- if (virtualnetwork == null) {
- LOGGER.error(" Virtual network does not exist");
- return HttpURLConnection.HTTP_FORBIDDEN;
+ portUUID = UUID.fromString(portUUID).toString();
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
}
- if (virtualnetwork != null && virtualnetwork.getNetworkIpam() != null) {
- for (Neutron_IPs fixedIp : fixedIPs) {
- for (ObjectReference<VnSubnetsType> ref : virtualnetwork.getNetworkIpam()) {
- VnSubnetsType vnSubnetsType = ref.getAttr();
- if (vnSubnetsType != null) {
- List<VnSubnetsType.IpamSubnetType> subnets = vnSubnetsType.getIpamSubnets();
- if (subnets != null) {
- for (VnSubnetsType.IpamSubnetType subnetValue : subnets) {
- Boolean doesSubnetExist = subnetValue.getSubnetUuid().matches(fixedIp.getSubnetUUID());
- if (doesSubnetExist) {
- subnetExist = true;
- for (ObjectReference<ApiPropertyBase> instanceIp : virtualMachineInterface.getInstanceIpBackRefs()) {
- InstanceIp instanceIpLocal = (InstanceIp) apiConnector.findById(InstanceIp.class, instanceIp.getUuid());
- instanceIpLocal.setVirtualNetwork(virtualnetwork);
- INeutronSubnetCRUD systemCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this);
- NeutronSubnet subnet = null;
- for (Neutron_IPs ip : originalPort.getFixedIPs()) {
- subnet = systemCRUD.getSubnet(ip.getSubnetUUID());
- subnet.releaseIP(ip.getIpAddress());
- }
- if (fixedIp.getIpAddress() == null) {
- subnet = systemCRUD.getSubnet(fixedIp.getSubnetUUID());
- instanceIpLocal.setAddress(subnet.getLowAddr());
- } else {
- instanceIpLocal.setAddress(fixedIp.getIpAddress());
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (deviceUUID != null) {
+ if (!(deviceUUID.contains("-"))) {
+ deviceUUID = Utils.uuidFormater(deviceUUID);
+ }
+ deviceUUID = UUID.fromString(deviceUUID).toString();
+ }
+ virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portUUID);
+
+ if (fixedIPs != null) {
+ virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ if (virtualnetwork.getNetworkIpam() != null) {
+ for (Neutron_IPs fixedIp : fixedIPs) {
+ for (ObjectReference<VnSubnetsType> ref : virtualnetwork.getNetworkIpam()) {
+ VnSubnetsType vnSubnetsType = ref.getAttr();
+ if (vnSubnetsType != null) {
+ List<VnSubnetsType.IpamSubnetType> subnets = vnSubnetsType.getIpamSubnets();
+ if (subnets != null) {
+ for (VnSubnetsType.IpamSubnetType subnetValue : subnets) {
+ String subnetUUID = fixedIp.getSubnetUUID();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ Boolean doesSubnetExist = subnetValue.getSubnetUuid().matches(subnetUUID);
+ if (doesSubnetExist) {
+ // subnetExist = true;
+ for (ObjectReference<ApiPropertyBase> instanceIp : virtualMachineInterface.getInstanceIpBackRefs()) {
+ InstanceIp instanceIpLocal = (InstanceIp) apiConnector.findById(InstanceIp.class,
+ instanceIp.getUuid());
+ instanceIpLocal.setVirtualNetwork(virtualnetwork);
+ INeutronSubnetCRUD systemCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this);
+ NeutronSubnet subnet = null;
+ for (Neutron_IPs ip : neutronPort.getFixedIPs()) {
+ subnet = systemCRUD.getSubnet(ip.getSubnetUUID());
+ subnet.releaseIP(ip.getIpAddress());
+ }
+ if (fixedIp.getIpAddress() == null) {
+ subnet = systemCRUD.getSubnet(fixedIp.getSubnetUUID());
+ instanceIpLocal.setAddress(subnet.getLowAddr());
+ } else {
+ instanceIpLocal.setAddress(fixedIp.getIpAddress());
+ }
+ instanceIpUpdate = apiConnector.update(instanceIpLocal);
+ virtualMachineInterface.setVirtualNetwork(virtualnetwork);
}
- instanceIpUpdate = apiConnector.update(instanceIpLocal);
- virtualMachineInterface.setVirtualNetwork(virtualnetwork);
}
}
}
}
}
}
- if (!subnetExist) {
- LOGGER.error("Subnet UUID must exist in the network..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- } else if (networkUUID != null && fixedIPs == null) {
- LOGGER.error("Subnet UUID must exist in the network..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- if (deviceID != null) {
- if (("").equals(deviceID)) {
- virtualMachineInterface.clearVirtualMachine();
- } else {
- deviceID = UUID.fromString(deltaPort.getDeviceID()).toString();
- try {
- virtualMachine = (VirtualMachine) apiConnector.findById(VirtualMachine.class, deviceID);
- } catch (Exception e) {
- LOGGER.error("Exception: " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- if (virtualMachine == null) {
- virtualMachine = new VirtualMachine();
- virtualMachine.setName(deviceID);
- virtualMachine.setUuid(deviceID);
- boolean virtualMachineCreated = apiConnector.create(virtualMachine);
- LOGGER.debug("virtualMachineCreated: " + virtualMachineCreated);
- if (!virtualMachineCreated) {
- LOGGER.warn("virtualMachine creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ if (deviceUUID != null) {
+ if (("").equals(deviceUUID)) {
+ virtualMachineInterface.clearVirtualMachine();
+ } else {
+ try {
+ virtualMachine = (VirtualMachine) apiConnector.findById(VirtualMachine.class, deviceUUID);
+ } catch (IOException ioEx) {
+ LOGGER.error("Exception: " + ioEx);
+ } catch (Exception ex) {
+ LOGGER.error("Exception: " + ex);
}
- LOGGER.info("virtualMachine : " + virtualMachine.getName() + " having UUID : " + virtualMachine.getUuid()
- + " sucessfully created...");
+ if (virtualMachine == null) {
+ virtualMachine = new VirtualMachine();
+ virtualMachine.setName(deviceUUID);
+ virtualMachine.setUuid(deviceUUID);
+ boolean virtualMachineCreated = apiConnector.create(virtualMachine);
+ LOGGER.debug("virtualMachineCreated: " + virtualMachineCreated);
+ if (!virtualMachineCreated) {
+ LOGGER.warn("virtualMachine creation failed..");
+ }
+ LOGGER.info("virtualMachine : " + virtualMachine.getName() + " having UUID : " + virtualMachine.getUuid()
+ + " sucessfully created...");
+ }
+ virtualMachineInterface.setVirtualMachine(virtualMachine);
}
- virtualMachineInterface.setVirtualMachine(virtualMachine);
}
- }
- if(deviceID == null){
- virtualMachineInterface.clearVirtualMachine();
- }
- if (portName != null) {
- virtualMachineInterface.setDisplayName(portName);
- }
- if ((deviceID != null && !(("").equals(deviceID))) || portName != null || instanceIpUpdate ) {
- if ((deviceID != null && !(("").equals(deviceID))) || portName != null) {
- boolean portUpdate = apiConnector.update(virtualMachineInterface);
- if (!portUpdate) {
- LOGGER.warn("Port Updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ if (deviceUUID == null) {
+ virtualMachineInterface.clearVirtualMachine();
+ }
+ if (portName != null) {
+ virtualMachineInterface.setDisplayName(portName);
+ }
+ if ((deviceUUID != null && !(("").equals(deviceUUID))) || portName != null || instanceIpUpdate) {
+ if ((deviceUUID != null && !(("").equals(deviceUUID))) || portName != null) {
+ boolean portUpdate = apiConnector.update(virtualMachineInterface);
+ if (!portUpdate) {
+ LOGGER.warn("Port Updation failed..");
+ }
}
+ LOGGER.info("Port having UUID : " + virtualMachineInterface.getUuid() + " has been sucessfully updated...");
+ } else {
+ LOGGER.info("Nothing to update...");
}
- LOGGER.info("Port having UUID : " + virtualMachineInterface.getUuid() + " has been sucessfully updated...");
- return HttpURLConnection.HTTP_OK;
- } else {
- LOGGER.info("Nothing to update...");
- return HttpURLConnection.HTTP_BAD_REQUEST;
+ } catch (Exception ex) {
+ LOGGER.error("Exception : " + ex);
}
}
/**
* Invoked to take action after a port has been updated.
*
- * @param network
+ * @param updatedPort
* An instance of modified Neutron Port object.
*/
@Override
- public void neutronPortUpdated(NeutronPort neutronPort) {
+ public void neutronPortUpdated(NeutronPort updatedPort) {
+ String deviceUUID = updatedPort.getDeviceID();
+ String portUUID = updatedPort.getPortUUID();
try {
- VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID());
- if (neutronPort.getDeviceID() == null) { // TODO : VM Refs not getting cleared correctly - to be fixed
- if (neutronPort.getName().matches(virtualMachineInterface.getDisplayName()) && virtualMachineInterface.getVirtualMachine() == null) {
- LOGGER.info("Port updatation verified....");
+ updatePort(updatedPort);
+ try {
+ if (!(portUUID.contains("-"))) {
+ portUUID = Utils.uuidFormater(portUUID);
}
- } else if (neutronPort.getDeviceID() != null && neutronPort.getName().matches(virtualMachineInterface.getDisplayName())
- && neutronPort.getDeviceID().matches(virtualMachineInterface.getVirtualMachine().get(0).getUuid())) {
- LOGGER.info("Port updatation verified....");
- } else {
- LOGGER.info("Port updatation failed....");
+ portUUID = UUID.fromString(portUUID).toString();
+ if (deviceUUID != null) {
+ if (!(deviceUUID.contains("-"))) {
+ deviceUUID = Utils.uuidFormater(deviceUUID);
+ }
+ deviceUUID = UUID.fromString(deviceUUID).toString();
+ }
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class,
+ portUUID);
+ if (deviceUUID == null || ("").equals(deviceUUID)) {
+ if (updatedPort.getName().matches(virtualMachineInterface.getDisplayName())
+ && virtualMachineInterface.getVirtualMachine() == null) {
+ LOGGER.info("Port updation verified....");
+ }
+ } else {
+ if (updatedPort.getName().matches(virtualMachineInterface.getDisplayName())
+ && deviceUUID.matches(virtualMachineInterface.getVirtualMachine().get(0).getUuid())) {
+ LOGGER.info("Port updatation verified....");
+ }
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception :" + e);
}
- } catch (Exception e) {
- LOGGER.error("Exception :" + e);
- }
- }
-
- /**
- * Invoked to format the UUID if UUID is not in correct format.
- *
- * @param String
- * An instance of UUID string.
- *
- * @return Correctly formated UUID string.
- */
- private String uuidFormater(String uuid) {
- String uuidPattern = null;
- try {
- String id1 = uuid.substring(0, 8);
- String id2 = uuid.substring(8, 12);
- String id3 = uuid.substring(12, 16);
- String id4 = uuid.substring(16, 20);
- String id5 = uuid.substring(20, 32);
- uuidPattern = (id1 + "-" + id2 + "-" + id3 + "-" + id4 + "-" + id5);
-
- } catch (Exception e) {
- LOGGER.error("UUID is not in correct format ");
- LOGGER.error("Exception :" + e);
+ } catch (IOException ioEx) {
+ LOGGER.error("Exception :" + ioEx);
+ } catch (Exception ex) {
+ LOGGER.error("Exception :" + ex);
}
- return uuidPattern;
}
-}
+}
\ No newline at end of file
-package org.opendaylight.plugin2oc.neutron;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.util.List;
-import java.util.UUID;
-
-import net.juniper.contrail.api.ApiConnector;
-import net.juniper.contrail.api.ApiPropertyBase;
-import net.juniper.contrail.api.ObjectReference;
-import net.juniper.contrail.api.types.LogicalRouter;
-import net.juniper.contrail.api.types.Project;
-import net.juniper.contrail.api.types.VirtualMachineInterface;
-import net.juniper.contrail.api.types.VirtualNetwork;
-
-import org.opendaylight.controller.networkconfig.neutron.INeutronRouterAware;
-import org.opendaylight.controller.networkconfig.neutron.NeutronRouter;
-import org.opendaylight.controller.networkconfig.neutron.NeutronRouter_Interface;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Handle requests for Neutron Router.
- */
-public class RouterHandler implements INeutronRouterAware {
-
- /**
- * Logger instance.
- */
-
- static final Logger LOGGER = LoggerFactory.getLogger(RouterHandler.class);
- static ApiConnector apiConnector;
-
- /**
- * Invoked when a router creation is requested to check if the specified
- * router can be created and then creates the router
- *
- * @param router
- * An instance of proposed new Neutron Router object.
- *
- * @return A HTTP status code to the creation request.
- */
- @Override
- public int canCreateRouter(NeutronRouter router) {
- apiConnector = Activator.apiConnector;
- if (router == null) {
- LOGGER.error("Router object can't be null/empty.");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- if (router.getRouterUUID() == null || ("").equals(router.getRouterUUID())) {
- LOGGER.error("Router UUID can't be null/empty.");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- if (router.getTenantID() == null || ("").equals(router.getTenantID())) {
- LOGGER.error("Tenant can't be null/empty.");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- if (router.getName() == null || ("").equals(router.getName())) {
- LOGGER.error("Router name can't be null/empty.");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- String projectUUID = router.getTenantID();
- if (!(projectUUID.contains("-"))) {
- projectUUID = uuidFormater(projectUUID);
- }
- projectUUID = UUID.fromString(projectUUID).toString();
- Project project;
- try {
- project = (Project) apiConnector.findById(Project.class, projectUUID);
-
- if (project == null) {
- Thread.currentThread();
- Thread.sleep(3000);
- project = (Project) apiConnector.findById(Project.class, projectUUID);
- if (project == null) {
- LOGGER.error("Could not find projectUUID...");
- return HttpURLConnection.HTTP_NOT_FOUND;
- }
- }
- return createRouter(router);
- } catch (InterruptedException interruptedException) {
- LOGGER.error("InterruptedException : ", interruptedException);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } catch (IOException ie) {
- LOGGER.error("IOException : " + ie);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to create the specified Neutron Router.
- *
- * @param router
- * An instance of new Neutron Router object.
- *
- * @return A HTTP status code to the creation request.
- */
- private int createRouter(NeutronRouter router) throws IOException {
- LogicalRouter logicalRouter = new LogicalRouter();
- logicalRouter = mapRouterProperties(router, logicalRouter);
- String projectUUID = router.getTenantID();
- if (!(projectUUID.contains("-"))) {
- projectUUID = uuidFormater(projectUUID);
- }
- projectUUID = UUID.fromString(projectUUID).toString();
- try {
- Project project = (Project) apiConnector.findById(Project.class, projectUUID);
- logicalRouter.setParent(project);
- if (router.getExternalGatewayInfo() != null) {
- try {
- VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, router.getExternalGatewayInfo().getNetworkID());
- logicalRouter.setVirtualNetwork(virtualNetwork);
- } catch (IOException ex) {
- LOGGER.error("IOException : " + ex);
- }
- }
- boolean routerCreated = apiConnector.create(logicalRouter);
- if (!routerCreated) {
- LOGGER.warn("Router creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("Router : " + logicalRouter.getName() + " having UUID : " + logicalRouter.getUuid() + " sucessfully created...");
- return HttpURLConnection.HTTP_OK;
- } catch (IOException ex) {
- LOGGER.error("IOException : " + ex);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to take action after a router has been created.
- *
- * @param router
- * An instance of new Neutron Router object.
- */
- @Override
- public void neutronRouterCreated(NeutronRouter router) {
- LogicalRouter logicalRouter = null;
- try {
- logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, router.getRouterUUID());
- if (logicalRouter != null) {
- LOGGER.info("Router creation verified....");
- }
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- }
- }
-
- /**
- * Invoked when a router deletion is requested to indicate if the specified
- * router can be deleted.
- *
- * @param router
- * An instance of the Neutron Router object to be deleted.
- *
- * @return A HTTP status code to the deletion request.
- */
- @Override
- public int canDeleteRouter(NeutronRouter router) {
- apiConnector = Activator.apiConnector;
- if (router == null) {
- LOGGER.info("Router object can't be null...");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- try {
- return deleteRouter(router.getRouterUUID());
- } catch (Exception ex) {
- LOGGER.error("Exception : ", ex);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to delete the specified Neutron router.
- *
- * @param router
- * An instance of new Neutron router object.
- *
- * @return A HTTP status code to the deletion request.
- */
- private int deleteRouter(String routerUUID) {
- LogicalRouter logicalRouter = null;
- try {
- logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);
- if (logicalRouter != null) {
- apiConnector.delete(logicalRouter);
- LOGGER.info("Router with UUID : " + routerUUID + " has been deleted successfully....");
- return HttpURLConnection.HTTP_OK;
- } else {
- LOGGER.info("No Router exists with UUID : " + routerUUID);
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- } catch (IOException ex) {
- LOGGER.error("Exception : " + ex);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to take action after a Router has been deleted.
- *
- * @param router
- * An instance of deleted Neutron Router object.
- */
- @Override
- public void neutronRouterDeleted(NeutronRouter router) {
- LogicalRouter logicalRouter = null;
- try {
- logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, router.getRouterUUID());
- if (logicalRouter != null) {
- LOGGER.info("Router deletion verified....");
- }
- } catch (IOException ex) {
- LOGGER.error("Exception : " + ex);
- }
-
- }
-
- /**
- * Invoked when a router update is requested to indicate if the specified
- * router can be changed using the specified delta.
- *
- * @param delta
- * Updates to the router object using patch semantics.
- * @param router
- * An instance of the Neutron router object to be updated.
- * @return A HTTP status code to the update request.
- */
- @Override
- public int canUpdateRouter(NeutronRouter deltaRouter, NeutronRouter router) {
- apiConnector = Activator.apiConnector;
- if (deltaRouter == null || router == null) {
- LOGGER.error("Neutron Router object can't be null..");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }
- try {
- LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, router.getRouterUUID());
- if (logicalRouter == null) {
- LOGGER.warn("Router object not found..");
- return HttpURLConnection.HTTP_NOT_FOUND;
- }
- return updateRouter(logicalRouter, deltaRouter);
- } catch (IOException ioEx) {
- LOGGER.error("Exception : " + ioEx);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to update the router
- *
- * @param deltaRouter
- * An instance of Router.
- * @param originalRouter
- * An instance of new logicalRouter object.
- *
- * @return A HTTP status code to the creation request.
- */
- private int updateRouter(LogicalRouter logicalRouter, NeutronRouter deltaRouter) throws IOException {
- try {
- String routerName = deltaRouter.getName();
- logicalRouter.setName(routerName);
- logicalRouter.setDisplayName(routerName);
- VirtualNetwork virtualNetwork = null;
- if (deltaRouter.getExternalGatewayInfo() != null) {
- try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, deltaRouter.getExternalGatewayInfo().getNetworkID());
- logicalRouter.setVirtualNetwork(virtualNetwork);
- } catch (IOException ex) {
- LOGGER.error("IOException : " + ex);
- }
- } else{
- logicalRouter.clearVirtualNetwork();
- }
- boolean routerUpdate = apiConnector.update(logicalRouter);
- if (!routerUpdate) {
- LOGGER.warn("Router Updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("Router having UUID : " + logicalRouter.getUuid() + " has been sucessfully updated...");
- return HttpURLConnection.HTTP_OK;
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to take action after a router has been updated.
- *
- * @param router
- * An instance of modified Neutron router object.
- */
- @Override
- public void neutronRouterUpdated(NeutronRouter router) {
- try {
- LogicalRouter logicalRouter = new LogicalRouter();
- logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, router.getRouterUUID());
-
- if (router.getName().equalsIgnoreCase(logicalRouter.getName())) {
- LOGGER.info("Router updatation verified....");
- } else {
- LOGGER.info("Router updatation failed....");
- }
-
- } catch (Exception ex) {
- LOGGER.error("Exception : " + ex);
- }
-
- }
-
- /**
- * Invoked to attach interface to the specified Neutron Router.
- *
- * @param router
- * An instance of new Neutron Router object.
- *
- * @param routerInterface
- * An instance of NeutronRouter_Interface object to be attached.
- *
- * @return A HTTP status code to the attach request.
- */
- @Override
- public int canAttachInterface(NeutronRouter router, NeutronRouter_Interface routerInterface) {
- apiConnector = Activator.apiConnector;
- String portId = routerInterface.getPortUUID();
- String routerId = router.getRouterUUID();
- VirtualMachineInterface virtualMachineInterface = null;
- LogicalRouter logicalRouter = null;
- try {
- logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerId);
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portId);
- if (virtualMachineInterface != null) {
- logicalRouter.addVirtualMachineInterface(virtualMachineInterface);
- }
-// logicalRouter.setDeviceOwner(); // TODO : Support needs to be added
- boolean updateVMI = apiConnector.update(virtualMachineInterface);
- if (!updateVMI) {
- LOGGER.warn("virtualMachineInterface updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- boolean interfaceAttached = apiConnector.update(logicalRouter);
- if (!interfaceAttached) {
- LOGGER.warn("Interface attachment failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("Interface : " + logicalRouter.getName() + " having UUID : " + logicalRouter.getUuid() + " sucessfully attached with..."
- + logicalRouter.getVirtualMachineInterface());
- return HttpURLConnection.HTTP_OK;
- } catch (IOException ioEx) {
- LOGGER.error("IOException : " + ioEx);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to take action after a router interface has been attached.
- *
- * @param router
- * An instance of new Neutron Router object.
- *
- * @param routerInterface
- * An instance of NeutronRouter_Interface object to be attached.
- */
- @Override
- public void neutronRouterInterfaceAttached(NeutronRouter router, NeutronRouter_Interface routerInterface) {
- String portId = routerInterface.getPortUUID();
- String routerId = router.getRouterUUID();
- VirtualMachineInterface virtualMachineInterface = null;
- try {
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portId);
- List<ObjectReference<ApiPropertyBase>> virtualMachineList = virtualMachineInterface.getVirtualMachine();
- if (virtualMachineList != null) {
- for (ObjectReference<ApiPropertyBase> ref : virtualMachineList) {
- String deviceId = ref.getUuid();
- if (deviceId.equals(routerId)) {
- LOGGER.info("Interface attachment verified to router...");
- }
- }
- }
- // if(virtualMachineInterface.getVirtualMachine()!=null &&
- // something.getDeviceOwner.equals("network:router_interface")){
- // LOGGER.info("Interface attachment verified to router..." );
- // }
- } catch (Exception ex) {
- LOGGER.error("Exception : " + ex);
- }
-
- }
-
- /**
- * Invoked to detach interface to the specified Neutron Router.
- *
- * @param router
- * An instance of new Neutron Router object.
- *
- * @param routerInterface
- * An instance of NeutronRouter_Interface object to be detached.
- *
- * @return A HTTP status code to the detach request.
- */
- @Override
- public int canDetachInterface(NeutronRouter router, NeutronRouter_Interface routerInterface) {
- apiConnector = Activator.apiConnector;
- String portId = routerInterface.getPortUUID();
- String routerId = router.getRouterUUID();
- VirtualMachineInterface virtualMachineInterface = null;
- LogicalRouter logicalRouter = null;
- try {
- logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerId);
- List<ObjectReference<ApiPropertyBase>> vmiList = logicalRouter.getVirtualMachineInterface();
- for (ObjectReference<ApiPropertyBase> vmiRef : vmiList) {
- if(vmiRef.getUuid().matches(portId)){
- vmiList.remove(vmiRef);
- break;
- }
- }
- virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portId);
-// virtualMachineInterface.clearDeviceId(); //TODO - support to be added in OpenContrail
- // virtualMachineInterface.clearDeviceId(); //TODO - support to be added in OpenContrail
- boolean updateVMI = apiConnector.update(virtualMachineInterface);
- if (!updateVMI) {
- LOGGER.warn("virtualMachineInterface updation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- boolean interfaceDetached = apiConnector.update(logicalRouter);
- if (!interfaceDetached) {
- LOGGER.warn("Interface detachment failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- LOGGER.info("Interface : " + logicalRouter.getName() + " having UUID : " + logicalRouter.getUuid() + " sucessfully detached from..."
- + logicalRouter.getVirtualMachineInterface());
- return HttpURLConnection.HTTP_OK;
- } catch (IOException e) {
- LOGGER.error("IOException : " + e);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- /**
- * Invoked to take action after a router interface has been detached.
- *
- * @param router
- * An instance of new Neutron Router object.
- *
- * @param routerInterface
- * An instance of NeutronRouter_Interface object to be attached.
- */
- @Override
- public void neutronRouterInterfaceDetached(NeutronRouter router, NeutronRouter_Interface routerInterface) {
- String routerId = router.getRouterUUID();
- String portId = routerInterface.getPortUUID();
- try {
- VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portId);
- LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerId);
- // if(virtualMachineInterface.getVirtualMachine()==null &&
- // virtualMachineInterface.getDeviceOwner==null){
- // LOGGER.info("Interface detachment verified from router..." );
- // }
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- }
- }
-
- /**
- * Invoked to map the NeutronRouter object properties to the logicalRouter
- * object.
- *
- * @param neutronRouter
- * An instance of new Neutron Router object.
- * @param logicalRouter
- * An instance of new logicalRouter object.
- * @return {@link logicalRouter}
- */
- private LogicalRouter mapRouterProperties(NeutronRouter neutronRouter, LogicalRouter logicalRouter) {
- String routerUUID = neutronRouter.getRouterUUID();
- String routerName = neutronRouter.getName();
- logicalRouter.setUuid(routerUUID);
- logicalRouter.setName(routerName);
- logicalRouter.setDisplayName(routerName);
- VirtualNetwork virtualNetwork = null;
- if (neutronRouter.getExternalGatewayInfo() != null) {
- try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, neutronRouter.getExternalGatewayInfo().getNetworkID());
- logicalRouter.setVirtualNetwork(virtualNetwork);
- } catch (IOException ex) {
- LOGGER.error("IOException : " + ex);
- }
- }
- return logicalRouter;
- }
-
- /**
- * Invoked to format the UUID if UUID is not in correct format.
- *
- * @param String
- * An instance of UUID string.
- *
- * @return Correctly formated UUID string.
- */
- private String uuidFormater(String uuid) {
- String uuidPattern = null;
- String id1 = uuid.substring(0, 8);
- String id2 = uuid.substring(8, 12);
- String id3 = uuid.substring(12, 16);
- String id4 = uuid.substring(16, 20);
- String id5 = uuid.substring(20, 32);
- uuidPattern = (id1 + "-" + id2 + "-" + id3 + "-" + id4 + "-" + id5);
- return uuidPattern;
- }
-
-}
+/*\r
+ * Copyright (C) 2014 Juniper Networks, Inc.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ */\r
+package org.opendaylight.plugin2oc.neutron;\r
+\r
+import java.io.IOException;\r
+import java.net.HttpURLConnection;\r
+import java.util.List;\r
+import java.util.UUID;\r
+\r
+import net.juniper.contrail.api.ApiConnector;\r
+import net.juniper.contrail.api.ApiPropertyBase;\r
+import net.juniper.contrail.api.ObjectReference;\r
+import net.juniper.contrail.api.types.LogicalRouter;\r
+import net.juniper.contrail.api.types.Project;\r
+import net.juniper.contrail.api.types.VirtualMachineInterface;\r
+import net.juniper.contrail.api.types.VirtualNetwork;\r
+\r
+import org.opendaylight.controller.networkconfig.neutron.INeutronRouterAware;\r
+import org.opendaylight.controller.networkconfig.neutron.NeutronRouter;\r
+import org.opendaylight.controller.networkconfig.neutron.NeutronRouter_Interface;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+/**\r
+ * Handle requests for Neutron Router.\r
+ */\r
+public class RouterHandler implements INeutronRouterAware {\r
+\r
+ /**\r
+ * Logger instance.\r
+ */\r
+\r
+ static final Logger LOGGER = LoggerFactory.getLogger(RouterHandler.class);\r
+ static ApiConnector apiConnector;\r
+\r
+ /**\r
+ * Invoked when a router creation is requested to check if the specified\r
+ * router can be created and then creates the router\r
+ *\r
+ * @param router\r
+ * An instance of proposed new Neutron Router object.\r
+ *\r
+ * @return A HTTP status code to the creation request.\r
+ */\r
+ @Override\r
+ public int canCreateRouter(NeutronRouter router) {\r
+ apiConnector = Activator.apiConnector;\r
+ if (router == null) {\r
+ LOGGER.error("Router object can't be null/empty.");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ if (router.getRouterUUID() == null || ("").equals(router.getRouterUUID())) {\r
+ LOGGER.error("Router UUID can't be null/empty.");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ if (router.getTenantID() == null || ("").equals(router.getTenantID())) {\r
+ LOGGER.error("Tenant can't be null/empty.");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ if (router.getName() == null || ("").equals(router.getName())) {\r
+ LOGGER.error("Router name can't be null/empty.");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ try {\r
+ String projectUUID = router.getTenantID();\r
+ String routerUUID = router.getRouterUUID();\r
+ try {\r
+ if (!(projectUUID.contains("-"))) {\r
+ projectUUID = Utils.uuidFormater(projectUUID);\r
+ }\r
+\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ boolean isValidRouterUUID = Utils.isValidHexNumber(routerUUID);\r
+ boolean isValidprojectUUID = Utils.isValidHexNumber(projectUUID);\r
+ if (!isValidRouterUUID || !isValidprojectUUID) {\r
+ LOGGER.info("Badly formed Hexadecimal UUID...");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ projectUUID = UUID.fromString(projectUUID).toString();\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ if (project == null) {\r
+ Thread.currentThread();\r
+ Thread.sleep(3000);\r
+ project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ if (project == null) {\r
+ LOGGER.error("Could not find projectUUID...");\r
+ return HttpURLConnection.HTTP_NOT_FOUND;\r
+ }\r
+ }\r
+ String routerByName = apiConnector.findByName(LogicalRouter.class, project, router.getName());\r
+ if (routerByName != null) {\r
+ LOGGER.warn("Router already exists with UUID : " + routerByName);\r
+ return HttpURLConnection.HTTP_FORBIDDEN;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ } catch (InterruptedException interruptedException) {\r
+ LOGGER.error("InterruptedException : ", interruptedException);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ } catch (IOException ie) {\r
+ LOGGER.error("IOException : " + ie);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to create the specified Neutron Router.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron Router object.\r
+ */\r
+ private void createRouter(NeutronRouter router) throws IOException {\r
+ LogicalRouter logicalRouter = new LogicalRouter();\r
+ try {\r
+ logicalRouter = mapRouterProperties(router, logicalRouter);\r
+ boolean routerCreated = apiConnector.create(logicalRouter);\r
+ if (!routerCreated) {\r
+ LOGGER.warn("Router creation failed..");\r
+ }\r
+ LOGGER.info("Router : " + logicalRouter.getName() + " having UUID : " + logicalRouter.getUuid() + " sucessfully created...");\r
+ } catch (IOException ex) {\r
+ LOGGER.error("IOException : " + ex);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a router has been created.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron Router object.\r
+ */\r
+ @Override\r
+ public void neutronRouterCreated(NeutronRouter router) {\r
+ try {\r
+ createRouter(router);\r
+ String routerUUID = router.getRouterUUID();\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter != null) {\r
+ LOGGER.info("Router creation verified....");\r
+ } else {\r
+ LOGGER.error("Router creation failed....");\r
+ }\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("IOException : " + ioEx);\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked when a router deletion is requested to indicate if the specified\r
+ * router can be deleted.\r
+ *\r
+ * @param router\r
+ * An instance of the Neutron Router object to be deleted.\r
+ *\r
+ * @return A HTTP status code to the deletion request.\r
+ */\r
+ @Override\r
+ public int canDeleteRouter(NeutronRouter router) {\r
+ apiConnector = Activator.apiConnector;\r
+ if (router == null) {\r
+ LOGGER.info("Router object can't be null...");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ String routerUUID = router.getRouterUUID();\r
+ try {\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ }\r
+\r
+ /**\r
+ * Invoked to delete the specified Neutron router.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron router object.\r
+ */\r
+ private void deleteRouter(String routerUUID) {\r
+ try {\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter != null) {\r
+ apiConnector.delete(logicalRouter);\r
+ LOGGER.info("Router with UUID : " + routerUUID + " has been deleted successfully....");\r
+ } else {\r
+ LOGGER.info("No Router exists with UUID : " + routerUUID);\r
+ }\r
+ } catch (IOException ex) {\r
+ LOGGER.error("Exception : " + ex);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a Router has been deleted.\r
+ *\r
+ * @param router\r
+ * An instance of deleted Neutron Router object.\r
+ */\r
+ @Override\r
+ public void neutronRouterDeleted(NeutronRouter router) {\r
+ try {\r
+ String routerUUID = router.getRouterUUID();\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ deleteRouter(routerUUID);\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter == null) {\r
+ LOGGER.info("Router deletion verified....");\r
+ } else {\r
+ LOGGER.error("Router deletion failed....");\r
+ }\r
+ } catch (IOException ex) {\r
+ LOGGER.error("Exception : " + ex);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked when a router update is requested to indicate if the specified\r
+ * router can be changed using the specified delta.\r
+ *\r
+ * @param delta\r
+ * Updates to the router object using patch semantics.\r
+ * @param router\r
+ * An instance of the Neutron router object to be updated.\r
+ * @return A HTTP status code to the update request.\r
+ */\r
+ @Override\r
+ public int canUpdateRouter(NeutronRouter deltaRouter, NeutronRouter router) {\r
+ apiConnector = Activator.apiConnector;\r
+ if (deltaRouter == null || router == null) {\r
+ LOGGER.error("Neutron Router object can't be null..");\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ String networkUUID = null;\r
+ String routerUUID = router.getRouterUUID();\r
+ try {\r
+ if (deltaRouter.getExternalGatewayInfo() != null) {\r
+ networkUUID = deltaRouter.getExternalGatewayInfo().getNetworkID();\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ }\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ try {\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter == null) {\r
+ LOGGER.warn("Router object not found..");\r
+ return HttpURLConnection.HTTP_NOT_FOUND;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("Exception : " + ioEx);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to update the router\r
+ *\r
+ * @param deltaRouter\r
+ * An instance of Router.\r
+ */\r
+ private int updateRouter(NeutronRouter neutronRouter) throws IOException {\r
+ try {\r
+ String routerUUID = neutronRouter.getRouterUUID();\r
+ String networkUUID = null;\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ if (neutronRouter.getExternalGatewayInfo() != null) {\r
+ networkUUID = neutronRouter.getExternalGatewayInfo().getNetworkID();\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ }\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ String routerName = neutronRouter.getName();\r
+ logicalRouter.setDisplayName(routerName);\r
+ if (neutronRouter.getExternalGatewayInfo() != null) {\r
+ try {\r
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ logicalRouter.setVirtualNetwork(virtualNetwork);\r
+ } catch (IOException ex) {\r
+ LOGGER.error("IOException : " + ex);\r
+ }\r
+ } else {\r
+ logicalRouter.clearVirtualNetwork();\r
+ }\r
+ boolean routerUpdate = apiConnector.update(logicalRouter);\r
+ if (!routerUpdate) {\r
+ LOGGER.warn("Router Updation failed..");\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ LOGGER.info("Router having UUID : " + logicalRouter.getUuid() + " has been sucessfully updated...");\r
+ return HttpURLConnection.HTTP_OK;\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a router has been updated.\r
+ *\r
+ * @param router\r
+ * An instance of modified Neutron router object.\r
+ */\r
+ @Override\r
+ public void neutronRouterUpdated(NeutronRouter updatedRouter) {\r
+ try {\r
+ String routerUUID = updatedRouter.getRouterUUID();\r
+ String networkUUID = null;\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ if (updatedRouter.getExternalGatewayInfo() != null) {\r
+ networkUUID = updatedRouter.getExternalGatewayInfo().getNetworkID();\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ }\r
+ updateRouter(updatedRouter);\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (updatedRouter.getExternalGatewayInfo() != null) {\r
+ if (updatedRouter.getName().matches(logicalRouter.getDisplayName())\r
+ && networkUUID.matches(logicalRouter.getVirtualNetwork().get(0).getUuid())) {\r
+ LOGGER.info("Router updatation verified....");\r
+ } else {\r
+ LOGGER.info("Router updatation failed....");\r
+ }\r
+ } else if (updatedRouter.getName().matches(logicalRouter.getDisplayName())) {\r
+ LOGGER.info("Router updatation verified....");\r
+ } else {\r
+ LOGGER.info("Router updatation failed....");\r
+ }\r
+ } catch (Exception ex) {\r
+ LOGGER.error("Exception : " + ex);\r
+ }\r
+\r
+ }\r
+\r
+ /**\r
+ * Invoked to attach interface to the specified Neutron Router.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron Router object.\r
+ *\r
+ * @param routerInterface\r
+ * An instance of NeutronRouter_Interface object to be attached.\r
+ *\r
+ * @return A HTTP status code to the attach request.\r
+ */\r
+ @Override\r
+ public int canAttachInterface(NeutronRouter router, NeutronRouter_Interface routerInterface) {\r
+ apiConnector = Activator.apiConnector;\r
+ String portUUId = routerInterface.getPortUUID();\r
+ String routerUUId = router.getRouterUUID();\r
+ try {\r
+ if (!(portUUId.contains("-"))) {\r
+ portUUId = Utils.uuidFormater(portUUId);\r
+ }\r
+ if (!(routerUUId.contains("-"))) {\r
+ routerUUId = Utils.uuidFormater(routerUUId);\r
+ }\r
+ portUUId = UUID.fromString(portUUId).toString();\r
+ routerUUId = UUID.fromString(routerUUId).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a router interface has been attached.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron Router object.\r
+ *\r
+ * @param routerInterface\r
+ * An instance of NeutronRouter_Interface object to be attached.\r
+ */\r
+ @Override\r
+ public void neutronRouterInterfaceAttached(NeutronRouter router, NeutronRouter_Interface routerInterface) {\r
+ String portUUId = routerInterface.getPortUUID();\r
+ String routerUUId = router.getRouterUUID();\r
+ VirtualMachineInterface virtualMachineInterface = null;\r
+ LogicalRouter logicalRouter = null;\r
+ try {\r
+ if (!(portUUId.contains("-"))) {\r
+ portUUId = Utils.uuidFormater(portUUId);\r
+ }\r
+ portUUId = UUID.fromString(portUUId).toString();\r
+ if (!(routerUUId.contains("-"))) {\r
+ routerUUId = Utils.uuidFormater(routerUUId);\r
+ }\r
+ routerUUId = UUID.fromString(routerUUId).toString();\r
+ logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUId);\r
+ virtualMachineInterface = (VirtualMachineInterface) apiConnector.findById(VirtualMachineInterface.class, portUUId);\r
+ if (virtualMachineInterface != null) {\r
+ logicalRouter.addVirtualMachineInterface(virtualMachineInterface);\r
+ }\r
+ // virtualMachineInterface.setDeviceOwner(); // TODO : Support needs\r
+ // to be added\r
+ // virtualMachineInterface.setDeviceId();\r
+ boolean updateVMI = apiConnector.update(virtualMachineInterface);\r
+ if (!updateVMI) {\r
+ LOGGER.warn("virtualMachineInterface updation failed..");\r
+ }\r
+ boolean interfaceAttached = apiConnector.update(logicalRouter);\r
+ if (!interfaceAttached) {\r
+ LOGGER.warn("Interface attachment failed..");\r
+ }\r
+ LOGGER.info("Interface : " + logicalRouter.getName() + " having UUID : " + logicalRouter.getUuid() + " sucessfully attached with "\r
+ + logicalRouter.getVirtualMachineInterface());\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("IOException : " + ioEx);\r
+ }\r
+\r
+ try {\r
+ if (logicalRouter.getVirtualMachineInterface() == null) {\r
+ List<ObjectReference<ApiPropertyBase>> virtualMachineInterfaceList = logicalRouter.getVirtualMachineInterface();\r
+ for (ObjectReference<ApiPropertyBase> vmiRef : virtualMachineInterfaceList) {\r
+ String vmiUUID = vmiRef.getUuid();\r
+ if (vmiUUID.equals(portUUId)) {\r
+ LOGGER.info("Interface attachment verified to router...");\r
+ break;\r
+ } else {\r
+ LOGGER.info("Interface attachment failed to router...");\r
+ }\r
+ }\r
+ }\r
+ } catch (Exception ex) {\r
+ LOGGER.error("Exception : " + ex);\r
+ }\r
+\r
+ }\r
+\r
+ /**\r
+ * Invoked to detach interface to the specified Neutron Router.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron Router object.\r
+ *\r
+ * @param routerInterface\r
+ * An instance of NeutronRouter_Interface object to be detached.\r
+ *\r
+ * @return A HTTP status code to the detach request.\r
+ */\r
+ @Override\r
+ public int canDetachInterface(NeutronRouter router, NeutronRouter_Interface routerInterface) {\r
+ apiConnector = Activator.apiConnector;\r
+ String portUUID = routerInterface.getPortUUID();\r
+ String routerUUID = router.getRouterUUID();\r
+ try {\r
+ if (!(portUUID.contains("-"))) {\r
+ portUUID = Utils.uuidFormater(portUUID);\r
+ }\r
+ portUUID = UUID.fromString(portUUID).toString();\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ } catch (Exception ex) {\r
+ LOGGER.error("UUID input incorrect", ex);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ try {\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter != null) {\r
+ List<ObjectReference<ApiPropertyBase>> vmiList = logicalRouter.getVirtualMachineInterface();\r
+ if (vmiList != null) {\r
+ for (ObjectReference<ApiPropertyBase> vmiRef : vmiList) {\r
+ if (vmiRef.getUuid().matches(portUUID)) {\r
+ return HttpURLConnection.HTTP_OK;\r
+ } else {\r
+ LOGGER.error("No interface attached with port ID " + portUUID);\r
+ return HttpURLConnection.HTTP_BAD_REQUEST;\r
+ }\r
+ }\r
+ }\r
+ } else {\r
+ LOGGER.error("No router exists with specified UUID");\r
+ return HttpURLConnection.HTTP_NOT_FOUND;\r
+ }\r
+ } catch (IOException ioEx) {\r
+ LOGGER.error("IOException : ", ioEx);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ } catch (Exception ex) {\r
+ LOGGER.error("IOException : ", ex);\r
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;\r
+ }\r
+ return HttpURLConnection.HTTP_OK;\r
+ }\r
+\r
+ /**\r
+ * Invoked to take action after a router interface has been detached.\r
+ *\r
+ * @param router\r
+ * An instance of new Neutron Router object.\r
+ *\r
+ * @param routerInterface\r
+ * An instance of NeutronRouter_Interface object to be attached.\r
+ */\r
+ @Override\r
+ public void neutronRouterInterfaceDetached(NeutronRouter router, NeutronRouter_Interface routerInterface) {\r
+ String portUUID = routerInterface.getPortUUID();\r
+ String routerUUID = router.getRouterUUID();\r
+ try {\r
+ if (!(portUUID.contains("-"))) {\r
+ portUUID = Utils.uuidFormater(portUUID);\r
+ }\r
+ portUUID = UUID.fromString(portUUID).toString();\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter != null) {\r
+ List<ObjectReference<ApiPropertyBase>> vmiList = logicalRouter.getVirtualMachineInterface();\r
+ if (vmiList != null) {\r
+ for (ObjectReference<ApiPropertyBase> vmiRef : vmiList) {\r
+ if (vmiRef.getUuid().matches(portUUID)) {\r
+ vmiList.remove(vmiRef);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ VirtualMachineInterface virtualMachineInterface = (VirtualMachineInterface) apiConnector\r
+ .findById(VirtualMachineInterface.class, portUUID);\r
+ // virtualMachineInterface.clearDeviceId(); //TODO - support to be\r
+ // added in OpenContrail\r
+ // virtualMachineInterface.clearDeviceId(); //TODO - support to be\r
+ // added in OpenContrail\r
+ boolean updateVMI = apiConnector.update(virtualMachineInterface);\r
+ if (!updateVMI) {\r
+ LOGGER.warn("virtualMachineInterface updation failed..");\r
+ }\r
+ boolean interfaceDetached = apiConnector.update(logicalRouter);\r
+ if (!interfaceDetached) {\r
+ LOGGER.warn("Interface detachment failed..");\r
+ }\r
+ LOGGER.info("Interface : " + logicalRouter.getName() + " having UUID : " + logicalRouter.getUuid() + " sucessfully detached from "\r
+ + logicalRouter.getVirtualMachineInterface());\r
+ } catch (IOException e) {\r
+ LOGGER.error("IOException : " + e);\r
+ }\r
+ try {\r
+ // VirtualMachineInterface virtualMachineInterface =\r
+ // (VirtualMachineInterface)\r
+ // apiConnector.findById(VirtualMachineInterface.class, portUUID);\r
+ LogicalRouter logicalRouter = (LogicalRouter) apiConnector.findById(LogicalRouter.class, routerUUID);\r
+ if (logicalRouter.getVirtualMachineInterface() == null) {\r
+ List<ObjectReference<ApiPropertyBase>> virtualMachineInterfaceList = logicalRouter.getVirtualMachineInterface();\r
+ for (ObjectReference<ApiPropertyBase> vmiRef : virtualMachineInterfaceList) {\r
+ String vmiUUID = vmiRef.getUuid();\r
+ if (vmiUUID.equals(portUUID)) {\r
+ LOGGER.info("Interface detachment failed...");\r
+ break;\r
+ } else {\r
+ LOGGER.info("Interface detachment verified...");\r
+ }\r
+ }\r
+ } else {\r
+ LOGGER.info("Interface detachment verified...");\r
+ }\r
+ // if(virtualMachineInterface.getVirtualMachine()==null &&\r
+ // virtualMachineInterface.getDeviceOwner==null){\r
+ // LOGGER.info("Interface detachment verified from router..." );\r
+ // }\r
+ } catch (Exception e) {\r
+ LOGGER.error("Exception : " + e);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invoked to map the NeutronRouter object properties to the logicalRouter\r
+ * object.\r
+ * @param neutronRouter\r
+ * An instance of new Neutron Router object.\r
+ * @param logicalRouter\r
+ * An instance of new logicalRouter object.\r
+ * @return {@link logicalRouter}\r
+ */\r
+ private LogicalRouter mapRouterProperties(NeutronRouter neutronRouter, LogicalRouter logicalRouter) {\r
+ String routerUUID = neutronRouter.getRouterUUID();\r
+ String routerName = neutronRouter.getName();\r
+ String projectUUID = neutronRouter.getTenantID();\r
+ String networkUUID = null;\r
+ try {\r
+ if (!(projectUUID.contains("-"))) {\r
+ projectUUID = Utils.uuidFormater(projectUUID);\r
+ }\r
+ projectUUID = UUID.fromString(projectUUID).toString();\r
+\r
+ if (neutronRouter.getExternalGatewayInfo() != null) {\r
+ networkUUID = neutronRouter.getExternalGatewayInfo().getNetworkID();\r
+ if (!(networkUUID.contains("-"))) {\r
+ networkUUID = Utils.uuidFormater(networkUUID);\r
+ }\r
+ networkUUID = UUID.fromString(networkUUID).toString();\r
+ }\r
+\r
+ if (!(routerUUID.contains("-"))) {\r
+ routerUUID = Utils.uuidFormater(routerUUID);\r
+ }\r
+ routerUUID = UUID.fromString(routerUUID).toString();\r
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);\r
+ logicalRouter.setParent(project);\r
+ logicalRouter.setUuid(routerUUID);\r
+ logicalRouter.setName(routerName);\r
+ logicalRouter.setDisplayName(routerName);\r
+ VirtualNetwork virtualNetwork = null;\r
+ if (networkUUID != null) {\r
+ try {\r
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);\r
+ logicalRouter.setVirtualNetwork(virtualNetwork);\r
+ } catch (IOException ex) {\r
+ LOGGER.error("IOException: " + ex);\r
+ }\r
+ }\r
+ } catch (Exception ex) {\r
+ LOGGER.error("IOException : " + ex);\r
+ }\r
+ return logicalRouter;\r
+ }\r
+\r
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (C) 2014 Juniper Networks, Inc.
+ *
+ * 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.plugin2oc.neutron;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.util.UUID;
+
+import net.juniper.contrail.api.ApiConnector;
+import net.juniper.contrail.api.types.Project;
+import net.juniper.contrail.api.types.SecurityGroup;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.opendaylight.controller.networkconfig.neutron.INeutronSecurityGroupAware;
+import org.opendaylight.controller.networkconfig.neutron.NeutronSecurityGroup;
+
+/**
+ * Handle requests for Security Group.
+ */
+public class SecurityGroupHandler implements INeutronSecurityGroupAware {
+ /**
+ * Logger instance.
+ */
+ static final Logger LOGGER = LoggerFactory.getLogger(SecurityGroupHandler.class);
+ static ApiConnector apiConnector;
+
+ /**
+ * Invoked when a security group creation is requested to check if the
+ * specified security group can be created
+ *
+ * @param securityGroup
+ * An instance of proposed new Neutron SecurityGroup object.
+ *
+ * @return A HTTP status code to the creation request.
+ */
+ @Override
+ public int canCreateNeutronSecurityGroup(NeutronSecurityGroup neutronSecurityGroup) {
+ apiConnector = Activator.apiConnector;
+ if (neutronSecurityGroup == null) {
+ LOGGER.error("SecurityGroup object can't be null..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ if (neutronSecurityGroup.getSecurityGroupName() == null || neutronSecurityGroup.getSecurityGroupName().equals("")) {
+ LOGGER.error("SecurityGroup Name can't be null/empty...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ if (neutronSecurityGroup.getSecurityGroupDescription() == null || neutronSecurityGroup.getSecurityGroupDescription().equals("")) {
+ LOGGER.error("SecurityGroup Description can't be null/empty...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ if (neutronSecurityGroup.getSecurityGroupTenantID() == null) {
+ LOGGER.error("SecurityGroup TenantID can't be null...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ LOGGER.debug("SecurityGroup object " + neutronSecurityGroup);
+ try {
+ String secGroupUUID = neutronSecurityGroup.getSecurityGroupUUID();
+ String projectID = neutronSecurityGroup.getSecurityGroupTenantID();
+ try {
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ if (!(projectID.contains("-"))) {
+ projectID = Utils.uuidFormater(projectID);
+ }
+ boolean isValidSecurityGroupUUID = Utils.isValidHexNumber(secGroupUUID);
+ boolean isValidprojectUUID = Utils.isValidHexNumber(projectID);
+ if (!isValidSecurityGroupUUID || !isValidprojectUUID) {
+ LOGGER.info("Badly formed Hexadecimal UUID...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ projectID = UUID.fromString(projectID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ if (securityGroup != null) {
+ LOGGER.warn("SecurityGroup already exists..");
+ return HttpURLConnection.HTTP_FORBIDDEN;
+ }
+ Project project = (Project) apiConnector.findById(Project.class, projectID);
+ if (project == null) {
+ try {
+ Thread.currentThread();
+ Thread.sleep(3000);
+ } catch (InterruptedException e) {
+ LOGGER.error("InterruptedException : ", e);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ project = (Project) apiConnector.findById(Project.class, projectID);
+ if (project == null) {
+ LOGGER.error("Could not find projectUUID...");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
+ }
+ String securityGroupByName = apiConnector.findByName(SecurityGroup.class, project, neutronSecurityGroup.getSecurityGroupName());
+ if (securityGroupByName != null) {
+ LOGGER.warn("SecurityGroup already exists with UUID : " + securityGroupByName);
+ return HttpURLConnection.HTTP_FORBIDDEN;
+ }
+ return HttpURLConnection.HTTP_OK;
+ } catch (IOException ie) {
+ LOGGER.error("IOException : " + ie);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ } catch (Exception e) {
+ LOGGER.error("Exception : " + e);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ }
+ }
+
+ /**
+ * Invoked to create a Security Group and take action after the Security
+ * Group has been created.
+ *
+ * @param neutronSecurityGroup
+ * An instance of new {@link NeutronSecurityGroup} object.
+ */
+ @Override
+ public void neutronSecurityGroupCreated(NeutronSecurityGroup neutronSecurityGroup) {
+ try {
+ String secGroupUUID = neutronSecurityGroup.getSecurityGroupUUID();
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ createSecurityGroup(neutronSecurityGroup);
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ if (securityGroup != null) {
+ LOGGER.info("SecurityGroup creation verified....");
+ } else {
+ LOGGER.info("SecurityGroup creation failed....");
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception : " + e);
+ }
+ }
+
+ /**
+ * Invoked to create the specified Neutron Security Group.
+ *
+ * @param security
+ * Group An instance of new NeutronSecurityGroup object.
+ */
+ private void createSecurityGroup(NeutronSecurityGroup neutronSecurityGroup) throws IOException {
+ // map neutronSecurityGroup to securityGroup
+ SecurityGroup securityGroup = mapSecurityGroupProperties(neutronSecurityGroup);
+ boolean securityGroupCreated;
+ try {
+ securityGroupCreated = apiConnector.create(securityGroup);
+ LOGGER.debug("SecurityGroupCreated: " + securityGroupCreated);
+ if (!securityGroupCreated) {
+ LOGGER.warn("SecurityGroup creation failed..");
+ }
+ } catch (IOException ioEx) {
+ LOGGER.error("Exception : " + ioEx);
+ }
+ LOGGER.info("SecurityGroup : " + securityGroup.getName() + " having UUID : " + securityGroup.getUuid() + " sucessfully created...");
+ }
+
+ /**
+ * Invoked to map the NeutronSecurityGroup object properties to the neutron
+ * security Group object.
+ *
+ * @param neutronSecurityGroup
+ * An instance of new Neutron SecurityGroup object.
+ * @param securityGroup
+ * An instance of new securityGroup object.
+ * @return {@link securityGroup}
+ */
+ private SecurityGroup mapSecurityGroupProperties(NeutronSecurityGroup neutronSecurityGroup) {
+ SecurityGroup securityGroup = new SecurityGroup();
+ try {
+ String secGroupUUID = neutronSecurityGroup.getSecurityGroupUUID();
+ String projectUUID = neutronSecurityGroup.getSecurityGroupTenantID();
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ if (!(projectUUID.contains("-"))) {
+ projectUUID = Utils.uuidFormater(projectUUID);
+ }
+ projectUUID = UUID.fromString(projectUUID).toString();
+ Project project = (Project) apiConnector.findById(Project.class, projectUUID);
+ securityGroup.setParent(project);
+ securityGroup.setName(neutronSecurityGroup.getSecurityGroupName());
+ securityGroup.setDisplayName(neutronSecurityGroup.getSecurityGroupName());
+ securityGroup.setUuid(secGroupUUID);
+ } catch (Exception ex) {
+ LOGGER.error("Exception : ", ex);
+ }
+ return securityGroup;
+ }
+
+ /**
+ * Invoked when a security group update is requested to indicate if the
+ * specified Security Group can be changed using the specified delta.
+ *
+ * @param deltaSecurityGroup
+ * Updates to the {@link NeutronSecurityGroup} object using patch
+ * semantics.
+ * @param originalSecurityGroup
+ * An instance of the {@link NeutronSecurityGroup} object to be
+ * updated.
+ * @return A HTTP status code to the update request.
+ */
+ @Override
+ public int canUpdateNeutronSecurityGroup(NeutronSecurityGroup deltaSecurityGroup, NeutronSecurityGroup originalSecurityGroup) {
+ apiConnector = Activator.apiConnector;
+ if (deltaSecurityGroup == null || originalSecurityGroup == null) {
+ LOGGER.error("Neutron SecurityGroup can't be null..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ String secGroupUUID = originalSecurityGroup.getSecurityGroupUUID();
+ try {
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ try {
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ if (securityGroup == null) {
+ LOGGER.warn("SecurityGroup does not exist for the specified UUID..");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ }
+ return HttpURLConnection.HTTP_OK;
+ } catch (IOException ie) {
+ LOGGER.error("IOException: " + ie);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ } catch (Exception e) {
+ LOGGER.error("Exception: " + e);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ }
+ }
+
+ /**
+ * Invoked to update a Security Group and take action after the Security
+ * group has been updated.
+ *
+ * @param updatedSecurityGroup
+ * An instance of modified {@link NeutronSecurityGroup} object.
+ */
+ @Override
+ public void neutronSecurityGroupUpdated(NeutronSecurityGroup updatedSecurityGroup) {
+ try {
+ String secGroupUUID = updatedSecurityGroup.getSecurityGroupUUID();
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ updateSecurityGroup(updatedSecurityGroup);
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ if (securityGroup.getDisplayName().matches(updatedSecurityGroup.getSecurityGroupName())) {
+ LOGGER.info("SecurityGroup updatation verified....");
+ } else {
+ LOGGER.info("SecurityGroup updatation failed....");
+ }
+ } catch (Exception ex) {
+ LOGGER.error("Exception :" + ex);
+ }
+ }
+
+ /**
+ * Invoked to update the securityGroup
+ *
+ * @param neutronSecurityGroup
+ * An instance of securityGroup.
+ */
+ private void updateSecurityGroup(NeutronSecurityGroup neutronSecurityGroup) throws IOException {
+ String secGroupUUID = neutronSecurityGroup.getSecurityGroupUUID();
+ try {
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ securityGroup.setDisplayName(neutronSecurityGroup.getSecurityGroupName());
+ boolean securityGroupUpdate;
+ securityGroupUpdate = apiConnector.update(securityGroup);
+ if (!securityGroupUpdate) {
+ LOGGER.warn("SecurityGroup Updation failed..");
+ } else {
+ LOGGER.info("SecurityGroup having UUID : " + securityGroup.getUuid() + " has been sucessfully updated...");
+ }
+ } catch (IOException ioEx) {
+ LOGGER.error("Exception : " + ioEx);
+ } catch (Exception ex) {
+ LOGGER.warn("Exception : " + ex);
+ }
+ }
+
+ /**
+ * Invoked when a security group deletion is requested to indicate if the
+ * specified neutron security group can be deleted.
+ *
+ * @param neutronSecurityGroup
+ * An instance of the {@link NeutronSecurityGroup} object to be
+ * deleted.
+ *
+ * @return A HTTP status code to the deletion request.
+ */
+ @Override
+ public int canDeleteNeutronSecurityGroup(NeutronSecurityGroup neutronSecurityGroup) {
+ apiConnector = Activator.apiConnector;
+ String secGroupUUID = neutronSecurityGroup.getSecurityGroupUUID();
+ try {
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ try {
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ if (securityGroup == null) {
+ LOGGER.warn("SecurityGroup does not exist for the specified UUID..");
+ return HttpURLConnection.HTTP_NOT_FOUND;
+ } else {
+ if (securityGroup.getVirtualMachineInterfaceBackRefs() != null) {
+ LOGGER.info("SecurityGroup with UUID : " + secGroupUUID + " cannot be deleted as it has port(s) associated with it....");
+ return HttpURLConnection.HTTP_FORBIDDEN;
+ }
+ return HttpURLConnection.HTTP_OK;
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception : " + e);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
+ }
+ }
+
+ /**
+ * Invoked to delete a {@link NeutronSecurityGroup} and take action after
+ * the {@link NeutronSecurityGroup} has been deleted.
+ *
+ * @param neutronSecurityGroup
+ * An instance of deleted {@link NeutronSecurityGroup} object.
+ */
+ @Override
+ public void neutronSecurityGroupDeleted(NeutronSecurityGroup neutronSecurityGroup) {
+ String secGroupUUID = neutronSecurityGroup.getSecurityGroupUUID();
+ try {
+ if (!(secGroupUUID.contains("-"))) {
+ secGroupUUID = Utils.uuidFormater(secGroupUUID);
+ }
+ secGroupUUID = UUID.fromString(secGroupUUID).toString();
+ SecurityGroup securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ apiConnector.delete(securityGroup);
+ LOGGER.info("SecurityGroup with UUID : " + secGroupUUID + " has been deleted successfully....");
+ securityGroup = (SecurityGroup) apiConnector.findById(SecurityGroup.class, secGroupUUID);
+ if (securityGroup == null) {
+ LOGGER.info("SecurityGroup deletion verified....");
+ } else {
+ LOGGER.info("SecurityGroup deletion failed....");
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception : " + e);
+ }
+ }
+
+}
import java.net.HttpURLConnection;
import java.util.Iterator;
import java.util.List;
+import java.util.UUID;
import net.juniper.contrail.api.ApiConnector;
import net.juniper.contrail.api.ObjectReference;
import net.juniper.contrail.api.types.VirtualNetwork;
import net.juniper.contrail.api.types.VnSubnetsType;
import net.juniper.contrail.api.types.VnSubnetsType.IpamSubnetType;
-//import net.juniper.contrail.api.types.VnSubnetsType.IpamSubnetType.AllocationPoolType;
import org.apache.commons.net.util.SubnetUtils;
import org.apache.commons.net.util.SubnetUtils.SubnetInfo;
LOGGER.error("Incorrect gateway IP....");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
+ String networkUUID = subnet.getNetworkUUID();
+ String subnetUUID = subnet.getSubnetUUID();
try {
- virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, subnet.getNetworkUUID());
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ boolean isValidNetworkUUID = Utils.isValidHexNumber(networkUUID);
+ boolean isValidSubnetUUID = Utils.isValidHexNumber(subnetUUID);
+ if (!isValidNetworkUUID || !isValidSubnetUUID) {
+ LOGGER.info("Badly formed Hexadecimal UUID...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ try {
+ virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
} catch (IOException e) {
LOGGER.error("Exception : " + e);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
LOGGER.error("The subnet already exists..");
return HttpURLConnection.HTTP_FORBIDDEN;
}
- return createSubnet(subnet, virtualnetwork);
- } catch (IOException ie) {
- LOGGER.error("IOException: " + ie);
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
} catch (Exception e) {
LOGGER.error("Exception: " + e);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
+ return HttpURLConnection.HTTP_OK;
}
}
*/
@Override
public void neutronSubnetCreated(NeutronSubnet subnet) {
- VirtualNetwork virtualNetwork = null;
+ String networkUUID = subnet.getNetworkUUID();
+ String subnetUUID = subnet.getSubnetUUID();
try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, subnet.getNetworkUUID());
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ createSubnet(subnet);
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
boolean ifSubnetExists = subnetExists(virtualNetwork.getNetworkIpam(), subnet);
if (ifSubnetExists) {
LOGGER.info("Subnet creation verified...");
}
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
+ } catch (IOException ie) {
+ LOGGER.error("IOException : " + ie);
+ } catch (Exception ex) {
+ LOGGER.error("Exception : ", ex);
}
}
*
* @return A HTTP status code to the creation request.
*/
- private int createSubnet(NeutronSubnet subnet, VirtualNetwork virtualNetwork) throws IOException {
+ private void createSubnet(NeutronSubnet subnet) throws IOException {
// add subnet properties to the virtual-network object
- VirtualNetwork virtualnetwork = mapSubnetProperties(subnet, virtualNetwork);
- boolean subnetCreate = apiConnector.update(virtualnetwork);
- if (!subnetCreate) {
- LOGGER.warn("Subnet creation failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } else {
- LOGGER.info("Subnet " + subnet.getCidr() + " sucessfully added to the network having UUID : " + virtualnetwork.getUuid());
- return HttpURLConnection.HTTP_OK;
+ String networkUUID = subnet.getNetworkUUID();
+ try {
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ }
+ try {
+ VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ virtualNetwork = mapSubnetProperties(subnet, virtualNetwork);
+ boolean subnetCreate = apiConnector.update(virtualNetwork);
+ if (!subnetCreate) {
+ LOGGER.warn("Subnet creation failed..");
+ } else {
+ LOGGER.info("Subnet " + subnet.getCidr() + " sucessfully added to the network having UUID : " + virtualNetwork.getUuid());
+ }
+ } catch (IOException ioEx) {
+ LOGGER.error("IOException : ", ioEx);
+ } catch (Exception ex) {
+ LOGGER.error("IOException : ", ex);
}
}
-
/**
* Invoked to add the NeutronSubnet properties to the virtualNetwork object.
*
* @return {@link VirtualNetwork}
*/
private VirtualNetwork mapSubnetProperties(NeutronSubnet subnet, VirtualNetwork vn) {
+ String subnetUUID = subnet.getSubnetUUID();
String[] ipPrefix = null;
NetworkIpam ipam = null;
VnSubnetsType vnSubnetsType = new VnSubnetsType();
SubnetType subnetType = new SubnetType();
try {
+ try {
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ } catch (Exception ex) {
+ LOGGER.error("UUID input incorrect", ex);
+ }
if (subnet.getCidr().contains("/")) {
ipPrefix = subnet.getCidr().split("/");
} else {
if (ipPrefix != null) {
subnetType.setIpPrefix(ipPrefix[0]);
subnetType.setIpPrefixLen(Integer.valueOf(ipPrefix[1]));
-// AllocationPoolType allocationPoolType = (AllocationPoolType) subnet.getAllocationPools();
IpamSubnetType ipamSubnetType = new IpamSubnetType();
ipamSubnetType.setSubnet(subnetType);
ipamSubnetType.setDefaultGateway(subnet.getGatewayIP());
- ipamSubnetType.setSubnetUuid(subnet.getSubnetUUID());
+ ipamSubnetType.setSubnetUuid(subnetUUID);
ipamSubnetType.setSubnetName(subnet.getName());
ipamSubnetType.setEnableDhcp(subnet.isEnableDHCP());
-// ipamSubnetType.addAllocationPools(allocationPoolType);
if (vn.getNetworkIpam() != null) {
for (ObjectReference<VnSubnetsType> ref : vn.getNetworkIpam()) {
vnSubnetsType = ref.getAttr();
LOGGER.error("Neutron Subnets can't be null..");
return HttpURLConnection.HTTP_BAD_REQUEST;
}
-// if (deltaSubnet.getGatewayIP() == null || ("").equals(deltaSubnet.getGatewayIP().toString())) {
-// LOGGER.error("Gateway IP can't be empty/null`..");
-// return HttpURLConnection.HTTP_BAD_REQUEST;
-// }
- if (deltaSubnet.getGatewayIP() != null){
- boolean isvalidGateway = validGatewayIP(originalSubnet, deltaSubnet.getGatewayIP());
- if (!isvalidGateway) {
- LOGGER.error("Incorrect gateway IP....");
- return HttpURLConnection.HTTP_BAD_REQUEST;
- }}
+ // if (deltaSubnet.getGatewayIP() == null ||
+ // ("").equals(deltaSubnet.getGatewayIP().toString())) {
+ // LOGGER.error("Gateway IP can't be empty/null`..");
+ // return HttpURLConnection.HTTP_BAD_REQUEST;
+ // }
+ if (deltaSubnet.getGatewayIP() != null) { // cant update gateway IP in
+ // OpenContrail
+ if (!originalSubnet.getGatewayIP().matches(deltaSubnet.getGatewayIP())) {
+ // boolean isvalidGateway = validGatewayIP(originalSubnet,
+ // deltaSubnet.getGatewayIP());
+ // if (!isvalidGateway) {
+ LOGGER.error(" Cannot update gateway IP..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ }
+ }
apiConnector = Activator.apiConnector;
+ VirtualNetwork virtualnetwork;
try {
- boolean ifSubnetExist = false;
- VirtualNetwork virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, originalSubnet.getNetworkUUID());
+ String networkUUID = originalSubnet.getNetworkUUID();
+ String subnetUUID = originalSubnet.getSubnetUUID();
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
List<ObjectReference<VnSubnetsType>> ipamRefs = virtualnetwork.getNetworkIpam();
if (ipamRefs != null) {
for (ObjectReference<VnSubnetsType> ref : ipamRefs) {
if (vnSubnetsType != null) {
List<VnSubnetsType.IpamSubnetType> subnets = vnSubnetsType.getIpamSubnets();
for (VnSubnetsType.IpamSubnetType subnetValue : subnets) {
- boolean doesSubnetExist = subnetValue.getSubnetUuid().matches(originalSubnet.getSubnetUUID());
+ boolean doesSubnetExist = subnetValue.getSubnetUuid().matches(subnetUUID);
if (doesSubnetExist) {
- if(deltaSubnet.getGatewayIP() != null){
- subnetValue.setDefaultGateway(deltaSubnet.getGatewayIP());
- }
- if(deltaSubnet.getEnableDHCP() != null){
- subnetValue.setEnableDhcp(deltaSubnet.isEnableDHCP());
- }
- if(deltaSubnet.getName() != null){
- subnetValue.setSubnetName(deltaSubnet.getName());
- }
- ifSubnetExist = true;
+ return HttpURLConnection.HTTP_OK;
+ } else {
+ LOGGER.warn(" No subnet exists for specified UUID..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
}
}
}
}
- if (ifSubnetExist) {
- boolean subnetUpdate = apiConnector.update(virtualnetwork);
- if (!subnetUpdate) {
- LOGGER.warn("Subnet upadtion failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } else {
- LOGGER.info(" Subnet " + originalSubnet.getCidr() + " sucessfully updated. ");
- return HttpURLConnection.HTTP_OK;
- }
- } else {
- LOGGER.warn("Subnet upadtion failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
} catch (IOException e) {
LOGGER.error("Exception : " + e);
return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
+ LOGGER.warn("Subnet updation failed..");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
/**
public void neutronSubnetUpdated(NeutronSubnet subnet) {
try {
boolean ifSubnetExist = false;
- VirtualNetwork virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, subnet.getNetworkUUID());
+ String networkUUID = subnet.getNetworkUUID();
+ String subnetUUID = subnet.getSubnetUUID();
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ VirtualNetwork virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
List<ObjectReference<VnSubnetsType>> ipamRefs = virtualnetwork.getNetworkIpam();
if (ipamRefs != null) {
for (ObjectReference<VnSubnetsType> ref : ipamRefs) {
if (vnSubnetsType != null) {
List<VnSubnetsType.IpamSubnetType> subnets = vnSubnetsType.getIpamSubnets();
for (VnSubnetsType.IpamSubnetType subnetValue : subnets) {
- boolean doesSubnetExist = subnetValue.getDefaultGateway().matches(subnet.getGatewayIP());
+ boolean doesSubnetExist = subnetValue.getSubnetUuid().matches(subnetUUID);
if (doesSubnetExist) {
+ // if(deltaSubnet.getGatewayIP() != null){
+ // //Cannot update default gateway, enableDHCP
+ // and cidr
+ // subnetValue.setDefaultGateway(deltaSubnet.getGatewayIP());
+ // }
+ // if(deltaSubnet.getEnableDHCP() != null){
+ // subnetValue.setEnableDhcp(deltaSubnet.isEnableDHCP());
+ // }
+ if (subnet.getName() != null) {
+ subnetValue.setSubnetName(subnet.getName());
+ }
ifSubnetExist = true;
}
}
}
}
if (ifSubnetExist) {
- LOGGER.info("Subnet upadtion verified..");
+ boolean subnetUpdate = apiConnector.update(virtualnetwork);
+ if (!subnetUpdate) {
+ LOGGER.warn("Subnet upadtion failed..");
+ } else {
+ LOGGER.info(" Subnet " + subnet.getCidr() + " has been sucessfully updated. ");
+ }
} else {
LOGGER.warn("Subnet upadtion failed..");
}
+ virtualnetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ List<ObjectReference<VnSubnetsType>> ipamRef = virtualnetwork.getNetworkIpam();
+ if (ipamRef != null) {
+ for (ObjectReference<VnSubnetsType> ref : ipamRef) {
+ VnSubnetsType vnSubnetsType = ref.getAttr();
+ if (vnSubnetsType != null) {
+ List<VnSubnetsType.IpamSubnetType> subnets = vnSubnetsType.getIpamSubnets();
+ for (VnSubnetsType.IpamSubnetType subnetValue : subnets) {
+ boolean isSubnetUpdated = subnetValue.getSubnetName().matches(subnet.getName());
+ if (isSubnetUpdated) {
+ LOGGER.info("Subnet upadtion verified..");
+ } else {
+ LOGGER.warn("Subnet upadtion failed..");
+ }
+ }
+ }
+ }
+ }
} catch (Exception ex) {
LOGGER.error("Exception : " + ex);
}
public int canDeleteSubnet(NeutronSubnet subnet) {
apiConnector = Activator.apiConnector;
VirtualNetwork virtualNetwork = null;
+ String networkUUID = subnet.getNetworkUUID();
+ String subnetUUID = subnet.getSubnetUUID();
try {
- virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, subnet.getNetworkUUID());
- boolean subnetDelete = deleteSubnet(subnet, virtualNetwork);
- if (!subnetDelete) {
- LOGGER.error("Subnet deletion failed..");
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- } else {
- LOGGER.info("Subnet " + subnet.getCidr() + " sucessfully deleted from network : " + virtualNetwork.getUuid());
- return HttpURLConnection.HTTP_NO_CONTENT;
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
}
- } catch (Exception e) {
- LOGGER.error("Exception : ", e.getMessage());
- return HttpURLConnection.HTTP_INTERNAL_ERROR;
- }
- }
-
- boolean validGatewayIP(NeutronSubnet subnet, String ipAddress) {
- try {
-
- SubnetUtils util = new SubnetUtils(subnet.getCidr());
- SubnetInfo info = util.getInfo();
- boolean inRange = info.isInRange(ipAddress);
- if (!inRange) {
- return false;
- } else {
- // ip available in allocation pool
- Iterator<NeutronSubnet_IPAllocationPool> i = subnet.getAllocationPools().iterator();
- while (i.hasNext()) {
- NeutronSubnet_IPAllocationPool pool = i.next();
- if (pool.contains(ipAddress)) {
- return true;
- }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ boolean doesSubnetExist = subnetExists(virtualNetwork.getNetworkIpam(), subnet);
+ if(virtualNetwork.getNetworkIpam()!=null){
+ if (virtualNetwork.getNetworkIpam().get(0).getAttr().getIpamSubnets().size() == 1 && virtualNetwork.getFloatingIpPools() != null) {
+ LOGGER.error("Cannot Delete subnet / IP Block, Floating Pool(s) in use...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
}
- return true;
+ }
+ if (!doesSubnetExist) {
+ LOGGER.error("No subnet exists with specified UUID...");
+ return HttpURLConnection.HTTP_BAD_REQUEST;
+ } else {
+ return HttpURLConnection.HTTP_OK;
}
- } catch (Exception e) {
- LOGGER.error("Exception : " + e);
- return false;
+ } catch (Exception ex) {
+ LOGGER.error("Exception : " + ex);
+ return HttpURLConnection.HTTP_INTERNAL_ERROR;
}
}
*/
@Override
public void neutronSubnetDeleted(NeutronSubnet subnet) {
+ String networkUUID = subnet.getNetworkUUID();
+ String subnetUUID = subnet.getSubnetUUID();
+ VirtualNetwork virtualNetwork;
try {
- VirtualNetwork virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, subnet.getNetworkUUID());
+ if (!(networkUUID.contains("-"))) {
+ networkUUID = Utils.uuidFormater(networkUUID);
+ }
+ networkUUID = UUID.fromString(networkUUID).toString();
+ if (!(subnetUUID.contains("-"))) {
+ subnetUUID = Utils.uuidFormater(subnetUUID);
+ }
+ subnetUUID = UUID.fromString(subnetUUID).toString();
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
+ boolean subnetDelete = deleteSubnet(subnet, virtualNetwork);
+ if (!subnetDelete) {
+ LOGGER.error("Subnet deletion failed..");
+ } else {
+ LOGGER.info("Subnet " + subnet.getCidr() + " sucessfully deleted from network : " + virtualNetwork.getUuid());
+ }
+
+ virtualNetwork = (VirtualNetwork) apiConnector.findById(VirtualNetwork.class, networkUUID);
boolean ifSubnetExist = subnetExists(virtualNetwork.getNetworkIpam(), subnet);
if (!ifSubnetExist) {
LOGGER.info("Subnet deletion verified..");
LOGGER.error("Exception : " + ex);
}
}
-}
+
+ boolean validGatewayIP(NeutronSubnet subnet, String ipAddress) {
+ try {
+
+ SubnetUtils util = new SubnetUtils(subnet.getCidr());
+ SubnetInfo info = util.getInfo();
+ boolean inRange = info.isInRange(ipAddress);
+ if (!inRange) {
+ return false;
+ } else {
+ // ip available in allocation pool
+ Iterator<NeutronSubnet_IPAllocationPool> i = subnet.getAllocationPools().iterator();
+ while (i.hasNext()) {
+ NeutronSubnet_IPAllocationPool pool = i.next();
+ if (pool.contains(ipAddress)) {
+ return true;
+ }
+ }
+ return true;
+ }
+ } catch (Exception e) {
+ LOGGER.error("Exception : " + e);
+ return false;
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*\r
+ * Copyright (C) 2014 Juniper Networks, Inc.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ */\r
+package org.opendaylight.plugin2oc.neutron;\r
+\r
+import java.util.regex.Pattern;\r
+\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+public class Utils {\r
+\r
+ static final Logger LOGGER = LoggerFactory.getLogger(Utils.class);\r
+\r
+ /**\r
+ * Invoked to format the UUID if UUID is not in correct format.\r
+ *\r
+ * @param String\r
+ * An instance of UUID string.\r
+ *\r
+ * @return Correctly formated UUID string.\r
+ */\r
+ public static String uuidFormater(String uuid) {\r
+ String uuidPattern = null;\r
+ String id1 = uuid.substring(0, 8);\r
+ String id2 = uuid.substring(8, 12);\r
+ String id3 = uuid.substring(12, 16);\r
+ String id4 = uuid.substring(16, 20);\r
+ String id5 = uuid.substring(20, 32);\r
+ uuidPattern = (id1 + "-" + id2 + "-" + id3 + "-" + id4 + "-" + id5);\r
+ return uuidPattern;\r
+ }\r
+ /**\r
+ * Invoked to check the UUID if UUID is not a valid hexa-decimal number.\r
+ *\r
+ * @param String\r
+ * An instance of UUID string.\r
+ *\r
+ * @return boolean value.\r
+ */\r
+ public static boolean isValidHexNumber(String uuid) {\r
+ try {\r
+ Pattern hex = Pattern.compile("^[0-9a-f]+$");\r
+ uuid = uuid.replaceAll("-", "");\r
+ boolean valid = hex.matcher(uuid).matches();\r
+ if (uuid.length() != 32) {\r
+ return false;\r
+ }\r
+ if (valid) {\r
+ return true;\r
+ } else {\r
+ return false;\r
+ }\r
+ } catch (NumberFormatException ex) {\r
+ LOGGER.error("Exception : " + ex);\r
+ return false;\r
+ }\r
+ }\r
+}\r
+/*
+ * Copyright (C) 2014 Juniper Networks, Inc.
+ *
+ * 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.plugin2oc.neutron;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.net.HttpURLConnection;
+import java.util.ArrayList;
+import java.util.List;
import net.juniper.contrail.api.ApiConnector;
+import net.juniper.contrail.api.ApiPropertyBase;
+import net.juniper.contrail.api.ObjectReference;
import net.juniper.contrail.api.types.FloatingIp;
import net.juniper.contrail.api.types.FloatingIpPool;
import net.juniper.contrail.api.types.Project;
import static org.mockito.Mockito.when;
import org.opendaylight.controller.networkconfig.neutron.NeutronFloatingIP;
-
+/**
+ * Test Class for Neutron FloatingIp.
+ */
public class FloatingIpHandlerTest {
FloatingIpHandler floatingIphandler;
@Test
public void testCanCreateFloatingIPUuidNull() {
Activator.apiConnector = mockedApiConnector;
- when(mockedNeutronFloatingIP.getFloatingIPUUID()).thenReturn("");
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canCreateFloatingIP(mockedNeutronFloatingIP));
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ neutronFloatingIP.setFloatingIPUUID("");
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
}
/* Test method to check if neutron Tenant UUID is null */
@Test
public void testCanCreateTenantUUIDNull() {
Activator.apiConnector = mockedApiConnector;
- when(mockedNeutronFloatingIP.getTenantUUID()).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canCreateFloatingIP(mockedNeutronFloatingIP));
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ neutronFloatingIP.setTenantUUID(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
}
/* Test method to check if neutron Floating IP Address is null */
@Test
public void testCanCreateFloatingIPAddressNull() {
Activator.apiConnector = mockedApiConnector;
- when(mockedNeutronFloatingIP.getTenantUUID()).thenReturn("100071fe-0216-46bc-a3e6-1ff582fbd329");
- when(mockedNeutronFloatingIP.getFloatingIPAddress()).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canCreateFloatingIP(mockedNeutronFloatingIP));
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ neutronFloatingIP.setFloatingIPAddress(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
+ }
+
+ /* Test method to check if neutron Floating IP canCreate FIP already exist */
+ @Test
+ public void testCanCreateFloatingIPExist() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(mockedFloatingIp);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
}
/* Test method to check if neutron Floating IP canCreate project is null */
public void testCanCreateFloatingProjectNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(null);
when(mockedApiConnector.findById(Project.class, neutronFloatingIP.getTenantUUID())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_NOT_FOUND, floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
}
- /* Test method to check if neutron Floating IP canCreate project is null */
+ /*Test method to check if neutron Floating IP canCreate Virtual network not found*/
@Test
- public void testCanCreateFloatingVirtualNetworkNull() throws IOException {
+ public void testCanCreateFloatingVirtualNetNotFound() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(mockedFloatingIp);
when(mockedApiConnector.findById(Project.class, neutronFloatingIP.getTenantUUID())).thenReturn(mockProject);
when(mockedApiConnector.findById(VirtualNetwork.class, neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_NOT_FOUND, floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
}
- // /* Test method to check if neutron Floating IP canCreate project is
- // null*/
- // @Test
- // public void testCanCreateFloatingIpNull() throws IOException {
- // Activator.apiConnector = mockedApiConnector;
- // NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
- // when(mockedApiConnector.findById(Project.class,
- // neutronFloatingIP.getTenantUUID())).thenReturn(mockProject);
- // when(mockedApiConnector.findById(VirtualNetwork.class,
- // neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(mockedVirtualNetwork);
- // when(mockedApiConnector.findById(FloatingIpPool.class,
- // mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(null);
- // assertEquals(HttpURLConnection.HTTP_NOT_FOUND,
- // floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
- // }
+ /* Test method to check if canCreate neutron Floating ip pool cannot not find */
+ @Test
+ public void testCanCreateFloatingIpPoolNull() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ when(mockedApiConnector.findById(FloatingIp.class,neutronFloatingIP.getFloatingIPUUID())).thenReturn(null);
+ when(mockedApiConnector.findById(Project.class,neutronFloatingIP.getTenantUUID())).thenReturn(mockProject);
+ when(mockedApiConnector.findById(VirtualNetwork.class,neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ List<ObjectReference<ApiPropertyBase>> fipPoolList = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ fipPoolList.add(new ObjectReference<ApiPropertyBase>(mockFloatingIpPool.getQualifiedName(), null));
+ fipPoolList.get(0).setReference(mockFloatingIpPool.getQualifiedName(), null, "", "119570f2-17b1-4fc3-99ec-1b7f7778a29a");
+ when(mockedVirtualNetwork.getFloatingIpPools()).thenReturn(fipPoolList);
+ when(mockedApiConnector.findById(FloatingIpPool.class,mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND,floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
+ }
+
+ /* Test method to check if canCreate neutron Floating ip pool return 200 ok */
+ @Test
+ public void testCanCreateFloatingIpOk() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ when(mockedApiConnector.findById(FloatingIp.class,neutronFloatingIP.getFloatingIPUUID())).thenReturn(null);
+ when(mockedApiConnector.findById(Project.class,neutronFloatingIP.getTenantUUID())).thenReturn(mockProject);
+ when(mockedApiConnector.findById(VirtualNetwork.class,neutronFloatingIP.getFloatingNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ List<ObjectReference<ApiPropertyBase>> fipPoolList = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ fipPoolList.add(new ObjectReference<ApiPropertyBase>(mockFloatingIpPool.getQualifiedName(), null));
+ fipPoolList.get(0).setReference(mockFloatingIpPool.getQualifiedName(), null, "", "119570f2-17b1-4fc3-99ec-1b7f7778a29a");
+ when(mockedVirtualNetwork.getFloatingIpPools()).thenReturn(fipPoolList);
+ when(mockedApiConnector.findById(FloatingIpPool.class,mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(mockFloatingIpPool);
+ assertEquals(HttpURLConnection.HTTP_OK,floatingIphandler.canCreateFloatingIP(neutronFloatingIP));
+ }
+
/* Test method to check if can update FloatingIP Null object */
@Test
public void testcanUpdateFloatingIPObjNull() throws IOException {
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canUpdateFloatingIP(null, null));
}
- /* Test method to check if can update FloatingIP Null */
+ /* Test method to check if can update FloatingIP obj not found */
@Test
public void testcanUpdateFloatingIPNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
NeutronFloatingIP deltaNeutronFloatingIP = deltaNeutronObjectUpdate();
when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingIPUUID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, floatingIphandler.canUpdateFloatingIP(deltaNeutronFloatingIP, neutronFloatingIP));
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, floatingIphandler.canUpdateFloatingIP(deltaNeutronFloatingIP, neutronFloatingIP));
}
- /* Test method to check if can update FloatingIP failed */
+ /* Test method to check if can update FloatingIP return status OK */
@Test
- public void testcanUpdateFloatingIPFailed() throws IOException {
+ public void testcanUpdateFloatingIPOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
NeutronFloatingIP deltaNeutronFloatingIP = deltaNeutronObjectUpdate();
- deltaNeutronFloatingIP.setPortUUID(null);
when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingIPUUID())).thenReturn(mockedFloatingIp);
- when(mockedApiConnector.update(mockedFloatingIp)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, floatingIphandler.canUpdateFloatingIP(deltaNeutronFloatingIP, neutronFloatingIP));
- }
-
- /* Test method to check if can update FloatingIP updated */
- @Test
- public void testcanUpdateFloatingIPTrue() throws IOException {
- Activator.apiConnector = mockedApiConnector;
- NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
- NeutronFloatingIP deltaNeutronFloatingIP = deltaNeutronObjectUpdate();
- deltaNeutronFloatingIP.setPortUUID(null);
- when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingIPUUID())).thenReturn(mockedFloatingIp);
- when(mockedApiConnector.update(mockedFloatingIp)).thenReturn(true);
assertEquals(HttpURLConnection.HTTP_OK, floatingIphandler.canUpdateFloatingIP(deltaNeutronFloatingIP, neutronFloatingIP));
}
- /* Test method to check if can delete FloatingIP Null object */
- @Test
- public void testcanDeleteFloatingIPObjNull() throws IOException {
- Activator.apiConnector = mockedApiConnector;
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, floatingIphandler.canDeleteFloatingIP(null));
- }
-
/* Test method to check if can delete FloatingIP not found */
@Test
public void testcanDeleteFloatingIPNotFound() throws IOException {
when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingIPUUID())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_NOT_FOUND, floatingIphandler.canDeleteFloatingIP(neutronFloatingIP));
}
+
+ /* Test method to check if can delete FloatingIP returns status 200 ok */
+ @Test
+ public void testcanDeleteFloatingIPOK() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronFloatingIP neutronFloatingIP = defaultNeutronObject();
+ when(mockedApiConnector.findById(FloatingIp.class, neutronFloatingIP.getFloatingIPUUID())).thenReturn(mockedFloatingIp);
+ assertEquals(HttpURLConnection.HTTP_OK, floatingIphandler.canDeleteFloatingIP(neutronFloatingIP));
+ }
}
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.powermock.api.easymock.PowerMock.expectNew;
import java.io.IOException;
import java.net.HttpURLConnection;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
+
import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
/**
* Test Class for Neutron Network.
*/
-@PrepareForTest({ NetworkHandler.class, VirtualNetwork.class })
-@RunWith(PowerMockRunner.class)
+
public class NetworkHandlerTest {
NetworkHandler networkHandler;
NetworkHandler mockednetworkHandler = mock(NetworkHandler.class);
NeutronNetwork mockedNeutronNetwork = mock(NeutronNetwork.class);
ApiConnector mockedApiConnector = mock(ApiConnector.class);
- ApiConnector mockedApiConnector1 = Mockito.mock(ApiConnector.class);
VirtualNetwork mockedVirtualNetwork = mock(VirtualNetwork.class);
Project mockedProject = mock(Project.class);
FloatingIpPool mockedFloatingIpPool = mock(FloatingIpPool.class);
return deltaNetwork;
}
- /* dummy params for Nfloating IP */
+ /* dummy params for floating IP */
public FloatingIpPool defaultFloatingIpPoolObject() {
FloatingIpPool floatingIpPoolObj = new FloatingIpPool();
String fipId = UUID.randomUUID().toString();
assertEquals(HttpURLConnection.HTTP_NOT_FOUND, networkHandler.canCreateNetwork(neutronNetwork));
}
- /* Test method to check neutron network with virtual network Existence */
+ /*
+ * Test method to check neutron network create with same name
+ */
@Test
- public void testCanCreateNetworkVirtualNetworkExists() throws IOException {
+ public void testcanCreateNetworkByNameExist() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findByName(VirtualNetwork.class, mockedProject, neutronNetwork.getNetworkName())).thenReturn("network-001");
assertEquals(HttpURLConnection.HTTP_FORBIDDEN, networkHandler.canCreateNetwork(neutronNetwork));
}
- /* Test method to check neutron network create Failed */
- @Test
- public void testCanCreateNetworkFailed() throws Exception {
- Activator.apiConnector = mockedApiConnector;
- NeutronNetwork neutronNetwork = defaultNeutronObject();
- when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(null);
- VirtualNetwork mockedVirtualNet = PowerMock.createNiceMock(VirtualNetwork.class);
- expectNew(VirtualNetwork.class).andReturn(mockedVirtualNet);
- when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
- when(mockedApiConnector.create(mockedVirtualNet)).thenReturn(false);
- PowerMock.replay(mockedVirtualNet, VirtualNetwork.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, networkHandler.canCreateNetwork(neutronNetwork));
- }
-
- /* Test method to check neutron network create with HTTP OK */
+ /*
+ * Test method to check neutron can create network OK
+ */
@Test
- public void testCanCreateNetworkOK() throws Exception {
+ public void testcanCreateNetworkOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(null);
- VirtualNetwork mockedVirtualNet = PowerMock.createNiceMock(VirtualNetwork.class);
- expectNew(VirtualNetwork.class).andReturn(mockedVirtualNet);
- when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
- when(mockedApiConnector.create(mockedVirtualNet)).thenReturn(true);
- PowerMock.replay(mockedVirtualNet, VirtualNetwork.class);
+ when(mockedApiConnector.findByName(VirtualNetwork.class, mockedProject, neutronNetwork.getNetworkName())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_OK, networkHandler.canCreateNetwork(neutronNetwork));
}
- /* Test method to check if neutron network is null */
+ /* Test method to check if neutron network object is null */
@Test
public void testCanUpdateNetworkNull() {
Activator.apiConnector = mockedApiConnector;
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, networkHandler.canUpdateNetwork(null, null));
}
- /*
- * Test method to check if neutron network update with null virtual network
- */
+ /* Test method to check if neutron network name is empty string */
@Test
- public void testCanUpdateNetworkVirtualNetworkNull() throws IOException {
+ public void testCanUpdateNetworkNameEmpty() {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
NeutronNetwork deltaNeutronNetwork = defaultNeutronObjectUpdate();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
+ deltaNeutronNetwork.setNetworkName("");
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
}
- /* Test method to check if neutron network update OK */
+ /*
+ * Test method to check neutron network update with same name
+ */
@Test
- public void testCanUpdateNetworkFailed() throws Exception {
+ public void testcanUpdateNetworkByNameExist() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
NeutronNetwork deltaNeutronNetwork = defaultNeutronObjectUpdate();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
+ when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findByName(VirtualNetwork.class, mockedProject, neutronNetwork.getNetworkName())).thenReturn("network-001");
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
}
- /* Test method to check if neutron network update create Foating IP failed */
+ /*
+ * Test method to check if neutron network update with null virtual network
+ */
@Test
- public void testCanUpdateNetworkCreateFloatingIpFailed() throws Exception {
+ public void testCanUpdateNetworkVirtualNetworkNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
NeutronNetwork deltaNeutronNetwork = defaultNeutronObjectUpdate();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- neutronNetwork.setRouterExternal(false);
- deltaNeutronNetwork.setRouterExternal(true);
- when(mockedApiConnector.findById(VirtualNetwork.class, mockedVirtualNetwork.getUuid())).thenReturn(mockedVirtualNetwork);
- FloatingIpPool floatingIpPool = PowerMock.createNiceMock(FloatingIpPool.class);
- expectNew(FloatingIpPool.class).andReturn(floatingIpPool);
- floatingIpPool.setParent(mockedVirtualNetwork);
- when(mockedApiConnector.create(floatingIpPool)).thenReturn(false);
- PowerMock.replay(floatingIpPool, FloatingIpPool.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
-
+ when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findByName(VirtualNetwork.class, mockedProject, neutronNetwork.getNetworkName())).thenReturn(null);
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
}
/*
- * Test method to check neutron network updated successfully after
- * floatingIP created
+ * Test method to check if neutron network update with OK
*/
@Test
- public void testCanUpdateNetworkOKif() throws Exception {
+ public void testCanUpdateNetworkVirtualNetworkOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
- NeutronNetwork deltaNetwork = defaultNeutronObjectUpdate();
+ NeutronNetwork deltaNeutronNetwork = defaultNeutronObjectUpdate();
+ when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findByName(VirtualNetwork.class, mockedProject, neutronNetwork.getNetworkName())).thenReturn(null);
when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- mockedVirtualNetwork.setName(deltaNetwork.getNetworkName());
- mockedVirtualNetwork.setDisplayName(deltaNetwork.getNetworkName());
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- neutronNetwork.setRouterExternal(false);
- deltaNetwork.setRouterExternal(true);
- when(mockedApiConnector.findById(VirtualNetwork.class, mockedVirtualNetwork.getUuid())).thenReturn(mockedVirtualNetwork);
- FloatingIpPool floatingIpPool = PowerMock.createNiceMock(FloatingIpPool.class);
- expectNew(FloatingIpPool.class).andReturn(floatingIpPool);
- String fipId = UUID.randomUUID().toString();
- floatingIpPool.setName(fipId);
- floatingIpPool.setDisplayName(fipId);
- floatingIpPool.setUuid(fipId);
- floatingIpPool.setParent(mockedVirtualNetwork);
- when(mockedApiConnector.create(floatingIpPool)).thenReturn(true);
- PowerMock.replay(floatingIpPool, FloatingIpPool.class);
- assertEquals(HttpURLConnection.HTTP_OK, networkHandler.canUpdateNetwork(deltaNetwork, neutronNetwork));
+ assertEquals(HttpURLConnection.HTTP_OK, networkHandler.canUpdateNetwork(deltaNeutronNetwork, neutronNetwork));
}
- // /* Test method to check neutron network updated failed due to Floating Ip
- // pool is failed to removed after update network..*/
- // @Test
- // public void testupdateNetworkFloatingIPremoveFailed() throws Exception {
- // Activator.apiConnector = mockedApiConnector;
- // NeutronNetwork neutronNetwork = defaultNeutronObject();
- // NeutronNetwork deltaNetwork =defaultNeutronObjectUpdate();
- // when(mockedApiConnector.findById(VirtualNetwork.class,neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- // mockedVirtualNetwork.setName(deltaNetwork.getNetworkName());
- // mockedVirtualNetwork.setDisplayName(deltaNetwork.getNetworkName());
- // when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- // neutronNetwork.setRouterExternal(true);
- // deltaNetwork.setRouterExternal(false);
- // ObjectReference<ApiPropertyBase> ref = new ObjectReference<>();
- // List<ObjectReference<ApiPropertyBase>> pool = new
- // ArrayList<ObjectReference<ApiPropertyBase>>();
- // FloatingIpPool fp = new FloatingIpPool();
- // List<String> temp = new ArrayList<String>();
- // for (int i = 0; i < 1; i++) {
- // String fipId = UUID.randomUUID().toString();
- // fp.setDisplayName(fipId);
- // fp.setName(fipId);
- // fp.setUuid(fipId);
- // ref.setReference(temp,"", "",""); //To do do not have api property base
- // reference
- // pool.add(i, ref);
- // }
- // when(mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid()).thenReturn("000570f2-17b1-4fc3-99ec-1b7f7778a29a");
- // when(mockedApiConnector.findById(FloatingIpPool.class,mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(mockedFloatingIpPool);
- // when(mockedApiConnector.findById(FloatingIpPool.class,mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(mockedFloatingIpPool);
- // PowerMock.replay(floatingIpPool, FloatingIpPool.class);
- // assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR,networkHandler.canUpdateNetwork(deltaNetwork,
- // neutronNetwork));
- // }
-
- // /* Test method to check neutron network updated successfully after
- // floatingIP removal..*/
- // @Test
- // public void testupdateNetworkOKelse() throws Exception {
- // Activator.apiConnector = mockedApiConnector;
- // NeutronNetwork neutronNetwork = defaultNeutronObject();
- // NeutronNetwork deltaNetwork =defaultNeutronObjectUpdate();
- // when(mockedApiConnector.findById(VirtualNetwork.class,neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- // mockedVirtualNetwork.setName(deltaNetwork.getNetworkName());
- // mockedVirtualNetwork.setDisplayName(deltaNetwork.getNetworkName());
- // when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- // neutronNetwork.setRouterExternal(true);
- // deltaNetwork.setRouterExternal(false);
- // ObjectReference<ApiPropertyBase> ref = new ObjectReference<>();
- // List<ObjectReference<ApiPropertyBase>> pool = new
- // ArrayList<ObjectReference<ApiPropertyBase>>();
- // FloatingIpPool fp = new FloatingIpPool();
- // List<String> temp = new ArrayList<String>();
- // for (int i = 0; i < 1; i++) {
- // String fipId = UUID.randomUUID().toString();
- // fp.setDisplayName(fipId);
- // fp.setName(fipId);
- // fp.setUuid(fipId);
- // ref.setReference(temp,"", "","");//To do do not have api property base
- // reference
- // pool.add(i, ref);
- // }
- // when(mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid()).thenReturn("000570f2-17b1-4fc3-99ec-1b7f7778a29a");
- // when(mockedApiConnector.findById(FloatingIpPool.class,mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(mockedFloatingIpPool);
- // when(mockedApiConnector.findById(FloatingIpPool.class,mockedVirtualNetwork.getFloatingIpPools().get(0).getUuid())).thenReturn(null);
- //
- // assertEquals(HttpURLConnection.HTTP_OK,
- // networkHandler.canUpdateNetwork(deltaNetwork, neutronNetwork));
- // }
-
/* Test method to check delete network with when Port exist */
@Test
public void testcanDeleteNetworkPortExists() throws IOException {
}
/*
- * Test method to check neutron network creation of virtual network failed
+ * Test method to check neutron network deletion with Ok
*/
@Test
- public void testcreateNetworkVirtualNetworkFalse() throws Exception {
+ public void testcanDeleteNetworkOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronNetwork neutronNetwork = defaultNeutronObject();
- VirtualNetwork mockedVirtualNet = PowerMock.createNiceMock(VirtualNetwork.class);
- expectNew(VirtualNetwork.class).andReturn(mockedVirtualNet);
- when(mockedApiConnector.findById(Project.class, neutronNetwork.getTenantID())).thenReturn(mockedProject);
- when(mockedApiConnector.create(mockedVirtualNet)).thenReturn(false);
- PowerMock.replay(mockedVirtualNet, VirtualNetwork.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, networkHandler.canCreateNetwork(neutronNetwork));
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronNetwork.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ List<ObjectReference<ApiPropertyBase>> test = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ when(mockedVirtualNetwork.getVirtualMachineInterfaceBackRefs()).thenReturn(test);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, networkHandler.canDeleteNetwork(neutronNetwork));
}
}
/*
-d * Copyright (C) 2014 Juniper Networks, Inc.
+ * Copyright (C) 2014 Juniper Networks, Inc.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
import java.util.List;
import net.juniper.contrail.api.ApiConnector;
+import net.juniper.contrail.api.ObjectReference;
import net.juniper.contrail.api.types.InstanceIp;
import net.juniper.contrail.api.types.Project;
+import net.juniper.contrail.api.types.SubnetType;
import net.juniper.contrail.api.types.VirtualMachine;
import net.juniper.contrail.api.types.VirtualMachineInterface;
import net.juniper.contrail.api.types.VirtualNetwork;
+import net.juniper.contrail.api.types.VnSubnetsType;
import org.opendaylight.controller.networkconfig.neutron.NeutronPort;
import org.opendaylight.controller.networkconfig.neutron.Neutron_IPs;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.powermock.api.easymock.PowerMock.expectNew;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
/**
- * Test Class for Neutron Network.
+ * Test Class for Neutron Port.
*/
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ PortHandler.class, VirtualMachineInterface.class, InstanceIp.class })
+
public class PortHandlerTest {
PortHandler porthandler;
PortHandler mockedporthandler = mock(PortHandler.class);
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canCreatePort(null));
}
- /* Test method to check if neutron port device ID is empty */
+ /* Test method to check if neutron port PortUUID is empty */
@Test
- public void testCanCreateIdEmtpy() {
+ public void testCanCreatePortIdEmtpy() {
Activator.apiConnector = mockedApiConnector;
- NeutronPort neutronPort = new NeutronPort();
+ NeutronPort neutronPort = defaultNeutronPortObject();
neutronPort.setPortUUID("");
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canCreatePort(neutronPort));
}
/* Test method to check if neutron port tenant id is null */
@Test
- public void testCanCreateTenantIdNull() {
+ public void testCanCreatePortTenantIdNull() {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
neutronPort.setTenantID(null);
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canCreatePort(neutronPort));
}
- /* Test method to check if neutron port fixed IP is null */
- @Test
- public void testCanCreateFixedIPNull() {
- Activator.apiConnector = mockedApiConnector;
- NeutronPort neutronPort = defaultNeutronPortObject();
- neutronPort.setFixedIPs(null);
- when(mockedNeutronPort.getFixedIPs()).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, porthandler.canCreatePort(neutronPort));
- }
-
- /* Test method to check if neutron port is already exist */
+ /* Test method to check if neutron port name is null */
@Test
- public void testCanCreatePortExist() throws IOException {
+ public void testCanCreatePortNameNull() {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getID())).thenReturn(mockedVirtualMachineInterface);
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, porthandler.canCreatePort(neutronPort));
+ neutronPort.setName("");
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canCreatePort(neutronPort));
}
- /* Test method to check if Virtual Machine Is Not Created */
+ /* Test method to check if neutron port and network belongs to same tenant */
@Test
- public void testCanCreatePortVirtualMachineNotCreated() throws Exception {
+ public void testCanCreatePortSameTenant() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
- VirtualMachine mockedvirtualMachine = PowerMock.createNiceMock(VirtualMachine.class);
- expectNew(VirtualMachine.class).andReturn(mockedvirtualMachine);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(null);
- when(mockedApiConnector.create(mockedvirtualMachine)).thenReturn(false);
- PowerMock.replay(mockedvirtualMachine, VirtualMachine.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, porthandler.canCreatePort(neutronPort));
+ when(mockedVirtualNetwork.getParentUuid()).thenReturn("f00071fe-0216-46bc-a3e6-1ff582fbd324");
+ when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canCreatePort(neutronPort));
}
/* Test method to check if Project is not available */
@Test
- public void testCanCreatePortProjectSearch() throws Exception {
+ public void testCanCreatePortProjectNotFound() throws Exception {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
- when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(null);
when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_NOT_FOUND, porthandler.canCreatePort(neutronPort));
}
- /* Test method to check if Virtual Network does not exist */
+ /* Test method to check if neutron port create exist */
@Test
- public void testCanCreatePortVirtualNetworkNotExist() throws IOException {
- Activator.apiConnector = mockedApiConnector;
- NeutronPort neutronPort = defaultNeutronPortObject();
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getID())).thenReturn(null);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
- when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canCreatePort(neutronPort));
- }
-
- /* Test method to check if virtual machine interface creation failed */
- @Test
- public void testCanCreateVirtualMachineInterface() throws Exception {
+ public void testCanCreatePortExist() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
- VirtualMachineInterface mockedVirtualMachineInterface = PowerMock.createNiceMock(VirtualMachineInterface.class);
- expectNew(VirtualMachineInterface.class).andReturn(mockedVirtualMachineInterface);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getID())).thenReturn(null);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
+ when(mockedVirtualNetwork.getParentUuid()).thenReturn(neutronPort.getTenantID());
when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedApiConnector.create(mockedVirtualMachineInterface)).thenReturn(false);
- PowerMock.replay(mockedVirtualMachineInterface, VirtualMachineInterface.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, porthandler.canCreatePort(neutronPort));
+ when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(mockedVirtualMachineInterface);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, porthandler.canCreatePort(neutronPort));
}
- /* Test method to check port is not created */
+ /* Test method to check if neutron port create exist with same name */
@Test
- public void testCanCreatePortFails() throws Exception {
+ public void testCanCreatePortExistSameName() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
- VirtualMachineInterface mockedVirtualMachineInterface = PowerMock.createNiceMock(VirtualMachineInterface.class);
- expectNew(VirtualMachineInterface.class).andReturn(mockedVirtualMachineInterface);
- InstanceIp mockedInstanceIp = PowerMock.createNiceMock(InstanceIp.class);
- expectNew(InstanceIp.class).andReturn(mockedInstanceIp);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
+ when(mockedVirtualNetwork.getParentUuid()).thenReturn(neutronPort.getTenantID());
when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedApiConnector.create(mockedVirtualMachineInterface)).thenReturn(true);
- PowerMock.replay(mockedVirtualMachineInterface, VirtualMachineInterface.class);
- when(neutronPort.getFixedIPs().get(0).getIpAddress()).thenReturn("10.0.0.1");
- when(mockedApiConnector.create(mockedInstanceIp)).thenReturn(false);
- PowerMock.replay(mockedInstanceIp, InstanceIp.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, porthandler.canCreatePort(neutronPort));
+ when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
+ when(mockedApiConnector.findByName(VirtualMachineInterface.class, mockedProject, neutronPort.getName())).thenReturn("PORT-001");
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, porthandler.canCreatePort(neutronPort));
}
- /* Test method to check port is created */
-
+ /* Test method to check if neutron port create ok */
@Test
- public void testCanCreatePortOk() throws Exception {
+ public void testCanCreatePortOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
- VirtualMachineInterface mockedVirtualMachineInterface = PowerMock.createNiceMock(VirtualMachineInterface.class);
- expectNew(VirtualMachineInterface.class).andReturn(mockedVirtualMachineInterface);
- InstanceIp mockedInstanceIp = PowerMock.createNiceMock(InstanceIp.class);
- expectNew(InstanceIp.class).andReturn(mockedInstanceIp);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
+ when(mockedVirtualNetwork.getParentUuid()).thenReturn(neutronPort.getTenantID());
when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedApiConnector.create(mockedVirtualMachineInterface)).thenReturn(true);
- PowerMock.replay(mockedVirtualMachineInterface, VirtualMachineInterface.class);
- when(neutronPort.getFixedIPs().get(0).getIpAddress()).thenReturn("10.0.0.1");
- when(mockedApiConnector.create(mockedInstanceIp)).thenReturn(true);
- PowerMock.replay(mockedInstanceIp, InstanceIp.class);
+ when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
+ when(mockedApiConnector.findByName(VirtualMachineInterface.class, mockedProject, neutronPort.getName())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_OK, porthandler.canCreatePort(neutronPort));
}
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canDeletePort(null));
}
- /* Test method to check if virtual machine interface is null */
+ /* Test method to check if virtual machine interface is null for delete */
@Test
public void testcanDeletePortVirtualMachineInterfaceNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canDeletePort(neutronPort));
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, porthandler.canDeletePort(neutronPort));
+ }
+
+ /* Test method to check if can delete return status 200 OK */
+ @Test
+ public void testcanDeletePortOk() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronPort neutronPort = defaultNeutronPortObject();
+ when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getID())).thenReturn(mockedVirtualMachineInterface);
+ when(mockedVirtualMachineInterface.getFloatingIpBackRefs()).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_OK, porthandler.canDeletePort(neutronPort));
}
- /* Test method to update port with null neutron port and delta port */
+ /* Test method to update port with null neutron port and delta port obj*/
@Test
public void testcanUpdatePortNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canUpdatePort(null, null));
}
- /* Test method to update port with mac address */
+ /* Test method to update port with Mac address */
@Test
public void testcanUpdatePortMacAddress() throws IOException {
Activator.apiConnector = mockedApiConnector;
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
}
- /* Test method to update port when IpPrefix is null and network Uuid exist */
+ /* Test method to update port when port not found */
@Test
- public void testcanUpdatePortIpPrefixNull() throws IOException {
+ public void testcanUpdatePortVMInotFound() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
NeutronPort dummyNeutronPort = detaNeutronPort();
- dummyNeutronPort.setFixedIPs(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
+ when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
}
- /* Test method to update port when virtual machine create fails */
+ /* Test method to update port when another port already exist with same name */
@Test
- public void testcanUpdatePortVirtualMachineCreateFail() throws Exception {
+ public void testcanUpdatePortVMIbyName() throws IOException {
Activator.apiConnector = mockedApiConnector;
- VirtualMachine mockedVirtualMachine = PowerMock.createNiceMock(VirtualMachine.class);
- expectNew(VirtualMachine.class).andReturn(mockedVirtualMachine);
NeutronPort neutronPort = defaultNeutronPortObject();
NeutronPort dummyNeutronPort = detaNeutronPort();
- dummyNeutronPort.setFixedIPs(null);
- dummyNeutronPort.setNetworkUUID(null);
+ when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(mockedVirtualMachineInterface);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(null);
- when(mockedApiConnector.create(mockedVirtualMachine)).thenReturn(false);
- PowerMock.replay(mockedVirtualMachine, VirtualMachine.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
+ when(mockedApiConnector.findByName(VirtualMachineInterface.class, mockedProject, dummyNeutronPort.getName())).thenReturn("network-001");
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
}
- /* Test method to update port when update fails */
+ /*
+ * Test method to update port when check for Subnet UUID must exist in the
+ * network
+ */
@Test
- public void testcanUpdatePortVirtualMachineInterfaceUpdateFail() throws Exception {
+ public void testcanUpdatePortCheck() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
NeutronPort dummyNeutronPort = detaNeutronPort();
dummyNeutronPort.setFixedIPs(null);
- dummyNeutronPort.setNetworkUUID(null);
+ when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(mockedVirtualMachineInterface);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
- when(mockedApiConnector.update(mockedVirtualMachineInterface)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
+ when(mockedApiConnector.findByName(VirtualMachineInterface.class, mockedProject, dummyNeutronPort.getName())).thenReturn(null);
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
}
- /* Test method to update port */
+ /* Test method to update port when check for FixedIPs Not Null */
@Test
- public void testcanUpdatePortVirtualMachineInterfaceUpdateOk() throws Exception {
+ public void testcanUpdatePortFixedIPsNotNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
NeutronPort dummyNeutronPort = detaNeutronPort();
- dummyNeutronPort.setFixedIPs(null);
- dummyNeutronPort.setNetworkUUID(null);
+ when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(mockedVirtualMachineInterface);
- when(mockedApiConnector.findById(VirtualMachine.class, neutronPort.getDeviceID())).thenReturn(mockedvirtualMachine);
- when(mockedApiConnector.update(mockedVirtualMachineInterface)).thenReturn(true);
- assertEquals(HttpURLConnection.HTTP_OK, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
+ when(mockedApiConnector.findByName(VirtualMachineInterface.class, mockedProject, dummyNeutronPort.getName())).thenReturn(null);
+ List<Neutron_IPs> ips = new ArrayList<Neutron_IPs>();
+ Neutron_IPs fixedIP = new Neutron_IPs();
+ fixedIP.setSubnetUUID("9b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
+ ips.add(fixedIP);
+ dummyNeutronPort.setFixedIPs(ips);
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ VnSubnetsType vnSubnetType = new VnSubnetsType();
+ ObjectReference<VnSubnetsType> ref = new ObjectReference<>();
+ List<ObjectReference<VnSubnetsType>> ipamRefs = new ArrayList<ObjectReference<VnSubnetsType>>();
+ List<VnSubnetsType.IpamSubnetType> subnets = new ArrayList<VnSubnetsType.IpamSubnetType>();
+ VnSubnetsType.IpamSubnetType subnetType = new VnSubnetsType.IpamSubnetType();
+ SubnetType type = new SubnetType();
+ List<String> temp = new ArrayList<String>();
+ for (int i = 0; i < 1; i++) {
+ subnetType.setSubnet(type);
+ subnetType.setSubnetUuid("0b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
+ subnetType.getSubnet().setIpPrefix("10.0.0.0");
+ subnetType.getSubnet().setIpPrefixLen(24);
+ subnets.add(subnetType);
+ vnSubnetType.addIpamSubnets(subnetType);
+ ref.setReference(temp, vnSubnetType, "", "");
+ ipamRefs.add(ref);
+ }
+ when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(ipamRefs);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
}
- /* Test method to update port when virtual network does not exist */
+ /* Test method to update port when check for FixedIPs Not Null */
@Test
- public void testcanUpdatePortVirtualNetworkNotExist() throws Exception {
+ public void testcanUpdatePortok() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronPort neutronPort = defaultNeutronPortObject();
NeutronPort dummyNeutronPort = detaNeutronPort();
+ when(mockedApiConnector.findById(Project.class, neutronPort.getTenantID())).thenReturn(mockedProject);
when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(mockedVirtualMachineInterface);
+ when(mockedApiConnector.findByName(VirtualMachineInterface.class, mockedProject, dummyNeutronPort.getName())).thenReturn(null);
when(mockedApiConnector.findById(VirtualNetwork.class, dummyNeutronPort.getNetworkUUID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
- }
-
- /* Test method to update port when virtual network does not exist */
- @Test
- public void testcanUpdatePortSubnetNotExistInNetwork() throws Exception {
- Activator.apiConnector = mockedApiConnector;
- NeutronPort neutronPort = defaultNeutronPortObject();
- NeutronPort dummyNeutronPort = detaNeutronPort();
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronPort.getPortUUID())).thenReturn(mockedVirtualMachineInterface);
- when(mockedApiConnector.findById(VirtualNetwork.class, dummyNeutronPort.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
+ dummyNeutronPort.setNetworkUUID(null);
+ dummyNeutronPort.setFixedIPs(null);
+ assertEquals(HttpURLConnection.HTTP_OK, porthandler.canUpdatePort(dummyNeutronPort, neutronPort));
}
}
\ No newline at end of file
+/*
+ * Copyright (C) 2014 Juniper Networks, Inc.
+ *
+ * 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.plugin2oc.neutron;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.powermock.api.easymock.PowerMock.expectNew;
import java.io.IOException;
import java.net.HttpURLConnection;
+import java.util.ArrayList;
+import java.util.List;
import net.juniper.contrail.api.ApiConnector;
+import net.juniper.contrail.api.ApiPropertyBase;
+import net.juniper.contrail.api.ObjectReference;
import net.juniper.contrail.api.types.LogicalRouter;
import net.juniper.contrail.api.types.Project;
-import net.juniper.contrail.api.types.VirtualMachine;
import net.juniper.contrail.api.types.VirtualMachineInterface;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
import org.opendaylight.controller.networkconfig.neutron.NeutronRouter;
import org.opendaylight.controller.networkconfig.neutron.NeutronRouter_Interface;
import org.opendaylight.controller.networkconfig.neutron.NeutronRouter_NetworkReference;
-import org.powermock.api.easymock.PowerMock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ RouterHandler.class, LogicalRouter.class })
+/**
+ * Test Class for Neutron Router.
+ */
public class RouterHandlerTest {
RouterHandler routerHandler;
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, routerHandler.canCreateRouter(mockedNeutronRouter));
}
- /* Test method to check if neutron router name is null */
- @Test
- public void testCanCreateRouterNullName() {
- Activator.apiConnector = mockedApiConnector;
- NeutronRouter neutronRouter = defaultNeutronObject();
- neutronRouter.setName(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, routerHandler.canCreateRouter(neutronRouter));
- }
-
/* Test method to check if tenant ID is null */
@Test
public void testCanCreateRouterNullTenantID() {
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, routerHandler.canCreateRouter(neutronRouter));
}
- /* Test method to check if router Project UUID not found */
+ /* Test method to check if neutron router name is null */
@Test
- public void testCanCreateRouterProjectUUIDnull() throws IOException {
+ public void testCanCreateRouterNullName() {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
- when(mockedApiConnector.findById(Project.class, neutronRouter.getTenantID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_NOT_FOUND, routerHandler.canCreateRouter(neutronRouter));
+ neutronRouter.setName(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, routerHandler.canCreateRouter(neutronRouter));
}
- /* Test method to check if router creation fails */
+ /*
+ * Test method to check neutron network create with same name
+ */
@Test
- public void testCanCreateRouterFails() throws Exception {
+ public void testcanCreateRouterByNameExist() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
- LogicalRouter lr = PowerMock.createNiceMock(LogicalRouter.class);
- expectNew(LogicalRouter.class).andReturn(lr);
when(mockedApiConnector.findById(Project.class, neutronRouter.getTenantID())).thenReturn(mockedProject);
- lr.setParent(mockedProject);
- when(mockedApiConnector.create(lr)).thenReturn(false);
- PowerMock.replay(lr, LogicalRouter.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, routerHandler.canCreateRouter(neutronRouter));
+ when(mockedApiConnector.findByName(LogicalRouter.class, mockedProject, neutronRouter.getName())).thenReturn("Router-01");
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, routerHandler.canCreateRouter(neutronRouter));
}
- /* Test method to check if router created */
+ /*
+ * Test method to check neutron network create return status 200 Ok
+ */
@Test
- public void testCanCreateRouterOK() throws Exception {
+ public void testcanCreateRouterOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
- LogicalRouter lr = PowerMock.createNiceMock(LogicalRouter.class);
- expectNew(LogicalRouter.class).andReturn(lr);
when(mockedApiConnector.findById(Project.class, neutronRouter.getTenantID())).thenReturn(mockedProject);
- lr.setParent(mockedProject);
- when(mockedApiConnector.create(lr)).thenReturn(true);
- PowerMock.replay(lr, LogicalRouter.class);
+ when(mockedApiConnector.findByName(LogicalRouter.class, mockedProject, neutronRouter.getName())).thenReturn(null);
assertEquals(HttpURLConnection.HTTP_OK, routerHandler.canCreateRouter(neutronRouter));
}
- /* Test method to check if neutron router is null for delete */
+ /* Test method to check if neutron router object is null for delete */
@Test
public void testcanDeleteRouterNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, routerHandler.canDeleteRouter(null));
}
- /* Test method to check if delete router that does not exist */
+ /* Test method to check if delete router with status 200 ok */
@Test
- public void testcanDeleteRouterBadRequest() throws IOException {
+ public void testcanDeleteRouterOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
- when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, routerHandler.canDeleteRouter(neutronRouter));
+ when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
+ assertEquals(HttpURLConnection.HTTP_OK, routerHandler.canDeleteRouter(neutronRouter));
}
/* Test method to check if can update router Null object */
assertEquals(HttpURLConnection.HTTP_NOT_FOUND, routerHandler.canUpdateRouter(neutronRouter, deltaRouter));
}
- /* Test method to check if can update router object not found */
- @Test
- public void testcanUpdateRouterFailed() throws IOException {
- Activator.apiConnector = mockedApiConnector;
- NeutronRouter neutronRouter = defaultNeutronObject();
- NeutronRouter deltaRouter = deltaNeutronObject();
- when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
- when(mockedApiConnector.update(mockedLogicalRouter)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, routerHandler.canUpdateRouter(neutronRouter, deltaRouter));
- }
-
- /* Test method to check if can update router object not founf=d */
+ /* Test method to check if can update router returns status 200 ok */
@Test
public void testcanUpdateRouterOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
NeutronRouter deltaRouter = deltaNeutronObject();
when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
- when(mockedApiConnector.update(mockedLogicalRouter)).thenReturn(true);
assertEquals(HttpURLConnection.HTTP_OK, routerHandler.canUpdateRouter(neutronRouter, deltaRouter));
}
- /* Test method to check if canAttachInterface update vmi failed */
- @Test
- public void testcanAttachInterfaceVMIfailed() throws Exception {
- Activator.apiConnector = mockedApiConnector;
- NeutronRouter neutronRouter = defaultNeutronObject();
- NeutronRouter_Interface neutronRouterInterface = deltaNeutronRouter_Interface();
- when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronRouterInterface.getPortUUID()))
- .thenReturn(mockVirtualMachineInterface);
- mockedLogicalRouter.setVirtualMachineInterface(mockVirtualMachineInterface);
- VirtualMachine vm = PowerMock.createNiceMock(VirtualMachine.class);
- expectNew(VirtualMachine.class).andReturn(vm);
- vm.setName(neutronRouter.getRouterUUID());
- vm.setUuid(neutronRouter.getRouterUUID());
- mockVirtualMachineInterface.setVirtualMachine(vm);
- when(mockedApiConnector.update(mockVirtualMachineInterface)).thenReturn(false);
- PowerMock.replay(vm, VirtualMachine.class);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, routerHandler.canAttachInterface(neutronRouter, neutronRouterInterface));
- }
-
/*
* Test method to check if canAttachInterface update vmi successfully but
* attach interface failed
*/
@Test
- public void testcanAttachInterfaceVMIOk() throws Exception {
- Activator.apiConnector = mockedApiConnector;
- NeutronRouter neutronRouter = defaultNeutronObject();
- NeutronRouter_Interface neutronRouterInterface = deltaNeutronRouter_Interface();
- when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronRouterInterface.getPortUUID()))
- .thenReturn(mockVirtualMachineInterface);
- mockedLogicalRouter.setVirtualMachineInterface(mockVirtualMachineInterface);
- VirtualMachine vm = PowerMock.createNiceMock(VirtualMachine.class);
- expectNew(VirtualMachine.class).andReturn(vm);
- vm.setName(neutronRouter.getRouterUUID());
- vm.setUuid(neutronRouter.getRouterUUID());
- mockVirtualMachineInterface.setVirtualMachine(vm);
- when(mockedApiConnector.update(mockVirtualMachineInterface)).thenReturn(true);
- PowerMock.replay(vm, VirtualMachine.class);
- when(mockedApiConnector.update(mockedLogicalRouter)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, routerHandler.canAttachInterface(neutronRouter, neutronRouterInterface));
- }
-
- /* Test method to check if interface is attached successfully */
- @Test
- public void testcanAttachInterfaceOK() throws Exception {
+ public void testcanAttachInterfaceOk() throws Exception {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
NeutronRouter_Interface neutronRouterInterface = deltaNeutronRouter_Interface();
- when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronRouterInterface.getPortUUID()))
- .thenReturn(mockVirtualMachineInterface);
- mockedLogicalRouter.setVirtualMachineInterface(mockVirtualMachineInterface);
- VirtualMachine vm = PowerMock.createNiceMock(VirtualMachine.class);
- expectNew(VirtualMachine.class).andReturn(vm);
- vm.setName(neutronRouter.getRouterUUID());
- vm.setUuid(neutronRouter.getRouterUUID());
- mockVirtualMachineInterface.setVirtualMachine(vm);
- when(mockedApiConnector.update(mockVirtualMachineInterface)).thenReturn(true);
- PowerMock.replay(vm, VirtualMachine.class);
- when(mockedApiConnector.update(mockedLogicalRouter)).thenReturn(true);
assertEquals(HttpURLConnection.HTTP_OK, routerHandler.canAttachInterface(neutronRouter, neutronRouterInterface));
}
- /* Test method to check if canDetachInterface update vmi failed */
+ /* Test method to check if canDetachInterface when no such Router exist */
@Test
- public void testcanDetachInterfaceVMIfailed() throws Exception {
+ public void testcanDetachInterfaceRouterNotFound() throws Exception {
Activator.apiConnector = mockedApiConnector;
NeutronRouter neutronRouter = defaultNeutronObject();
NeutronRouter_Interface neutronRouterInterface = deltaNeutronRouter_Interface();
- when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
- when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronRouterInterface.getPortUUID()))
- .thenReturn(mockVirtualMachineInterface);
- when(mockedApiConnector.update(mockVirtualMachineInterface)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, routerHandler.canDetachInterface(neutronRouter, neutronRouterInterface));
+ when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, routerHandler.canDetachInterface(neutronRouter, neutronRouterInterface));
}
- /* Test method to check if interface is detached succesfully */
+ /* Test method to check if canDetachInterface return status 200 OK */
@Test
public void testcanDetachInterfaceOK() throws Exception {
Activator.apiConnector = mockedApiConnector;
when(mockedApiConnector.findById(LogicalRouter.class, neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
when(mockedApiConnector.findById(VirtualMachineInterface.class, neutronRouterInterface.getPortUUID()))
.thenReturn(mockVirtualMachineInterface);
- when(mockedApiConnector.update(mockVirtualMachineInterface)).thenReturn(true);
- when(mockedApiConnector.update(mockedLogicalRouter)).thenReturn(true);
assertEquals(HttpURLConnection.HTTP_OK, routerHandler.canDetachInterface(neutronRouter, neutronRouterInterface));
}
-}
\ No newline at end of file
+
+ /* Test method to check if interface is attached with port ID*/
+ @Test
+ public void testcanDetachInterfacePortExist() throws Exception {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronRouter neutronRouter = defaultNeutronObject();
+ NeutronRouter_Interface neutronRouterInterface = deltaNeutronRouter_Interface();
+ when(mockedApiConnector.findById(LogicalRouter.class,neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
+ when(mockedApiConnector.findById(VirtualMachineInterface.class,neutronRouterInterface.getPortUUID())).thenReturn(mockVirtualMachineInterface);
+ List<ObjectReference<ApiPropertyBase>> vmiList = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ vmiList.add(new ObjectReference<ApiPropertyBase>(mockVirtualMachineInterface.getQualifiedName(), null));
+ vmiList.get(0).setReference(mockVirtualMachineInterface.getQualifiedName(), null, "", "119570f2-17b1-4fc3-99ec-1b7f7778a29a");
+ when(mockedLogicalRouter.getVirtualMachineInterface()).thenReturn(vmiList);
+ assertEquals(HttpURLConnection.HTTP_OK,routerHandler.canDetachInterface(neutronRouter,neutronRouterInterface));
+ }
+
+ /* Test method to check if No interface is attached with port ID */
+ @Test
+ public void testcanDetachInterfacePortDoesNotExist() throws Exception {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronRouter neutronRouter = defaultNeutronObject();
+ NeutronRouter_Interface neutronRouterInterface = deltaNeutronRouter_Interface();
+ when(mockedApiConnector.findById(LogicalRouter.class,neutronRouter.getRouterUUID())).thenReturn(mockedLogicalRouter);
+ when(mockedApiConnector.findById(VirtualMachineInterface.class,neutronRouterInterface.getPortUUID())).thenReturn(mockVirtualMachineInterface);
+ List<ObjectReference<ApiPropertyBase>> vmiList = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ vmiList.add(new ObjectReference<ApiPropertyBase>(mockVirtualMachineInterface.getQualifiedName(), null));
+ vmiList.get(0).setReference(mockVirtualMachineInterface.getQualifiedName(), null, "", "ff9570f2-17b1-4fc3-99ec-1b7f7778a29a");
+ when(mockedLogicalRouter.getVirtualMachineInterface()).thenReturn(vmiList);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST,routerHandler.canDetachInterface(neutronRouter,neutronRouterInterface));
+ }
+}
--- /dev/null
+/*
+ * Copyright (C) 2014 Juniper Networks, Inc.
+ *
+ * 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.plugin2oc.neutron;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.mock;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.util.ArrayList;
+import java.util.List;
+
+import net.juniper.contrail.api.ApiConnector;
+import net.juniper.contrail.api.ApiPropertyBase;
+import net.juniper.contrail.api.ObjectReference;
+import net.juniper.contrail.api.types.Project;
+import net.juniper.contrail.api.types.SecurityGroup;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.controller.networkconfig.neutron.NeutronSecurityGroup;
+
+import static org.mockito.Mockito.when;
+
+/**
+ * Test Class for SecurityGroupHandler.
+ */
+
+public class SecurityGroupHandlerTest {
+
+ SecurityGroupHandler securityGroupHandler;
+ SecurityGroupHandler mockSecurityGroupHandler = mock(SecurityGroupHandler.class);
+ NeutronSecurityGroup mockNeutronSecurityGroup = mock(NeutronSecurityGroup.class);
+ SecurityGroup mockSecurityGroup = mock(SecurityGroup.class);
+ ApiConnector mockedApiConnector = mock(ApiConnector.class);
+ Project mockedProject = mock(Project.class);
+
+ @Before
+ public void beforeTest() {
+ securityGroupHandler = new SecurityGroupHandler();
+ assertNotNull(mockSecurityGroupHandler);
+ assertNotNull(mockNeutronSecurityGroup);
+ assertNotNull(mockSecurityGroup);
+ assertNotNull(mockedApiConnector);
+ assertNotNull(mockedProject);
+ }
+
+ @After
+ public void AfterTest() {
+ securityGroupHandler = null;
+ Activator.apiConnector = null;
+ }
+
+ /* dummy params for SecurityGroupHandler */
+ public NeutronSecurityGroup defaultSecurityGroupObject() {
+ NeutronSecurityGroup neutron = new NeutronSecurityGroup();
+ neutron.setSecurityGroupDescription("new security froup description");
+ neutron.setSecurityGroupName("securityGroupName");
+ neutron.setSecurityGroupTenantID("6b9570f2-17b1-4fc3-99ec-1b7f7778a29a");
+ neutron.setSecurityGroupUUID("900070f2-17b1-4fc3-99ec-1b7f7778a29a");
+ return neutron;
+ }
+
+ /* Test method to check if neutron SecurityGroup object is null */
+ @Test
+ public void testCanCreateSecurityGroupNull() {
+ Activator.apiConnector = mockedApiConnector;
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, securityGroupHandler.canCreateNeutronSecurityGroup(null));
+ }
+
+ /* Test method to check if neutron SecurityGroup name is null */
+ @Test
+ public void testCanCreateSecurityGroupNameNull() {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ neutron.setSecurityGroupName(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron SecurityGroup Description is null */
+ @Test
+ public void testCanCreateSecurityGroupDescriptionNull() {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ neutron.setSecurityGroupDescription(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron SecurityGroup TenantId is null */
+ @Test
+ public void testCanCreateSecurityGroupTenantId() {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ neutron.setSecurityGroupTenantID(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron SecurityGroup already exist */
+ @Test
+ public void testCanCreateSecurityGroupExist() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(mockSecurityGroup);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron SecurityGroup project null */
+ @Test
+ public void testCanCreateSecurityGroupProjectNull() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(null);
+ when(mockedApiConnector.findById(Project.class, neutron.getSecurityGroupTenantID())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron SecurityGroup by same name exist */
+ @Test
+ public void testCanCreateSecurityGroupByName() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(null);
+ when(mockedApiConnector.findById(Project.class, neutron.getSecurityGroupTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findByName(SecurityGroup.class, mockedProject, neutron.getSecurityGroupName())).thenReturn("name");
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron SecurityGroup returns status 200 ok */
+ @Test
+ public void testCanCreateSecurityGroupOK() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(null);
+ when(mockedApiConnector.findById(Project.class, neutron.getSecurityGroupTenantID())).thenReturn(mockedProject);
+ when(mockedApiConnector.findByName(SecurityGroup.class, mockedProject, neutron.getSecurityGroupName())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_OK, securityGroupHandler.canCreateNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron can delete SecurityGroup not found */
+ @Test
+ public void testCanDeleteSecurityGroupNotFound() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_NOT_FOUND, securityGroupHandler.canDeleteNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron can delete SecurityGroup has port associated with it */
+ @Test
+ public void testCanDeleteSecurityGroupPortExist() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(mockSecurityGroup);
+ List<ObjectReference<ApiPropertyBase>> vmiList = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ when(mockSecurityGroup.getVirtualMachineInterfaceBackRefs()).thenReturn(vmiList);
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, securityGroupHandler.canDeleteNeutronSecurityGroup(neutron));
+ }
+
+ /* Test method to check if neutron can delete SecurityGroup returns status ok */
+ @Test
+ public void testCanDeleteSecurityGroupOK() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSecurityGroup neutron = defaultSecurityGroupObject();
+ when(mockedApiConnector.findById(SecurityGroup.class, neutron.getSecurityGroupUUID())).thenReturn(mockSecurityGroup);
+ when(mockSecurityGroup.getVirtualMachineInterfaceBackRefs()).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_OK, securityGroupHandler.canDeleteNeutronSecurityGroup(neutron));
+ }
+}
import java.util.List;
import net.juniper.contrail.api.ApiConnector;
+import net.juniper.contrail.api.ApiPropertyBase;
import net.juniper.contrail.api.ObjectReference;
import net.juniper.contrail.api.types.SubnetType;
import net.juniper.contrail.api.types.VirtualNetwork;
NeutronSubnet subnet = new NeutronSubnet();
List<NeutronSubnet_IPAllocationPool> allocationPools = new ArrayList<NeutronSubnet_IPAllocationPool>();
NeutronSubnet_IPAllocationPool neutronSubnet_IPAllocationPool = new NeutronSubnet_IPAllocationPool();
- subnet.setNetworkUUID("6b9570f2-17b1-4fc399ec-1b7f7778a29b");
- subnet.setSubnetUUID("7b9570f2-17b1-4fc399ec-1b7f7778a29b");
+ subnet.setNetworkUUID("6b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
+ subnet.setSubnetUUID("7b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
subnet.setCidr("10.0.0.0/24");
subnet.setGatewayIP("10.0.0.254");
neutronSubnet_IPAllocationPool.setPoolStart("10.0.0.1");
@Test
public void testCanCreateSubnetCidrNull() {
Activator.apiConnector = mockedApiConnector;
- NeutronSubnet subnet = new NeutronSubnet();
- subnet.setCidr(null);
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canCreateSubnet(subnet));
+ NeutronSubnet neutronSubnet = defaultSubnetObject();
+ neutronSubnet.setCidr(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canCreateSubnet(neutronSubnet));
}
/* Test method to check if Gateway Ip is invalid */
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canCreateSubnet(neutronSubnet));
}
- /* Test method to check if virtual network is null */
-
- @Test
- public void testCanCreateSubnetVirtualNetworkNull() throws IOException {
- Activator.apiConnector = mockedApiConnector;
- NeutronSubnet neutronSubnet = defaultSubnetObject();
- when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_FORBIDDEN, subnetHandler.canCreateSubnet(neutronSubnet));
- }
-
- /* Test method to check if subnet can be created with IpamRefs null */
+ /* Test method to check if gateway ip is valide for create */
@Test
- public void testCanCreateSubnet() throws IOException {
+ public void testcancreateSubnetInvalidGateway() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- assertEquals(HttpURLConnection.HTTP_OK, subnetHandler.canCreateSubnet(neutronSubnet));
+ neutronSubnet.setGatewayIP("20.0.0.200");
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canCreateSubnet(neutronSubnet));
}
- /* Test method to check if subnet creation returns Internal Server Error */
+ /* Test method to check if virtual network is null */
@Test
- public void testCanCreateSubnetException() throws IOException {
+ public void testCanCreateSubnetVirtualNetworkNull() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, subnetHandler.canCreateSubnet(neutronSubnet));
+ assertEquals(HttpURLConnection.HTTP_FORBIDDEN, subnetHandler.canCreateSubnet(neutronSubnet));
}
/* Test method to check if subnet already exists */
assertEquals(HttpURLConnection.HTTP_FORBIDDEN, subnetHandler.canCreateSubnet(neutronSubnet));
}
+ /* Test method to check if subnet can be created with return status OK */
+ @Test
+ public void testCanCreateSubnetOK() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSubnet neutronSubnet = defaultSubnetObject();
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
+ when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
+ assertEquals(HttpURLConnection.HTTP_OK, subnetHandler.canCreateSubnet(neutronSubnet));
+ }
+
/* Test method to check ipPrefix */
@Test
public void testGetIpPrefix() {
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canUpdateSubnet(null, null));
}
- /* Test method to check if updated subnet gateway ip is empty */
- @Test
- public void testcanUpdateSubnetGatewayEmpty() {
- Activator.apiConnector = mockedApiConnector;
- NeutronSubnet neutronSubnet = defaultSubnetObject();
- NeutronSubnet deltaSubnet = new NeutronSubnet();
- deltaSubnet.setGatewayIP("");
- assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
- }
-
/* Test method to check if gateway ip is valide for update */
@Test
public void testcanUpdateSubnetInvalidGateway() throws IOException {
/* Test method to check if subnets do not exist */
@Test
public void testcanUpdateSubnetNotFound() throws IOException {
- Activator.apiConnector = mockedApiConnector;
- NeutronSubnet neutronSubnet = defaultSubnetObject();
- NeutronSubnet deltaSubnet = defaultDeltaSubnet();
- when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
- }
-
- /*
- * Test method to check if subnet already exists and update subnet
- * successfully
- */
- @Test
- public void testcanUpdateSubnetOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
NeutronSubnet deltaSubnet = defaultDeltaSubnet();
List<String> temp = new ArrayList<String>();
for (int i = 0; i < 1; i++) {
subnetType.setSubnet(type);
- subnetType.setSubnetUuid("7b9570f2-17b1-4fc399ec-1b7f7778a29b");
+ subnetType.setSubnetUuid("9b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
subnetType.getSubnet().setIpPrefix("10.0.0.0");
subnetType.getSubnet().setIpPrefixLen(24);
subnets.add(subnetType);
ipamRefs.add(ref);
}
when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(ipamRefs);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- assertEquals(HttpURLConnection.HTTP_OK, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
}
- /* Test method to check if subnet already exists and update subnet fails */
+ /*
+ * Test method to check if subnet already exists and update subnet
+ * successfully
+ */
@Test
- public void testcanUpdateSubnetFail() throws IOException {
+ public void testcanUpdateSubnetOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
NeutronSubnet deltaSubnet = defaultDeltaSubnet();
List<String> temp = new ArrayList<String>();
for (int i = 0; i < 1; i++) {
subnetType.setSubnet(type);
- subnetType.setSubnetUuid("7b9570f2-17b1-4fc399ec-1b7f7778a29b");
+ subnetType.setSubnetUuid("7b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
subnetType.getSubnet().setIpPrefix("10.0.0.0");
subnetType.getSubnet().setIpPrefixLen(24);
subnets.add(subnetType);
ipamRefs.add(ref);
}
when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(ipamRefs);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(false);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
+ assertEquals(HttpURLConnection.HTTP_OK, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
}
- /* Tets method to check if a subnet deletion terminate with Internal_Error */
+ /* Test method to check if subnets do not exist */
@Test
- public void testCanDeleteSubnet() throws IOException {
+ public void testcanUpdateSubnetFailed() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
+ NeutronSubnet deltaSubnet = defaultDeltaSubnet();
when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
- assertEquals(HttpURLConnection.HTTP_INTERNAL_ERROR, subnetHandler.canDeleteSubnet(neutronSubnet));
-
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canUpdateSubnet(deltaSubnet, neutronSubnet));
}
-
- /*
- * Tets method to check if a subnet is deleted from the network when
- * vnSubnetsType.getIpamSubnets() is not null
- */
+ /* Test method to check if last subnet delete with floating Ip poool existing */
@Test
- public void testCanDeleteSubnetTrue() throws IOException {
+ public void testCanDeleteSubnetFPinUse() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- List<ObjectReference<VnSubnetsType>> ipamRefs = mockedVirtualNetwork.getNetworkIpam();
VnSubnetsType vnSubnetType = new VnSubnetsType();
ObjectReference<VnSubnetsType> ref = new ObjectReference<>();
+ List<ObjectReference<VnSubnetsType>> ipamRefs = new ArrayList<ObjectReference<VnSubnetsType>>();
List<VnSubnetsType.IpamSubnetType> subnets = new ArrayList<VnSubnetsType.IpamSubnetType>();
VnSubnetsType.IpamSubnetType subnetType = new VnSubnetsType.IpamSubnetType();
SubnetType type = new SubnetType();
List<String> temp = new ArrayList<String>();
for (int i = 0; i < 1; i++) {
subnetType.setSubnet(type);
+ subnetType.setSubnetUuid("7b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
subnetType.getSubnet().setIpPrefix("10.0.0.0");
subnetType.getSubnet().setIpPrefixLen(24);
subnets.add(subnetType);
ref.setReference(temp, vnSubnetType, "", "");
ipamRefs.add(ref);
}
- VnSubnetsType.IpamSubnetType subnetType1 = new VnSubnetsType.IpamSubnetType();
- SubnetType type1 = new SubnetType();
- for (int i = 0; i < 1; i++) {
- subnetType1.setSubnet(type1);
- subnetType1.getSubnet().setIpPrefix("10.0.1.0");
- subnetType1.getSubnet().setIpPrefixLen(24);
- subnets.add(subnetType1);
- vnSubnetType.addIpamSubnets(subnetType1);
- ref.setReference(temp, vnSubnetType, "", "");
- ipamRefs.add(ref);
- }
when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(ipamRefs);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- assertEquals(HttpURLConnection.HTTP_NO_CONTENT, subnetHandler.canDeleteSubnet(neutronSubnet));
+ List<ObjectReference<ApiPropertyBase>> fpPoolList = new ArrayList<ObjectReference<ApiPropertyBase>>();
+ when(mockedVirtualNetwork.getFloatingIpPools()).thenReturn(fpPoolList);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canDeleteSubnet(neutronSubnet));
}
- /*
- * Test method to check if a subnet is deleted from the network when
- * vnSubnetsType.getIpamSubnets() is null
- */
+ /* Test method to check if subnets delete return status OK(200) */
@Test
- public void testCanDeleteSubnetNullGetIpamSubnets() throws IOException {
+ public void testCanDeleteSubnetOK() throws IOException {
Activator.apiConnector = mockedApiConnector;
NeutronSubnet neutronSubnet = defaultSubnetObject();
when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
- List<ObjectReference<VnSubnetsType>> ipamRefs = mockedVirtualNetwork.getNetworkIpam();
VnSubnetsType vnSubnetType = new VnSubnetsType();
ObjectReference<VnSubnetsType> ref = new ObjectReference<>();
+ List<ObjectReference<VnSubnetsType>> ipamRefs = new ArrayList<ObjectReference<VnSubnetsType>>();
List<VnSubnetsType.IpamSubnetType> subnets = new ArrayList<VnSubnetsType.IpamSubnetType>();
VnSubnetsType.IpamSubnetType subnetType = new VnSubnetsType.IpamSubnetType();
SubnetType type = new SubnetType();
List<String> temp = new ArrayList<String>();
for (int i = 0; i < 1; i++) {
subnetType.setSubnet(type);
+ subnetType.setSubnetUuid("7b9570f2-17b1-4fc3-99ec-1b7f7778a29b");
subnetType.getSubnet().setIpPrefix("10.0.0.0");
subnetType.getSubnet().setIpPrefixLen(24);
subnets.add(subnetType);
ipamRefs.add(ref);
}
when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(ipamRefs);
- when(mockedApiConnector.update(mockedVirtualNetwork)).thenReturn(true);
- assertEquals(HttpURLConnection.HTTP_NO_CONTENT, subnetHandler.canDeleteSubnet(neutronSubnet));
+ when(mockedVirtualNetwork.getFloatingIpPools()).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_OK, subnetHandler.canDeleteSubnet(neutronSubnet));
+ }
+
+ /* Tets method to check if a subnet deletion subnet does not exist */
+ @Test
+ public void testCanDeleteSubnet() throws IOException {
+ Activator.apiConnector = mockedApiConnector;
+ NeutronSubnet neutronSubnet = defaultSubnetObject();
+ when(mockedApiConnector.findById(VirtualNetwork.class, neutronSubnet.getNetworkUUID())).thenReturn(mockedVirtualNetwork);
+ when(mockedVirtualNetwork.getNetworkIpam()).thenReturn(null);
+ assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, subnetHandler.canDeleteSubnet(neutronSubnet));
}
}
\ No newline at end of file