From d7043981bc8888197313801db9dbbb6ea13595c4 Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Thu, 26 Apr 2012 13:32:44 +0200 Subject: [PATCH] Minor modifications in timeslot element. --- sfa/rspecs/elements/timeslot.py | 4 +++- sfa/senslab/slabdriver.py | 37 +++++++++++++++++---------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/sfa/rspecs/elements/timeslot.py b/sfa/rspecs/elements/timeslot.py index 6c7e4e46..81b17b65 100644 --- a/sfa/rspecs/elements/timeslot.py +++ b/sfa/rspecs/elements/timeslot.py @@ -10,6 +10,8 @@ from sfa.rspecs.elements.element import Element class Timeslot(Element): fields = [ - 'time', + 'date', + 'start_time', + 'timezone', 'duration' ] diff --git a/sfa/senslab/slabdriver.py b/sfa/senslab/slabdriver.py index dd080d0d..740b996a 100644 --- a/sfa/senslab/slabdriver.py +++ b/sfa/senslab/slabdriver.py @@ -670,9 +670,11 @@ class SlabDriver(Driver): slice_name = slice_dict['name'] try: slot = slice_dict['timeslot'] - + print>>sys.stderr, "\r\n \r\n \t\tAddSliceToNodes slot %s " %(slot) except KeyError: - slot = { 'time':None, 'duration':'00:10:00' }#10 min + #Running on default parameters + #XP immediate , 10 mins + slot = {'date':None,'start_time':None, 'timezone':None,'duration':'00:10:00' }#10 min reqdict['resource']+= ",walltime=" + str(00) + ":" + str(12) + ":" + str(20) #+2 min 20 reqdict['script_path'] = "/bin/sleep 620" #+20 sec @@ -695,10 +697,7 @@ class SlabDriver(Driver): reqdict['property'] = reqdict['property'][0: len( reqdict['property'])-2] +")" reqdict['resource'] ="network_address="+ str(len(nodeid_list)) - - #In case of a scheduled experiment - if slot['time']: - + if slot['duration']: walltime = slot['duration'].split(":") # Fixing the walltime by adding a few delays. First put the walltime in seconds # oarAdditionalDelay = 20; additional delay for /bin/sleep command to @@ -723,18 +722,20 @@ class SlabDriver(Driver): reqdict['resource']+= ",walltime=" + str(walltime[0]) + ":" + str(walltime[1]) + ":" + str(walltime[2]) reqdict['script_path'] = "/bin/sleep " + str(sleep_walltime) - #Get the reservation time - parse_time = slot['time'].split(" ") - #If timezone not specified, assume it is server timezone - if len(parse_time) == 2: - server_timestamp,server_tz = self.GetTimezone() - from_zone=tz.gettz(server_tz) - date = ' '.join(parse_time) - else: - date = ' '.join(parse_time[:-1]) - #Get zone of the user from the reservation time given in the rspec - from_zone = tz.gettz(parse_time[2]) - + #In case of a scheduled experiment (not immediate) + #To run an XP immediately, don't specify date and time in RSpec + #They will be set to None. + if slot['date'] and slot['start_time']: + if slot['timezone'] is '' or slot['timezone'] is None: + #assume it is server timezone + server_timestamp,server_tz = self.GetTimezone() + from_zone=tz.gettz(server_tz) + print>>sys.stderr, "\r\n \r\n \t\tAddSliceToNodes timezone not specified server_tz %s from_zone %s" %(server_tz,from_zone) + else: + #Get zone of the user from the reservation time given in the rspec + from_zone = tz.gettz(slot['timezone']) + + date = str(slot['date']) + " " + str(slot['start_time']) user_datetime = datetime.datetime.strptime(date, self.time_format) user_datetime = user_datetime.replace(tzinfo = from_zone) -- 2.43.0