package org.opennaas.extensions.quantum.network.builder; import java.util.List; import org.joda.time.DateTime; import org.opennaas.core.resources.Activator; import org.opennaas.core.resources.ActivatorException; import org.opennaas.core.resources.IResource; import org.opennaas.core.resources.IResourceIdentifier; import org.opennaas.core.resources.IResourceManager; import org.opennaas.core.resources.ResourceException; import org.opennaas.core.resources.protocol.ProtocolException; import org.opennaas.core.resources.queue.QueueResponse; import org.opennaas.extensions.bod.capability.l2bod.BoDLink; import org.opennaas.extensions.bod.capability.l2bod.RequestConnectionParameters; import org.opennaas.extensions.network.model.topology.Interface; import org.opennaas.extensions.network.model.topology.NetworkElement; import org.opennaas.extensions.quantum.model.AutobahnElement; import org.opennaas.extensions.quantum.model.Network; import org.opennaas.extensions.quantum.model.NetworkModel; import org.opennaas.extensions.quantum.model.Resource; import org.opennaas.extensions.queuemanager.IQueueManagerCapability; public abstract class NetworkBuilderHelper { public static void executeResourceQueue(IResource resource) throws ResourceException, ProtocolException { IQueueManagerCapability qCapability = (IQueueManagerCapability) resource.getCapabilityByInterface(IQueueManagerCapability.class); QueueResponse response = qCapability.execute(); if (!response.isOk()) { String commitMsg = response.getConfirmResponse().getInformation(); throw new ResourceException( "Failed to execute queue for resource " + resource.getResourceDescriptor().getInformation().getName() + ": " + commitMsg); } } /** * Get the interface from Network Model and interface name * * @param networkElements * @return Interface */ public static Interface getInterfaceByName(List<NetworkElement> networkElements, String interfaceName) { Interface toReturn = null; for (NetworkElement elem : networkElements) { if (elem instanceof Interface && elem.getName().equals(interfaceName)) { toReturn = (Interface) elem; break; } } return toReturn; } public static NetworkModel getNetworkModelFromQuantumNetworkId(List<NetworkModel> netModels, String quantumNetworkId) { for (NetworkModel model : netModels) if (model.getQuantumNetworkId().equals(quantumNetworkId)) return model; return null; } public static Network getQuantumNetworkFromId(List<Network> networks, String networkId) { for (Network network : networks) if (network.getId().equals(networkId)) return network; return null; } public static IResource getResourceByTypeAndName(String resourceName, String resourceType) throws ActivatorException, ResourceException { IResourceManager resourceManager = Activator.getResourceManagerService(); IResourceIdentifier resourceIdentifier = resourceManager.getIdentifierFromResourceName(resourceType, resourceName); IResource autobahnResource = resourceManager.getResource(resourceIdentifier); return autobahnResource; } public static IResource getResourceById(String resourceId) throws ActivatorException, ResourceException { IResourceManager resourceManager = Activator.getResourceManagerService(); IResource resource = resourceManager.getResourceById(resourceId); return resource; } public static Network createSampleNetwork(String netId, String netName, String tenantId) { Network sampleNetwork = new Network(); sampleNetwork.setId(netId); sampleNetwork.setName(netName); sampleNetwork.setShared(false); sampleNetwork.setAdmin_state_up(true); sampleNetwork.setStatus("Active"); sampleNetwork.setTenant_id(tenantId); return sampleNetwork; } public static BoDLink createSampleBoDLink(String iface1Name, String iface2Name, int capacity, int srcVlanId, int dstVlanId) { DateTime startTime = new DateTime(1234); DateTime endTime = new DateTime(2345); BoDLink link = new BoDLink(); Interface ifaceSource = createSampleBoDInterface(iface1Name); Interface ifaceSink = createSampleBoDInterface(iface2Name); RequestConnectionParameters requestParameters = new RequestConnectionParameters(ifaceSource, ifaceSink, capacity, srcVlanId, dstVlanId, startTime, endTime); link.setSource(ifaceSource); link.setSink(ifaceSink); link.setRequestParameters(requestParameters); return link; } public static Interface createSampleBoDInterface(String interfaceName) { Interface iface = new Interface(); iface.setName(interfaceName); return iface; } public static Resource createSampleAutobahnResource(String resourceId, AutobahnElement autobahnElem) { Resource resource = new Resource(); resource.setResourceId(resourceId); resource.addResourceElement(autobahnElem); return resource; } }