List of usage examples for org.apache.commons.net.util SubnetUtils SubnetUtils
public SubnetUtils(String cidrNotation)
From source file:com.vmware.photon.controller.api.backend.workflows.AssignFloatingIpToVmWorkflowServiceTest.java
private static DhcpSubnetService.State createDhcpRootSubnetServiceInCloudStore(TestEnvironment testEnvironment) throws Throwable { String cidr = "192.168.1.0/24"; SubnetUtils subnetUtils = new SubnetUtils(cidr); SubnetUtils.SubnetInfo subnetInfo = subnetUtils.getInfo(); DhcpSubnetService.State state = new DhcpSubnetService.State(); state.cidr = cidr;// w w w . ja va2 s . co m state.lowIp = IpHelper.ipStringToLong(subnetInfo.getLowAddress()); state.highIp = IpHelper.ipStringToLong(subnetInfo.getHighAddress()); state.isFloatingIpSubnet = true; state.documentSelfLink = DhcpSubnetService.FLOATING_IP_SUBNET_SINGLETON_LINK; state.subnetId = ServiceUtils.getIDFromDocumentSelfLink(state.documentSelfLink); Operation result = testEnvironment.sendPostAndWait(DhcpSubnetService.FACTORY_LINK, state); return result.getBody(DhcpSubnetService.State.class); }
From source file:eu.smartenit.sdn.floodlight090.dtm.DTM.java
public synchronized Map<NetworkAddressIPv4, Short> getProactiveOutOfPortNumber() { logger.debug("getOutOfPortNumberProactiveWithoutReference() begin"); if (configData == null) { throw new IllegalArgumentException("DTM has not been configured yet"); }//from ww w . j a va2 s . c o m if (cVectorMap.isEmpty()) { throw new IllegalArgumentException("Compensation vector empty"); } for (VectorValue cVectorValue : compensationVector.getVectorValues()) { if (cVectorValue.getValue() >= 0) { String subnet = cVectorValue.getTunnelEndPrefix().getPrefix() + "/" + Integer.toString(cVectorValue.getTunnelEndPrefix().getPrefixLength()); SubnetUtils utils = new SubnetUtils(subnet); for (ConfigDataEntry configDataEntry : configData.getEntries()) { for (TunnelInfo tunnelInfo : configDataEntry.getTunnels()) { if (utils.getInfo() .isInRange(tunnelInfo.getTunnelID().getRemoteTunnelEndAddress().getPrefix())) { dcPrefixOutOfPortMap.put(configDataEntry.getRemoteDcPrefix(), (short) tunnelInfo.getDaRouterOfPortNumber()); } } } } } logger.debug("getOutOfPortNumberProactiveWithoutReference() end"); return dcPrefixOutOfPortMap; }
From source file:com.cloud.network.element.BigSwitchBcfElement.java
@Override public boolean applyNetworkACLs(Network network, List<? extends NetworkACLItem> rules) throws ResourceUnavailableException { SubnetUtils utils;//from ww w . j av a 2s .c om String cidr = null; List<String> cidrList; for (NetworkACLItem r : rules) { if (r.getState() == NetworkACLItem.State.Revoke) { continue; } cidrList = r.getSourceCidrList(); if (cidrList != null) { if (cidrList.size() > 1 || !r.getSourcePortEnd().equals(r.getSourcePortStart())) { throw new ResourceUnavailableException("One CIDR and one port only please.", Network.class, network.getId()); } else { cidr = cidrList.get(0); } } if (cidr == null || cidr.equalsIgnoreCase("0.0.0.0/0")) { cidr = ""; } else { utils = new SubnetUtils(cidr); if (!utils.getInfo().getNetworkAddress().equals(utils.getInfo().getAddress())) { throw new ResourceUnavailableException("Invalid CIDR in Network ACL rule.", Network.class, network.getId()); } } } updateBcfRouter(network); return true; }
From source file:eu.smartenit.sdn.floodlight090.dtm.DTM.java
/** * Returns output port of switch for a new flow. * * @return output port number//from w w w .j a va 2 s. co m */ public synchronized short getReactiveWithReferenceOutOfPortNumber() { logger.debug("getOutOfPortNumberReactiveWithReference() begin"); if (configData == null) { throw new IllegalArgumentException("DTM has not been configured yet"); } if (rVectorMap.isEmpty() || cVectorMap.isEmpty()) { throw new IllegalArgumentException("Vectors not set"); } OFPacketIn pi = getOFPacketIn(); String piDestAddr = intToStringIp( new OFMatch().loadFromPacket(pi.getPacketData(), pi.getInPort()).getNetworkDestination()); logger.debug("Network dest = " + intToStringIp( new OFMatch().loadFromPacket(pi.getPacketData(), pi.getInPort()).getNetworkDestination())); short[] selectedDaRouterOfPortNumber = null; for (ConfigDataEntry entry : configData.getEntries()) { String subnet = entry.getRemoteDcPrefix().getPrefix() + "/" + Integer.toString(entry.getRemoteDcPrefix().getPrefixLength()); SubnetUtils utils = new SubnetUtils(subnet); if (utils.getInfo().isInRange(piDestAddr)) { selectedDaRouterOfPortNumber = new short[] { (short) entry.getTunnels().get(0).getDaRouterOfPortNumber(), (short) entry.getTunnels().get(1).getDaRouterOfPortNumber() }; logger.debug("IP " + piDestAddr + " in range " + subnet); } } if (selectedDaRouterOfPortNumber == null) { logger.debug("Destination host unreachable! Wrong IP address: " + piDestAddr); logger.debug("getOutOfPortNumberReactiveWithReference() end"); return 0; } logger.debug("Selected DA router ports: " + Arrays.toString(selectedDaRouterOfPortNumber)); double[] C = { daRouterCVectorMap.get(selectedDaRouterOfPortNumber[0]), daRouterCVectorMap.get(selectedDaRouterOfPortNumber[1]), }; double[] R = { daRouterRVectorMap.get(selectedDaRouterOfPortNumber[0]), daRouterRVectorMap.get(selectedDaRouterOfPortNumber[1]), }; if (daRouterCompenstatingToTunnelMap.get(selectedDaRouterOfPortNumber[0]) > 0) { compensatingToTunnel = 1; } else if (daRouterCompenstatingToTunnelMap.get(selectedDaRouterOfPortNumber[1]) > 0) { compensatingToTunnel = 2; } else { compensatingToTunnel = 0; } double[] normalizedR = { R[0] / (R[0] + R[1]), R[1] / (R[0] + R[1]) }; double[] invNormalizedR = { normalizedR[1], normalizedR[0] }; double[] traffic = new double[LINK_COUNT]; double trafficDCDC = 0; for (int i = 0; i < LINK_COUNT; i++) { traffic[i] = transmittedBytesMap.get(selectedDaRouterOfPortNumber[i]) - transmittedBytesStartMap.get(selectedDaRouterOfPortNumber[i]); trafficDCDC += traffic[i]; } int tunnel; if (compensatingToTunnel != 0) { // compensate == true int ti = compensatingToTunnel - 1; if (traffic[ti] < C[ti] / invNormalizedR[ti]) { tunnel = compensatingToTunnel; logger.debug("Compensating to tunnel " + tunnel); } else { resetTransmittedBytesStart(selectedDaRouterOfPortNumber[0]); resetTransmittedBytesStart(selectedDaRouterOfPortNumber[1]); if (compensatingToTunnel == 1) { tunnel = 2; } else { tunnel = 1; } logger.debug("Turning off compensation, sending flow to tunnel " + tunnel); compensatingToTunnel = 0; // compensate = false daRouterCompenstatingToTunnelMap.put(selectedDaRouterOfPortNumber[0], (short) 0); daRouterCompenstatingToTunnelMap.put(selectedDaRouterOfPortNumber[1], (short) 0); } } else { if (traffic[0] / trafficDCDC <= normalizedR[0]) { tunnel = 1; } else { tunnel = 2; } logger.debug("Not compensating, sending flow to tunnel " + tunnel); } // change tunnel to DA Router port number if (tunnel == 1) { daRouterOfPortNumber = selectedDaRouterOfPortNumber[0]; } else if (tunnel == 2) { daRouterOfPortNumber = selectedDaRouterOfPortNumber[1]; } else { daRouterOfPortNumber = 0; //drop flow } logger.debug("Summary:"); logger.debug("\t C: " + Arrays.toString(C)); logger.debug("\t normalizedR: " + Arrays.toString(normalizedR)); logger.debug("\t transmittedBytesStart: " + transmittedBytesStartMap.toString()); logger.debug("\t transmittedBytes: " + transmittedBytesMap.toString()); logger.debug("\t traffic: " + Arrays.toString(traffic) + ", trafficDAB: " + trafficDCDC); logger.debug("\t OFPortNumber: " + daRouterOfPortNumber); logger.debug("getOutOfPortNumberReactiveWithReference() end"); return (short) daRouterOfPortNumber; }
From source file:com.cloud.network.element.BigSwitchBcfElement.java
@Override public boolean applyFWRules(Network network, List<? extends FirewallRule> rules) throws ResourceUnavailableException { SubnetUtils utils;//from www . j av a 2s .co m String cidr = null; List<String> cidrList; for (FirewallRule r : rules) { if (r.getState() == FirewallRule.State.Revoke) { continue; } cidrList = r.getSourceCidrList(); if (cidrList != null) { if (cidrList.size() > 1 || !r.getSourcePortEnd().equals(r.getSourcePortStart())) { throw new ResourceUnavailableException("One CIDR and one port only please.", Network.class, network.getId()); } else { cidr = cidrList.get(0); } } if (cidr == null || cidr.equalsIgnoreCase("0.0.0.0/0")) { cidr = ""; } else { utils = new SubnetUtils(cidr); if (!utils.getInfo().getNetworkAddress().equals(utils.getInfo().getAddress())) { throw new ResourceUnavailableException("Invalid CIDR in Firewall rule.", Network.class, network.getId()); } } } updateBcfRouter(network); return true; }
From source file:com.buaa.cfs.utils.NetUtils.java
/** * @return true if the given string is a subnet specified using CIDR notation, false otherwise *///from w w w. j a v a 2 s.c o m public static boolean isValidSubnet(String subnet) { try { new SubnetUtils(subnet); return true; } catch (IllegalArgumentException iae) { return false; } }
From source file:com.buaa.cfs.utils.NetUtils.java
/** * Return an InetAddress for each interface that matches the given subnet specified using CIDR notation. * * @param subnet subnet specified using CIDR notation * @param returnSubinterfaces whether to return IPs associated with subinterfaces * * @throws IllegalArgumentException if subnet is invalid *//*from w w w.ja v a2 s. c o m*/ public static List<InetAddress> getIPs(String subnet, boolean returnSubinterfaces) { List<InetAddress> addrs = new ArrayList<InetAddress>(); SubnetInfo subnetInfo = new SubnetUtils(subnet).getInfo(); Enumeration<NetworkInterface> nifs; try { nifs = NetworkInterface.getNetworkInterfaces(); } catch (SocketException e) { LOG.error("Unable to get host interfaces", e); return addrs; } while (nifs.hasMoreElements()) { NetworkInterface nif = nifs.nextElement(); // NB: adding addresses even if the nif is not up addMatchingAddrs(nif, subnetInfo, addrs); if (!returnSubinterfaces) { continue; } Enumeration<NetworkInterface> subNifs = nif.getSubInterfaces(); while (subNifs.hasMoreElements()) { addMatchingAddrs(subNifs.nextElement(), subnetInfo, addrs); } } return addrs; }
From source file:eu.smartenit.sdn.floodlight090.dtm.DTM.java
public synchronized short getReactiveWithoutReferenceOutOfPortNumber() { logger.debug("getOutOfPortNumberReactiveWithoutReference() begin"); if (configData == null) { throw new IllegalArgumentException("DTM has not been configured yet"); }/*from www. j ava 2 s .c om*/ if (cVectorMap.isEmpty()) { throw new IllegalArgumentException("Compensation vector empty"); } OFPacketIn pi = getOFPacketIn(); String piDestAddr = intToStringIp( new OFMatch().loadFromPacket(pi.getPacketData(), pi.getInPort()).getNetworkDestination()); logger.debug("Network dest = " + intToStringIp( new OFMatch().loadFromPacket(pi.getPacketData(), pi.getInPort()).getNetworkDestination())); short[] selectedDaRouterOfPortNumber = null; for (ConfigDataEntry entry : configData.getEntries()) { String subnet = entry.getRemoteDcPrefix().getPrefix() + "/" + Integer.toString(entry.getRemoteDcPrefix().getPrefixLength()); SubnetUtils utils = new SubnetUtils(subnet); if (utils.getInfo().isInRange(piDestAddr)) { selectedDaRouterOfPortNumber = new short[] { (short) entry.getTunnels().get(0).getDaRouterOfPortNumber(), (short) entry.getTunnels().get(1).getDaRouterOfPortNumber() }; logger.debug("IP " + piDestAddr + " in range " + subnet); } } if (selectedDaRouterOfPortNumber == null) { logger.debug("Destination host unreachable! Wrong IP address: " + piDestAddr); logger.debug("getOutOfPortNumberReactiveWithoutReference"); return 0; } logger.debug("Selected DA router ports: " + Arrays.toString(selectedDaRouterOfPortNumber)); double[] C = { daRouterCVectorMap.get(selectedDaRouterOfPortNumber[0]), daRouterCVectorMap.get(selectedDaRouterOfPortNumber[1]), }; if (C[0] >= 0) { daRouterOfPortNumber = selectedDaRouterOfPortNumber[0]; } else if (C[1] >= 0) { daRouterOfPortNumber = selectedDaRouterOfPortNumber[1]; } else { daRouterOfPortNumber = 0; } logger.debug("Summary:"); logger.debug("\t OFPortNumber: " + daRouterOfPortNumber); logger.debug("getOutOfPortNumberReactiveWithoutReference() end"); return (short) daRouterOfPortNumber; }
From source file:com.topsec.tsm.sim.asset.web.AssetListController.java
/** * ?/* ww w .jav a 2 s . c o m*/ * @param networkAddressParam ? * @param nodeId ?? * @param netmask ? * @return */ @RequestMapping("assetDiscover") @ResponseBody public Object assetDiscover( @RequestParam(value = "networkAddress", required = false) String networkAddressParam, @RequestParam(value = "netmask", defaultValue = "24") int netmask, @RequestParam(value = "scanNodeId", required = false) String nodeId, @RequestParam(value = "rescan", defaultValue = "false") boolean rescan) { Result result = new Result(); try { //???127.0.0.1::1ip?? if (StringUtil.isBlank(networkAddressParam) || networkAddressParam.equals(IpAddress.getLocalIp().getLocalhostAddress())) { networkAddressParam = IpAddress.getLocalIpv4Address().toString(); } Node scanNode = nodeMgr.getChildOrSelf(nodeId, NodeDefinition.NODE_TYPE_COLLECTOR); SubnetUtils subnetUtils = new SubnetUtils(networkAddressParam + "/" + netmask); String networkAddress = subnetUtils.getInfo().getNetworkAddress(); int assetCount = subnetUtils.getInfo().getAddressCount(); if (assetCount > MAX_SCAN_HOST_COUNT) {//???? result.buildError("????(" + MAX_SCAN_HOST_COUNT + ")?????"); return result; } if (rescan) {//??? dcvAssetManager.removeSubnet(new SubNet(scanNode.getIp(), networkAddress, netmask)); } JSONObject data = new JSONObject(); JSONArray assetsJson = new JSONArray(); SubNet subnet = dcvAssetManager.getSubNet(scanNode.getIp(), networkAddress, netmask); if (subnet == null) { result = sendDiscoverCommand(scanNode, networkAddress, netmask, assetCount); } else { if (ObjectUtils.isNotEmpty(subnet.getAssets())) { Node manageNode = nodeMgr.getAuditorOrAgentByIp(subnet.getScanHost()); for (AssetObject asset : subnet.getAssets()) { JSONObject assetJson = FastJsonUtil.toJSON(asset, "scanNodeId=nodeId", "ip", "mac", "assGroup.groupId=groupId", "assGroup.groupName=groupName"); assetJson.put("nodeId", manageNode == null ? nodeMgr.getKernelAuditor(false).getNodeId() : manageNode.getNodeId()); assetsJson.add(assetJson); } } result.build(true); } data.put("rows", assetsJson); data.put("total", assetsJson.size()); data.put("progress", subnet == null ? 0 : subnet.getProgress()); result.setResult(data); } catch (Exception e) { logger.error("assetlist/assetDiscover", e); result.buildError("?"); } return result; }
From source file:com.infinities.skyport.openstack.nova.os.compute.SkyportNovaServer.java
/** * @param server//from ww w.ja v a 2 s .c o m * @param nets * @param ipv6 * @param ipv4 * @return * @throws InternalException * @throws JSONException * @throws CloudException */ private NovaStyleVirtualMachine toNovaStyleVirtualMachine(JSONObject server, Iterable<IpAddress> ipv4, Iterable<IpAddress> ipv6, Iterable<VLAN> networks) throws InternalException, JSONException, CloudException { if (server == null) { return null; } NovaStyleVirtualMachine vm = new NovaStyleVirtualMachine(); String description = null; // vm.setCurrentState(VmState.RUNNING); vm.setArchitecture(Architecture.I64); vm.setClonable(false); vm.setCreationTimestamp(-1L); vm.setImagable(false); vm.setLastBootTimestamp(-1L); vm.setLastPauseTimestamp(-1L); vm.setPausable(false); vm.setPersistent(true); vm.setPlatform(Platform.UNKNOWN); vm.setRebootable(true); vm.setProviderOwnerId(novaServer.getTenantId()); if (novaServer.getCloudProvider().equals(OpenStackProvider.RACKSPACE)) { vm.setPersistent(false); } if (server.has("id")) { vm.setProviderVirtualMachineId(server.getString("id")); } else return null; if (server.has("name")) { vm.setName(server.getString("name")); } if (server.has("description") && !server.isNull("description")) { description = server.getString("description"); } if (server.has("kernel_id")) { vm.setProviderKernelImageId(server.getString("kernel_id")); } if (server.has("ramdisk_id")) { vm.setProviderRamdiskImageId(server.getString("ramdisk_id")); } JSONObject md = (server.has("metadata") && !server.isNull("metadata")) ? server.getJSONObject("metadata") : null; Map<String, String> map = new HashMap<String, String>(); boolean imaging = false; if (md != null) { if (md.has("org.dasein.description") && vm.getDescription() == null) { description = md.getString("org.dasein.description"); } else if (md.has("Server Label")) { description = md.getString("Server Label"); } if (md.has("org.dasein.platform")) { try { vm.setPlatform(Platform.valueOf(md.getString("org.dasein.platform"))); } catch (Throwable ignore) { // ignore } } String[] keys = JSONObject.getNames(md); if (keys != null) { for (String key : keys) { String value = md.getString(key); if (value != null) { map.put(key, value); } } } } if (server.has("OS-EXT-STS:task_state") && !server.isNull("OS-EXT-STS:task_state")) { String t = server.getString("OS-EXT-STS:task_state"); map.put("OS-EXT-STS:task_state", t); imaging = t.equalsIgnoreCase("image_snapshot"); } if (description == null) { if (vm.getName() == null) { vm.setName(vm.getProviderVirtualMachineId()); } vm.setDescription(vm.getName()); } else { vm.setDescription(description); } if (server.has("hostId")) { map.put("host", server.getString("hostId")); } vm.setTags(map); if (server.has("image") && !server.isNull("image")) { try { JSONObject img = server.getJSONObject("image"); if (img.has("id")) { vm.setProviderMachineImageId(img.getString("id")); } } catch (JSONException ex) { logger.error("Unable to parse the image object"); try { server.getString("image"); logger.error( "Image object has been returned as a string from cloud " + server.getString("image")); } catch (JSONException ignore) { } } } if (server.has("flavor")) { JSONObject f = server.getJSONObject("flavor"); if (f.has("id")) { vm.setProductId(f.getString("id")); } } else if (server.has("flavorId")) { vm.setProductId(server.getString("flavorId")); } if (server.has("adminPass")) { vm.setRootPassword(server.getString("adminPass")); } if (server.has("key_name")) { vm.setProviderShellKeyIds(server.getString("key_name")); } if (server.has("status")) { String s = server.getString("status").toLowerCase(); if (s.equals("active")) { vm.setCurrentState(VmState.RUNNING); } else if (s.startsWith("build")) { vm.setCurrentState(VmState.PENDING); } else if (s.equals("deleted")) { vm.setCurrentState(VmState.TERMINATED); } else if (s.equals("suspended")) { vm.setCurrentState(VmState.SUSPENDED); } else if (s.equalsIgnoreCase("paused")) { vm.setCurrentState(VmState.PAUSED); } else if (s.equalsIgnoreCase("stopped") || s.equalsIgnoreCase("shutoff")) { vm.setCurrentState(VmState.STOPPED); } else if (s.equalsIgnoreCase("stopping")) { vm.setCurrentState(VmState.STOPPING); } else if (s.equalsIgnoreCase("pausing")) { vm.setCurrentState(VmState.PAUSING); } else if (s.equalsIgnoreCase("suspending")) { vm.setCurrentState(VmState.SUSPENDING); } else if (s.equals("error")) { vm.setCurrentState(VmState.ERROR); } else if (s.equals("reboot") || s.equals("hard_reboot")) { vm.setCurrentState(VmState.REBOOTING); } else { logger.warn("toVirtualMachine(): Unknown server state: " + s); vm.setCurrentState(VmState.PENDING); } } if (vm.getCurrentState() == null && imaging) { vm.setCurrentState(VmState.PENDING); } if (server.has("created")) { vm.setCreationTimestamp(NovaOpenStack.parseTimestamp(server.getString("created"))); } if (server.has("addresses")) { JSONObject addrs = server.getJSONObject("addresses"); String[] names = JSONObject.getNames(addrs); if (names != null && names.length > 0) { List<SkyportRawAddress> pub = new ArrayList<SkyportRawAddress>(); List<SkyportRawAddress> priv = new ArrayList<SkyportRawAddress>(); for (String name : names) { JSONArray arr = addrs.getJSONArray(name); String subnet = null; for (int i = 0; i < arr.length(); i++) { SkyportRawAddress addr = null; String type = null; if (novaServer.getMinorVersion() == 0 && novaServer.getMajorVersion() == 1) { addr = new SkyportRawAddress(arr.getString(i).trim(), IPVersion.IPV4, name); } else { JSONObject a = arr.getJSONObject(i); type = a.optString("OS-EXT-IPS:type"); if (a.has("version") && a.getInt("version") == 4 && a.has("addr")) { subnet = a.getString("addr"); addr = new SkyportRawAddress(a.getString("addr"), IPVersion.IPV4, name); } else if (a.has("version") && a.getInt("version") == 6 && a.has("addr")) { subnet = a.getString("addr"); addr = new SkyportRawAddress(a.getString("addr"), IPVersion.IPV6, name); } } if (addr != null) { if ("public".equalsIgnoreCase(name) || "internet".equalsIgnoreCase(name)) { pub.add(addr); } else if ("floating".equalsIgnoreCase(type)) { pub.add(addr); } else if ("fixed".equalsIgnoreCase(type)) { priv.add(addr); } else if (addr.isPublicIpAddress()) { pub.add(addr); } else { priv.add(addr); } } } if (vm.getProviderVlanId() == null) { // && // !name.equals("public") // && // !name.equals("private") // && // !name.equals("nova_fixed") // ) { for (VLAN network : networks) { if (network.getName().equals(name)) { vm.setProviderVlanId(network.getProviderVlanId()); // get subnet NetworkServices services = novaServer.getNovaOpenStack().getNetworkServices(); VLANSupport support = services.getVlanSupport(); Iterable<Subnet> subnets = support.listSubnets(network.getProviderVlanId()); for (Subnet sub : subnets) { try { SubnetUtils utils = new SubnetUtils(sub.getCidr()); if (utils.getInfo().isInRange(subnet)) { vm.setProviderSubnetId(sub.getProviderSubnetId()); break; } } catch (IllegalArgumentException arg) { logger.warn("Couldn't match against an invalid CIDR: " + sub.getCidr()); continue; } } break; } } } } vm.setPublicAddresses(pub.toArray(new SkyportRawAddress[pub.size()])); vm.setPrivateAddresses(priv.toArray(new SkyportRawAddress[priv.size()])); } SkyportRawAddress[] raw = vm.getPublicAddresses(); if (raw != null) { for (SkyportRawAddress addr : vm.getPublicAddresses()) { if (addr.getVersion().equals(IPVersion.IPV4)) { for (IpAddress a : ipv4) { if (a.getRawAddress().getIpAddress().equals(addr.getIpAddress())) { vm.setProviderAssignedIpAddressId(a.getProviderIpAddressId()); break; } } } else if (addr.getVersion().equals(IPVersion.IPV6)) { for (IpAddress a : ipv6) { if (a.getRawAddress().getIpAddress().equals(addr.getIpAddress())) { vm.setProviderAssignedIpAddressId(a.getProviderIpAddressId()); break; } } } } } if (vm.getProviderAssignedIpAddressId() == null) { for (IpAddress addr : ipv4) { String serverId = addr.getServerId(); if (serverId != null && serverId.equals(vm.getProviderVirtualMachineId())) { vm.setProviderAssignedIpAddressId(addr.getProviderIpAddressId()); break; } } if (vm.getProviderAssignedIpAddressId() == null) { for (IpAddress addr : ipv6) { String serverId = addr.getServerId(); if (serverId != null && addr.getServerId().equals(vm.getProviderVirtualMachineId())) { vm.setProviderAssignedIpAddressId(addr.getProviderIpAddressId()); break; } } } } if (vm.getProviderAssignedIpAddressId() == null) { for (IpAddress addr : ipv6) { if (addr.getServerId().equals(vm.getProviderVirtualMachineId())) { vm.setProviderAssignedIpAddressId(addr.getProviderIpAddressId()); break; } } } } vm.setProviderRegionId(novaServer.getRegionId()); vm.setProviderDataCenterId(vm.getProviderRegionId() + "-a"); vm.setTerminationTimestamp(-1L); if (vm.getName() == null) { vm.setName(vm.getProviderVirtualMachineId()); } if (vm.getDescription() == null) { vm.setDescription(vm.getName()); } if (Platform.UNKNOWN.equals(vm.getPlatform())) { vm.setPlatform( novaServer.getPlatform(vm.getName(), vm.getDescription(), vm.getProviderMachineImageId())); } vm.setImagable(vm.getCurrentState() == null); vm.setRebootable(vm.getCurrentState() == null); if (novaServer.getCloudProvider().equals(OpenStackProvider.RACKSPACE)) { // Rackspace does not support the concept for firewalls in servers vm.setProviderFirewallIds(null); } else { Iterable<String> fwIds = novaServer.listFirewalls(vm.getProviderVirtualMachineId(), server); int count = Iterators.size(fwIds.iterator()); String[] ids = new String[count]; int i = 0; for (String id : fwIds) { ids[i++] = id; } vm.setProviderFirewallIds(ids); } return vm; }