コード例 #1
0
  @Override
  public boolean addPort(NeutronPort input) {
    if (portExists(input.getID())) {
      return false;
    }
    portDB.putIfAbsent(input.getID(), input);
    // if there are no fixed IPs, allocate one for each subnet in the network
    INeutronSubnetCRUD systemCRUD = NeutronCRUDInterfaces.getINeutronSubnetCRUD(this);
    if (input.getFixedIPs().size() == 0) {
      List<Neutron_IPs> list = input.getFixedIPs();
      Iterator<NeutronSubnet> subnetIterator = systemCRUD.getAllSubnets().iterator();
      while (subnetIterator.hasNext()) {
        NeutronSubnet subnet = subnetIterator.next();
        if (subnet.getNetworkUUID().equals(input.getNetworkUUID())) {
          list.add(new Neutron_IPs(subnet.getID()));
        }
      }
    }
    Iterator<Neutron_IPs> fixedIPIterator = input.getFixedIPs().iterator();
    while (fixedIPIterator.hasNext()) {
      Neutron_IPs ip = fixedIPIterator.next();
      NeutronSubnet subnet = systemCRUD.getSubnet(ip.getSubnetUUID());
      if (ip.getIpAddress() == null) {
        ip.setIpAddress(subnet.getLowAddr());
      }
      if (!ip.getIpAddress().equals(subnet.getGatewayIP())) {
        subnet.allocateIP(ip.getIpAddress());
      } else {
        subnet.setGatewayIPAllocated();
      }
      subnet.addPort(input);
    }
    INeutronNetworkCRUD networkIf = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this);

    NeutronNetwork network = networkIf.getNetwork(input.getNetworkUUID());
    network.addPort(input);
    return true;
  }