package org.openstack.atlas.usage.helpers;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public final class ZxtmNameHelper {
public static final Log LOG = LogFactory.getLog(ZxtmNameHelper.class);
/*
* A loadbalancer has the following format in Zeus: 'accountId_loadBalancerId'
* For example, account 1234 has load balancer 56. The virtual server name in
* Zeus is then '1234_56'. If is has ssl then it will be suffixed with '_S'.
*/
public static Integer stripAccountIdFromZxtmName(String zxtmName) throws NumberFormatException, ArrayIndexOutOfBoundsException {
return Integer.valueOf(zxtmName.split("_")[0]);
}
public static Integer stripLbIdFromZxtmName(String zxtmName) throws NumberFormatException, ArrayIndexOutOfBoundsException {
return Integer.valueOf(zxtmName.split("_")[1]);
}
public static Map<Integer, Integer> stripLbIdAndAccountIdFromZxtmName(List<String> loadBalancerNames) {
Map<Integer, Integer> lbIdAccountIdMap = new HashMap<Integer, Integer>();
for (String loadBalancerName : loadBalancerNames) {
try {
Integer accountId = ZxtmNameHelper.stripAccountIdFromZxtmName(loadBalancerName);
Integer lbId = ZxtmNameHelper.stripLbIdFromZxtmName(loadBalancerName);
lbIdAccountIdMap.put(lbId, accountId);
} catch (NumberFormatException e) {
LOG.warn(String.format("Invalid load balancer name '%s'. Skipping...", loadBalancerName));
} catch (ArrayIndexOutOfBoundsException e) {
LOG.warn(String.format("Invalid load balancer name '%s'. Skipping...", loadBalancerName));
}
}
return lbIdAccountIdMap;
}
public static Map<Integer, Integer> stripLbIdAndAccountIdFromZxtmName(Collection<LoadBalancerNameMap> loadBalancerNameMaps) {
Map<Integer, Integer> lbIdAccountIdMap = new HashMap<Integer, Integer>();
for (String loadBalancerName : LoadBalancerNameMap.loadBalancerNames(loadBalancerNameMaps)) {
try {
Integer accountId = ZxtmNameHelper.stripAccountIdFromZxtmName(loadBalancerName);
Integer lbId = ZxtmNameHelper.stripLbIdFromZxtmName(loadBalancerName);
lbIdAccountIdMap.put(lbId, accountId);
} catch (NumberFormatException e) {
LOG.warn(String.format("Invalid load balancer name '%s'. Skipping...", loadBalancerName));
} catch (ArrayIndexOutOfBoundsException e) {
LOG.warn(String.format("Invalid load balancer name '%s'. Skipping...", loadBalancerName));
}
}
for (String loadBalancerName : LoadBalancerNameMap.loadBalancerSslNames(loadBalancerNameMaps)) {
try {
Integer accountId = ZxtmNameHelper.stripAccountIdFromZxtmName(loadBalancerName);
Integer lbId = ZxtmNameHelper.stripLbIdFromZxtmName(loadBalancerName);
lbIdAccountIdMap.put(lbId, accountId);
} catch (NumberFormatException e) {
LOG.warn(String.format("Invalid load balancer name '%s'. Skipping...", loadBalancerName));
} catch (ArrayIndexOutOfBoundsException e) {
LOG.warn(String.format("Invalid load balancer name '%s'. Skipping...", loadBalancerName));
}
}
return lbIdAccountIdMap;
}
}