Esempio n. 1
0
  /**
   * TODO
   *
   * @param virtualNetworkId TODO
   * @param virtualNode TODO
   * @param physicalNodes TODO
   * @return TODO
   */
  private PhysicalNode virtualNodeMapping(
      VirtualNetworkId virtualNetworkId, VirtualNode virtualNode, List<PhysicalNode> physicalNodes)
      throws VNMappingException {
    List<
            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network
                .rev151010.virtual.node.instance.PhysicalResourceRequirement>
        physicalResourceRequirements = virtualNode.getPhysicalResourceRequirement();
    List<PhysicalNode> candidates = new LinkedList<PhysicalNode>();

    switch (virtualNode.getNodeType()) {
      case Vswitch:
        for (PhysicalNode physicalNode : physicalNodes) {
          if (PhysicalNode.NodeType.Switch == physicalNode.getNodeType()) {
            if (checkPhysicalNodeSatisfied(physicalNode, physicalResourceRequirements)) {
              candidates.add(physicalNode);
            }
          }
        }
        break;

      case Vrouter:
        for (PhysicalNode physicalNode : physicalNodes) {
          if (PhysicalNode.NodeType.Router == physicalNode.getNodeType()) {
            if (checkPhysicalNodeSatisfied(physicalNode, physicalResourceRequirements)) {
              candidates.add(physicalNode);
            }
          }
        }
        break;

      case Vfirewall:
        for (PhysicalNode physicalNode : physicalNodes) {
          if (PhysicalNode.NodeType.Firewall == physicalNode.getNodeType()) {
            if (checkPhysicalNodeSatisfied(physicalNode, physicalResourceRequirements)) {
              candidates.add(physicalNode);
            }
          }
        }
        break;

      case Vloadbalancer:
        for (PhysicalNode physicalNode : physicalNodes) {
          if (PhysicalNode.NodeType.Loadbalancer == physicalNode.getNodeType()) {
            if (checkPhysicalNodeSatisfied(physicalNode, physicalResourceRequirements)) {
              candidates.add(physicalNode);
            }
          }
        }
        break;

      default:
        throw new VNMappingException(
            "Unsupported virtual node type " + virtualNode.getNodeType() + ".");
        //                break;
    }

    if (candidates.isEmpty()) {
      return null;
    }

    return candidates.get(0);
  }