Пример #1
0
  /**
   * This method adds to virtual model all necessary information to store a virtual link: 1) Builds
   * a source and a sink virtual interface. 2) Links virtual interfaces to virtual devices (source
   * and sink). 3) Links virtual link with physical link.
   *
   * @param virtualPath
   * @param sourceId
   * @param sinkId
   * @throws ResourceNotFoundException
   */
  private void addVirtualLink(
      org.opennaas.extensions.network.model.topology.Path virtualPath, int sourceId, int sinkId)
      throws ResourceNotFoundException {

    VirtualInterface vIfaceSource = new VirtualInterface();
    VirtualInterface vIfaceSink = new VirtualInterface();

    VirtualDevice sourceDevice =
        (VirtualDevice)
            NetworkModelHelper.getDeviceByName(mappingNetworkResult, String.valueOf(sourceId));
    VirtualDevice sinkDevice =
        (VirtualDevice)
            NetworkModelHelper.getDeviceByName(mappingNetworkResult, String.valueOf(sinkId));

    vIfaceSource.setDevice(sourceDevice);
    vIfaceSink.setDevice(sinkDevice);

    VirtualLink vlink = new VirtualLink();

    String sourcePhyDevice = sourceDevice.getImplementedBy();
    String sinkPhyDevice = sinkDevice.getImplementedBy();

    List<Link> links =
        NetworkModelHelper.getAllLinksBetweenTwoDevices(
            (NetworkModel) physicalNetworkModel, sourcePhyDevice, sinkPhyDevice);

    if (links.isEmpty())
      throw new ResourceNotFoundException(
          "No physical links between physical devices "
              + sourcePhyDevice
              + " and "
              + sinkPhyDevice);

    vlink.setImplementedBy(links.get(0).getName());
    vlink.setSource(vIfaceSource);
    vlink.setSink(vIfaceSink);

    virtualPath.getPathSegments().add(vlink);

    mappingNetworkResult.getNetworkElements().add(vlink);
  }