java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java | 26 ++++++++-- 1 file changed, 22 insertions(+), 4 deletions(-)
New commits: commit d9c1258dd79b65de60e6463d0bc32d9bdc4f805b Author: Stephen Herr sherr@redhat.com Date: Thu Oct 25 11:24:56 2012 -0400
869428 - last_checkin date should be displayed as UTC for splice integration API
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java index 5e67f54..d3c1bba 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java @@ -147,6 +147,7 @@ import java.io.IOException; import java.io.StringReader; import java.sql.Blob; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -156,6 +157,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TimeZone; import java.util.regex.Matcher; import java.util.regex.Pattern;
@@ -612,6 +614,22 @@ public class SystemHandler extends BaseHandler { return SystemManager.systemListShortActive(loggedInUser, null); }
+ private Date convertLocalToUtc(Date in) { + Calendar c = Calendar.getInstance(); + c.setTime(in); + TimeZone z = c.getTimeZone(); + int offset = z.getRawOffset(); + if (z.inDaylightTime(in)) { + offset += z.getDSTSavings(); + } + int offsetHrs = offset / 1000 / 60 / 60; + int offsetMins = offset / 1000 / 60 % 60; + c.add(Calendar.HOUR_OF_DAY, (-offsetHrs)); + c.add(Calendar.MINUTE, (-offsetMins)); + c.set(Calendar.MILLISECOND, 0); + return c.getTime(); + } + /** * Given a list of server ids, will return details about the * systems that are active and visible to the user @@ -632,7 +650,7 @@ public class SystemHandler extends BaseHandler { * #prop_desc("int", "id", "The server's id") * #prop_desc("string", "name", "The server's name") * #prop_desc("dateTime.iso8601", "last_checkin", - * "Last time server successfully checked in ") + * "Last time server successfully checked in (in UTC)") * #prop_desc("int", "ram", "The amount of physical memory in MB.") * #prop_desc("int", "swap", "The amount of swap space in MB.") * #prop_desc("struct", "network_devices", "The server's network devices") @@ -656,8 +674,8 @@ public class SystemHandler extends BaseHandler { * #struct_end() * #array_end() */ - public List<Map<String, Object>> listActiveSystemDetails(String sessionKey, - List<Integer> serverIds) throws FaultException { + public List<Map<String, Object>> listActiveSystemsDetails( + String sessionKey, List<Integer> serverIds) throws FaultException { User loggedInUser = getLoggedInUser(sessionKey); List<Server> servers = XmlRpcSystemHelper.getInstance().lookupServers( loggedInUser, serverIds); @@ -667,7 +685,7 @@ public class SystemHandler extends BaseHandler { Map<String, Object> m = new HashMap<String, Object>(); m.put("id", server.getId()); m.put("name", server.getName()); - m.put("last_checkin", server.getLastCheckin()); + m.put("last_checkin", convertLocalToUtc(server.getLastCheckin())); m.put("ram", server.getRam()); m.put("swap", server.getSwap()); m.put("cpu_info", server.getCpu());