X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fsenslab%2Fslabdriver.py;h=dbafef89cd7be80a513d9504ce8b89ac0640b5e2;hb=ac832e597753b6be0a819a07dccf86edb76d03c7;hp=2ce416b95227635d6170d7340b884666070965b0;hpb=1b884d2ef453b025da10ec856f829a34d0fbb411;p=sfa.git diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index 2ce416b9..dbafef89 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -1,7 +1,9 @@ import sys import subprocess -import datetime -from time import gmtime, strftime + +from datetime import datetime +from dateutil import tz +from time import strftime,gmtime from sfa.util.faults import MissingSfaInfo , SliverDoesNotExist from sfa.util.sfalogging import logger @@ -447,8 +449,8 @@ class SlabDriver(Driver): return return_person_list def GetTimezone(self): - time = self.oar.parser.SendRequest("GET_timezone") - return time + server_timestamp,server_tz = self.oar.parser.SendRequest("GET_timezone") + return server_timestamp,server_tz def DeleteJobs(self, job_id, username): @@ -707,14 +709,22 @@ class SlabDriver(Driver): reqdict['type'] = "deploy" reqdict['directory']= "" reqdict['name']= "TestSandrine" - timestamp = self.GetTimezone() + # reservations are performed in the oar server timebase, so : + # 1- we get the server time(in UTC tz )/server timezone + # 2- convert the server UTC time in its timezone + # 3- add a custom delay to this time + # 4- convert this time to a readable form and it for the reservation request. + server_timestamp,server_tz = self.GetTimezone() + s_tz=tz.gettz(server_tz) + UTC_zone = tz.gettz("UTC") + #weird... datetime.fromtimestamp should work since we do from datetime import datetime + utc_server= datetime.datetime.fromtimestamp(float(server_timestamp)+20,UTC_zone) + server_localtime=utc_server.astimezone(s_tz) + print>>sys.stderr, "\r\n \r\n AddSliceToNodes slice_name %s added_nodes %s username %s reqdict %s " %(slice_name,added_nodes,slice_user, reqdict) - readable_time = strftime(self.time_format, gmtime(float(timestamp))) - print >>sys.stderr," \r\n \r\n \t\t\t\t AVANT ParseTimezone readable_time %s timestanp %s " %(readable_time, timestamp ) - timestamp = timestamp+ 3620 #Add 3 min to server time - readable_time = strftime(self.time_format, gmtime(float(timestamp))) + readable_time = server_localtime.strftime(self.time_format) - print >>sys.stderr," \r\n \r\n \t\t\t\tAPRES ParseTimezone readable_time %s timestanp %s " %(readable_time , timestamp) + print >>sys.stderr," \r\n \r\n \t\t\t\tAPRES ParseTimezone readable_time %s timestanp %s " %(readable_time ,server_timestamp) reqdict['reservation'] = readable_time # first step : start the OAR job