List of usage examples for org.apache.commons.net.util SubnetUtils getInfo
public final SubnetInfo getInfo()
From source file:com.infinities.skyport.openstack.nova.os.compute.SkyportNovaServer.java
/** * @param server/*from w w w .j a 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; }
From source file:nfinity.FindPeer.java
public String ScanNetwork() { try {//from w w w . j a v a 2 s . c o m Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface netint : Collections.list(nets)) { Enumeration<InetAddress> inetAddresses = netint.getInetAddresses(); for (InetAddress inetAddress : Collections.list(inetAddresses)) { if (!inetAddress.getClass().toString().equals("class java.net.Inet6Address")) { if (!inetAddress.isLoopbackAddress()) { try { SubnetUtils utils = new SubnetUtils(inetAddress.getHostAddress() + "/" + netint.getInterfaceAddresses().get(1).getNetworkPrefixLength()); String[] allIps = utils.getInfo().getAllAddresses(); return ConnectIP(allIps, inetAddress); } catch (IllegalArgumentException ex) { int prefix = NetworkInterface.getByInetAddress(inetAddress).getInterfaceAddresses() .get(0).getNetworkPrefixLength(); if (!inetAddress.isLoopbackAddress()) { System.out .println("IP: " + inetAddress.getHostAddress() + " Prefix: " + prefix); SubnetUtils utils = new SubnetUtils( inetAddress.getHostAddress() + "/" + prefix); String[] allIps = utils.getInfo().getAllAddresses(); return ConnectIP(allIps, inetAddress); } } } } } } } catch (SocketException ex) { System.out.println("Connection failed " + ex.getMessage()); } return "Peer not found"; }
From source file:org.apache.commons.net.examples.cidr.SubnetUtilsExample.java
public static void main(String[] args) { String subnet = "192.168.0.3/31"; SubnetUtils utils = new SubnetUtils(subnet); SubnetInfo info = utils.getInfo(); System.out.printf("Subnet Information for %s:%n", subnet); System.out.println("--------------------------------------"); System.out.printf("IP Address:\t\t\t%s\t[%s]%n", info.getAddress(), Integer.toBinaryString(info.asInteger(info.getAddress()))); System.out.printf("Netmask:\t\t\t%s\t[%s]%n", info.getNetmask(), Integer.toBinaryString(info.asInteger(info.getNetmask()))); System.out.printf("CIDR Representation:\t\t%s%n%n", info.getCidrSignature()); System.out.printf("Supplied IP Address:\t\t%s%n%n", info.getAddress()); System.out.printf("Network Address:\t\t%s\t[%s]%n", info.getNetworkAddress(), Integer.toBinaryString(info.asInteger(info.getNetworkAddress()))); System.out.printf("Broadcast Address:\t\t%s\t[%s]%n", info.getBroadcastAddress(), Integer.toBinaryString(info.asInteger(info.getBroadcastAddress()))); System.out.printf("Low Address:\t\t\t%s\t[%s]%n", info.getLowAddress(), Integer.toBinaryString(info.asInteger(info.getLowAddress()))); System.out.printf("High Address:\t\t\t%s\t[%s]%n", info.getHighAddress(), Integer.toBinaryString(info.asInteger(info.getHighAddress()))); System.out.printf("Total usable addresses: \t%d%n", Long.valueOf(info.getAddressCountLong())); System.out.printf("Address List: %s%n%n", Arrays.toString(info.getAllAddresses())); final String prompt = "Enter an IP address (e.g. 192.168.0.10):"; System.out.println(prompt);/*w w w . j a va2 s. c om*/ Scanner scanner = new Scanner(System.in); while (scanner.hasNextLine()) { String address = scanner.nextLine(); System.out.println("The IP address [" + address + "] is " + (info.isInRange(address) ? "" : "not ") + "within the subnet [" + subnet + "]"); System.out.println(prompt); } scanner.close(); }
From source file:org.apache.hadoop.util.MachineList.java
/** * Accepts a collection of ip/cidr/host addresses * // w w w .jav a 2s. co m * @param hostEntries * @param addressFactory addressFactory to convert host to InetAddress */ public MachineList(Collection<String> hostEntries, InetAddressFactory addressFactory) { this.addressFactory = addressFactory; if (hostEntries != null) { if ((hostEntries.size() == 1) && (hostEntries.contains(WILDCARD_VALUE))) { all = true; ipAddresses = null; hostNames = null; cidrAddresses = null; } else { all = false; Set<String> ips = new HashSet<String>(); List<SubnetUtils.SubnetInfo> cidrs = new LinkedList<SubnetUtils.SubnetInfo>(); Set<String> hosts = new HashSet<String>(); for (String hostEntry : hostEntries) { //ip address range if (hostEntry.indexOf("/") > -1) { try { SubnetUtils subnet = new SubnetUtils(hostEntry); subnet.setInclusiveHostCount(true); cidrs.add(subnet.getInfo()); } catch (IllegalArgumentException e) { LOG.warn("Invalid CIDR syntax : " + hostEntry); throw e; } } else if (InetAddresses.isInetAddress(hostEntry)) { //ip address ips.add(hostEntry); } else { //hostname hosts.add(hostEntry); } } ipAddresses = (ips.size() > 0) ? ips : null; cidrAddresses = (cidrs.size() > 0) ? cidrs : null; hostNames = (hosts.size() > 0) ? hosts : null; } } else { all = false; ipAddresses = null; hostNames = null; cidrAddresses = null; } }
From source file:org.apache.metron.alerts.adapters.RangeChecker.java
static boolean checkRange(Set<String> CIDR_networks, String ip) { for (String network : CIDR_networks) { System.out.println("Looking at range: " + network + " and ip " + ip); SubnetUtils utils = new SubnetUtils(network); if (utils.getInfo().isInRange(ip)) { System.out.println(ip + " in range " + network); return true; }/* ww w . ja v a 2 s . c o m*/ } //no matches return false; }
From source file:org.apache.nifi.cluster.firewall.impl.FileBasedClusterNodeFirewall.java
private void parseConfig(final File config) throws IOException { // clear old information subnetInfos.clear();// ww w . ja v a 2s .c o m try (BufferedReader br = new BufferedReader(new FileReader(config))) { String ipOrHostLine; String ipCidr; int totalIpsAdded = 0; while ((ipOrHostLine = br.readLine()) != null) { // cleanup whitespace ipOrHostLine = ipOrHostLine.trim(); if (ipOrHostLine.isEmpty() || ipOrHostLine.startsWith("#")) { // skip empty lines or comments continue; } else if (ipOrHostLine.contains("#")) { // parse out comments in IP containing lines ipOrHostLine = ipOrHostLine.substring(0, ipOrHostLine.indexOf("#")).trim(); } // if given a complete IP, then covert to CIDR if (ipOrHostLine.contains("/")) { ipCidr = ipOrHostLine; } else if (ipOrHostLine.contains("\\")) { logger.warn( "CIDR IP notation uses forward slashes '/'. Replacing backslash '\\' with forward slash'/' for '{}'", ipOrHostLine); ipCidr = ipOrHostLine.replace("\\", "/"); } else { try { ipCidr = InetAddress.getByName(ipOrHostLine).getHostAddress(); if (!ipOrHostLine.equals(ipCidr)) { logger.debug("Resolved host '{}' to ip '{}'", ipOrHostLine, ipCidr); } ipCidr += "/32"; logger.debug("Adding CIDR to exact IP: '{}'", ipCidr); } catch (final UnknownHostException uhe) { logger.warn("Firewall is skipping unknown host address: '{}'", ipOrHostLine); continue; } } try { logger.debug("Adding CIDR IP to firewall: '{}'", ipCidr); final SubnetUtils subnetUtils = new SubnetUtils(ipCidr); subnetUtils.setInclusiveHostCount(true); subnetInfos.add(subnetUtils.getInfo()); totalIpsAdded++; } catch (final IllegalArgumentException iae) { logger.warn("Firewall is skipping invalid CIDR address: '{}'", ipOrHostLine); } } if (totalIpsAdded == 0) { logger.info("No IPs added to firewall. Firewall will accept all requests."); } else { logger.info( "Added {} IP(s) to firewall. Only requests originating from the configured IPs will be accepted.", totalIpsAdded); } } }
From source file:org.calrissian.mango.domain.CidrValueRangeIPv4.java
public CidrValueRangeIPv4(String cidrString) { SubnetUtils utils = new SubnetUtils(cidrString); SubnetUtils.SubnetInfo info = utils.getInfo(); setStart(new IPv4(info.getNetworkAddress())); setStop(new IPv4(info.getBroadcastAddress())); }
From source file:org.cloudsimulator.controller.LocalNetworkController.java
public LocalNetworkController(final LocalNetwork localNetwork) { super();/*from w ww .j ava 2 s . c o m*/ SubnetUtils subNetUtils = new SubnetUtils(localNetwork.getHasIPAddress(), localNetwork.getHasSubNetworkMask()); SubnetInfo subNetInfo = subNetUtils.getInfo(); this.allAddresses = subNetInfo.getAllAddresses(); this.addressCount = subNetInfo.getAddressCount(); this.localNetwork = localNetwork; }
From source file:org.csstudio.domain.common.net.GatewayUtil.java
public static boolean hasGateway() { boolean inSubnet = false; try {/* w ww. j a v a 2 s . co m*/ final InetAddress localHost = InetAddress.getLocalHost(); final String myAddress = localHost.getHostAddress(); final List<SubnetUtils> controlSubnets = getControlSubnets(); for (final SubnetUtils subnetUtils : controlSubnets) { inSubnet |= subnetUtils.getInfo().isInRange(myAddress); } } catch (final UnknownHostException e) { e.printStackTrace(); } finally { } return !inSubnet; }
From source file:org.dasein.cloud.openstack.nova.os.compute.NovaServer.java
protected @Nullable VirtualMachine toVirtualMachine(@Nullable JSONObject server, @Nonnull Iterable<IpAddress> ipv4, @Nonnull Iterable<IpAddress> ipv6, @Nonnull Iterable<VLAN> networks) throws JSONException, InternalException, CloudException { if (server == null) { return null; }/*w ww. j a va 2 s. c o m*/ VirtualMachine vm = new VirtualMachine(); 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(getTenantId()); if (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<RawAddress> pub = new ArrayList<RawAddress>(); List<RawAddress> priv = new ArrayList<RawAddress>(); for (String name : names) { JSONArray arr = addrs.getJSONArray(name); String subnet = null; for (int i = 0; i < arr.length(); i++) { RawAddress addr = null; String type = null; if (getMinorVersion() == 0 && getMajorVersion() == 1) { addr = new RawAddress(arr.getString(i).trim(), IPVersion.IPV4); } 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 RawAddress(a.getString("addr"), IPVersion.IPV4); } else if (a.has("version") && a.getInt("version") == 6 && a.has("addr")) { subnet = a.getString("addr"); addr = new RawAddress(a.getString("addr"), IPVersion.IPV6); } } 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 = getProvider().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 RawAddress[pub.size()])); vm.setPrivateAddresses(priv.toArray(new RawAddress[priv.size()])); } RawAddress[] raw = vm.getPublicAddresses(); if (raw != null) { for (RawAddress 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(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(getPlatform(vm.getName(), vm.getDescription(), vm.getProviderMachineImageId())); } vm.setImagable(vm.getCurrentState() == null); vm.setRebootable(vm.getCurrentState() == null); if (getCloudProvider().equals(OpenStackProvider.RACKSPACE)) { //Rackspace does not support the concept for firewalls in servers vm.setProviderFirewallIds(null); } else { Iterable<String> fwIds = listFirewalls(vm.getProviderVirtualMachineId(), server); int count = 0; //noinspection UnusedDeclaration for (String id : fwIds) { count++; } String[] ids = new String[count]; int i = 0; for (String id : fwIds) { ids[i++] = id; } vm.setProviderFirewallIds(ids); } return vm; }