package org.openstack.atlas.adapter.helpers;
import org.openstack.atlas.service.domain.pojos.Stats;
import org.rackspace.stingray.client.counters.VirtualServerStats;
import org.rackspace.stingray.client.counters.VirtualServerStatsProperties;
import java.util.List;
public class CustomMappings {
public static Stats mapVirtualServerStats(VirtualServerStats virtualServerStats, VirtualServerStats virtualServerStatsSsl) {
Stats stats = new Stats();
VirtualServerStatsProperties properties = virtualServerStats.getStatistics();
VirtualServerStatsProperties propertiesSsl = virtualServerStatsSsl.getStatistics();
stats.setConnectError(new int[]{properties.getConnection_errors()});
stats.setConnectFailure(new int[]{properties.getConnection_failures()});
stats.setConnectTimeOut(new int[]{properties.getConnect_timed_out()});
stats.setCurrentConn(new int[]{properties.getCurrent_conn()});
stats.setDataTimedOut(new int[]{properties.getData_timed_out()});
stats.setKeepAliveTimedOut(new int[]{properties.getKeepalive_timed_out()});
stats.setMaxConn(new int[]{properties.getMax_conn()});
stats.setConnectErrorSsl(new int[]{propertiesSsl.getConnection_errors()});
stats.setConnectFailureSsl(new int[]{propertiesSsl.getConnection_failures()});
stats.setConnectTimeOutSsl(new int[]{propertiesSsl.getConnect_timed_out()});
stats.setCurrentConnSsl(new int[]{propertiesSsl.getCurrent_conn()});
stats.setDataTimedOutSsl(new int[]{propertiesSsl.getData_timed_out()});
stats.setKeepAliveTimedOutSsl(new int[]{propertiesSsl.getKeepalive_timed_out()});
stats.setMaxConnSsl(new int[]{propertiesSsl.getMax_conn()});
return stats;
}
public static Stats mapVirtualServerStatsLists(List<VirtualServerStats> virtualServerStats, List<VirtualServerStats> virtualServerStatsSsl) {
int[] connectionTimedOut = new int[1];
int[] connectionError = new int[1];
int[] connectionFailure = new int[1];
int[] dataTimedOut = new int[1];
int[] keepaliveTimedOut = new int[1];
int[] maxConnections = new int[]{0};
int[] currentConnections = new int[1];
int[] connectionTimedOutSsl = new int[1];
int[] connectionErrorSsl = new int[1];
int[] connectionFailureSsl = new int[1];
int[] dataTimedOutSsl = new int[1];
int[] keepaliveTimedOutSsl = new int[1];
int[] maxConnectionsSsl = new int[1];
int[] currentConnectionsSsl = new int[1];
Stats stats = new Stats();
for (VirtualServerStats vss : virtualServerStats) {
VirtualServerStatsProperties properties = vss.getStatistics();
connectionError[0] += properties.getConnection_errors();
connectionFailure[0] += properties.getConnection_failures();
connectionTimedOut[0] += properties.getConnect_timed_out();
currentConnections[0] += properties.getCurrent_conn();
dataTimedOut[0] += properties.getData_timed_out();
keepaliveTimedOut[0] += properties.getKeepalive_timed_out();
Integer max = properties.getMax_conn();
if (max > maxConnections[0]) {
maxConnections[0] = max;
}
}
for (VirtualServerStats vsss : virtualServerStatsSsl) {
VirtualServerStatsProperties propertiesSsl = vsss.getStatistics();
connectionErrorSsl[0] += propertiesSsl.getConnection_errors();
connectionFailureSsl[0] += propertiesSsl.getConnection_failures();
connectionTimedOutSsl[0] += propertiesSsl.getConnect_timed_out();
currentConnections[0] += propertiesSsl.getCurrent_conn();
dataTimedOutSsl[0] += propertiesSsl.getData_timed_out();
keepaliveTimedOutSsl[0] += propertiesSsl.getKeepalive_timed_out();
Integer maxSsl = propertiesSsl.getMax_conn();
if (maxSsl > maxConnectionsSsl[0]) {
maxConnectionsSsl[0] = maxSsl;
}
}
stats.setConnectTimeOut(connectionTimedOut);
stats.setConnectError(connectionError);
stats.setConnectFailure(connectionFailure);
stats.setDataTimedOut(dataTimedOut);
stats.setKeepAliveTimedOut(keepaliveTimedOut);
stats.setMaxConn(maxConnections);
stats.setCurrentConn(currentConnections);
stats.setConnectTimeOutSsl(connectionTimedOutSsl);
stats.setConnectErrorSsl(connectionErrorSsl);
stats.setConnectFailureSsl(connectionFailureSsl);
stats.setDataTimedOutSsl(dataTimedOutSsl);
stats.setKeepAliveTimedOutSsl(keepaliveTimedOutSsl);
stats.setMaxConnSsl(maxConnectionsSsl);
stats.setCurrentConnSsl(currentConnectionsSsl);
return stats;
}
}