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
# NT : not sure if we should implement this or not, but used by sface.
- sl = self.GetSlices.(slice_filter= slice_hrn, filter_type = 'slice_hrn')
+ sl = self.GetSlices(slice_filter= slice_hrn, filter_type = 'slice_hrn')
if len(sl) is 0:
raise SliverDoesNotExist("%s slice_hrn" % (slice_hrn))
#print "manager options = ",options
aggregate = SlabAggregate(self)
origin_hrn = Credential(string=creds[0]).get_gid_caller().get_hrn()
- print>>sys.stderr, " \r\n \r\n \t SLABDRIVER get_rspec origin_hrn %s" %(origin_hrn)
+ print>>sys.stderr, " \r\n \r\n \t SLABDRIVER list_resources origin_hrn %s" %(origin_hrn)
options.update({'origin_hrn':origin_hrn})
- print>>sys.stderr, " \r\n \r\n \t SLABDRIVER get_rspec options %s" %(options)
+ print>>sys.stderr, " \r\n \r\n \t SLABDRIVER list_resources options %s" %(options)
rspec = aggregate.get_rspec(slice_xrn=slice_urn, version=rspec_version,
options=options)
-
+ print>>sys.stderr, " \r\n \r\n \t SLABDRIVER list_resources rspec "
# cache the result
#if self.cache and not slice_hrn:
#logger.debug("Slab.ListResources: stores advertisement in cache")
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):
#'api_timestamp']
#assigned_res = ['resource_id', 'resource_uri']
#assigned_n = ['node', 'node_uri']
-
if job_id and resources is False:
req = "GET_jobs_id"
if job_id and resources :
req = "GET_jobs_id_resources"
node_list_k = 'reserved_resources'
-
-
#Get job info from OAR
job_info = self.oar.parser.SendRequest(req, job_id, username)
for node in node_list:
node_hostname_list.append(node['hostname'])
node_dict = dict(zip(node_hostname_list,node_list))
-
-
try :
-
-
liste =job_info[node_list_k]
print>>sys.stderr, "\r\n \r\n \t\t GetJobs resources job_info liste%s" %(liste)
for k in range(len(liste)):
except KeyError:
print>>sys.stderr, "\r\n \r\n \t\t GetJobs KEYERROR "
-
-
-
-
+ def GetReservedNodes(self):
+ # this function returns a list of all the nodes already involved in an oar job
+
+ jobs=self.oar.parser.SendRequest("GET_jobs_details")
+ nodes=[]
+ for j in jobs :
+ nodes=j['assigned_network_address']+nodes
+ return nodes
def GetNodes(self,node_filter= None, return_fields=None):
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