/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.vnxe;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class VNXeUtils {
private static Logger _logger = LoggerFactory.getLogger(VNXeUtils.class);
private static final String HOST_NAME_PATTERN = "^(?![0-9]+$)(?:([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$";
// Regular Expression to match an IPv4 IP Address.
private static final String IPV4_PATTERN = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
// Regular Expression to match an IPv6 IP Address.
private static final String IPV6_PATTERN = "^([0-9a-fA-F]{1,4}|0)(\\:([0-9a-fA-F]{1,4}|0)){7}$";
private static int KBYTES = 1024;
public static boolean isHostType(String hostName) {
return hostName.matches(HOST_NAME_PATTERN);
}
public static boolean isIPV4Type(String ip) {
return ip.matches(IPV4_PATTERN);
}
public static boolean isIPV6Type(String ip) {
return ip.matches(IPV6_PATTERN);
}
public static String getHostIp(String hostName) throws UnknownHostException {
_logger.info("Host name: " + hostName);
String ipAddr = "";
InetAddress inetAddr = InetAddress.getByName(hostName);
byte[] addr = inetAddr.getAddress();
// Convert to dot representation
ipAddr = "";
for (int i = 0; i < addr.length; i++) {
if (i > 0) {
ipAddr += ".";
}
ipAddr += addr[i] & 0xFF;
}
_logger.info("IP Address: " + ipAddr);
return ipAddr;
}
public static String buildNfsShareName(String name, String path) {
if (path == null || path.isEmpty() || path.equalsIgnoreCase("/")) {
return name;
}
path = path.replace('/', '.');
name = String.format("%1$s.%2$s", name, path);
return name;
}
public static String convertCIDRToNetmask(int cidr) {
int mask = 0xffffffff << (32 - cidr);
int value = mask;
byte[] bytes = new byte[] {
(byte) (value >>> 24), (byte) (value >> 16 & 0xff), (byte) (value >> 8 & 0xff), (byte) (value & 0xff) };
InetAddress netAddr;
try {
netAddr = InetAddress.getByAddress(bytes);
} catch (UnknownHostException e) {
return null;
}
System.out.println("Mask=" + netAddr.getHostAddress());
return netAddr.getHostAddress();
}
public static long convertDoubleSizeToViPRLong(double size) {
double kSize = size / KBYTES;
return Double.valueOf(kSize).longValue();
}
public static boolean isHigherVersion(String currentVersion, String baseVersion) {
String delims = "[.]";
boolean isHigher = false;
String[] currentVersionTokens = currentVersion.split(delims);
String[] baseVersionTokens = baseVersion.split(delims);
for (int index = 0; index < 2; index++) {
if ((Integer.parseInt(currentVersionTokens[index])) > (Integer.parseInt(baseVersionTokens[index]))) {
isHigher = true;
break;
}
}
return isHigher;
}
}