Mentions légales du service

Skip to content
Snippets Groups Projects
Commit f9f0a1be authored by SIMONIN Matthieu's avatar SIMONIN Matthieu
Browse files

add reservation to the g5k api

This allows reservation in advance to be performed.
Put this in the resource descriptions of the resources:
```
{
    ...
    "reservation": "2017-11-28 19:00:00"
    "resources:" :
    {
        // regular machines+networks descriptions
    }
}
```
parent b0c49783
No related branches found
No related tags found
No related merge requests found
...@@ -85,7 +85,12 @@ class Resources: ...@@ -85,7 +85,12 @@ class Resources:
def reserve(self, **kwargs): def reserve(self, **kwargs):
job_name = kwargs.get("job_name", JOB_NAME) job_name = kwargs.get("job_name", JOB_NAME)
walltime = kwargs.get("walltime", WALLTIME) walltime = kwargs.get("walltime", WALLTIME)
gridjob = utils.get_or_create_job(self.c_resources, job_name, walltime) reservation_date = kwargs.get("reservation", False)
gridjob = utils.get_or_create_job(
self.c_resources,
job_name,
walltime,
reservation_date)
utils.concretize_resources(self.c_resources, gridjob) utils.concretize_resources(self.c_resources, gridjob)
def deploy(self, **kwargs): def deploy(self, **kwargs):
......
...@@ -36,10 +36,10 @@ def to_vlan_type(vlan_id): ...@@ -36,10 +36,10 @@ def to_vlan_type(vlan_id):
return KAVLAN_GLOBAL return KAVLAN_GLOBAL
def get_or_create_job(resources, job_name, walltime): def get_or_create_job(resources, job_name, walltime, reservation_date):
gridjob, _ = ex5.planning.get_job_by_name(job_name) gridjob, _ = ex5.planning.get_job_by_name(job_name)
if gridjob is None: if gridjob is None:
gridjob = make_reservation(resources, job_name, walltime) gridjob = make_reservation(resources, job_name, walltime, reservation_date)
logging.info("Waiting for oargridjob %s to start" % gridjob) logging.info("Waiting for oargridjob %s to start" % gridjob)
ex5.wait_oargrid_job_start(gridjob) ex5.wait_oargrid_job_start(gridjob)
return gridjob return gridjob
...@@ -166,7 +166,7 @@ def concretize_networks(resources, vlans): ...@@ -166,7 +166,7 @@ def concretize_networks(resources, vlans):
desc["_c_network"].update(site_info["kavlans"][str(vlan_id)]) desc["_c_network"].update(site_info["kavlans"][str(vlan_id)])
def make_reservation(resources, job_name, walltime): def make_reservation(resources, job_name, walltime, reservation_date):
machines = resources["machines"] machines = resources["machines"]
networks = resources["networks"] networks = resources["networks"]
...@@ -195,6 +195,7 @@ def make_reservation(resources, job_name, walltime): ...@@ -195,6 +195,7 @@ def make_reservation(resources, job_name, walltime):
gridjob, _ = ex5.oargridsub( gridjob, _ = ex5.oargridsub(
jobs_specs, jobs_specs,
walltime=walltime.encode('ascii', 'ignore'), walltime=walltime.encode('ascii', 'ignore'),
reservation_date=reservation_date,
job_type='deploy') job_type='deploy')
if gridjob is None: if gridjob is None:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment