Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Side by Side Diff: frontend/afe/rpc_interface.py

Issue 6181003: Add support for an --image flag to atest. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: More code review fixes. Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 """\ 1 """\
2 Functions to expose over the RPC interface. 2 Functions to expose over the RPC interface.
3 3
4 For all modify* and delete* functions that ask for an 'id' parameter to 4 For all modify* and delete* functions that ask for an 'id' parameter to
5 identify the object to operate on, the id may be either 5 identify the object to operate on, the id may be either
6 * the database row ID 6 * the database row ID
7 * the name of the object (label name, hostname, user login, etc.) 7 * the name of the object (label name, hostname, user login, etc.)
8 * a dictionary containing uniquely identifying field (this option should seldom 8 * a dictionary containing uniquely identifying field (this option should seldom
9 be used) 9 be used)
10 10
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 parameterized_job.delete() 482 parameterized_job.delete()
483 raise 483 raise
484 484
485 485
486 def create_job(name, priority, control_file, control_type, 486 def create_job(name, priority, control_file, control_type,
487 hosts=(), meta_hosts=(), one_time_hosts=(), 487 hosts=(), meta_hosts=(), one_time_hosts=(),
488 atomic_group_name=None, synch_count=None, is_template=False, 488 atomic_group_name=None, synch_count=None, is_template=False,
489 timeout=None, max_runtime_hrs=None, run_verify=True, 489 timeout=None, max_runtime_hrs=None, run_verify=True,
490 email_list='', dependencies=(), reboot_before=None, 490 email_list='', dependencies=(), reboot_before=None,
491 reboot_after=None, parse_failed_repair=None, hostless=False, 491 reboot_after=None, parse_failed_repair=None, hostless=False,
492 keyvals=None, drone_set=None): 492 keyvals=None, drone_set=None, image=None):
493 """\ 493 """\
494 Create and enqueue a job. 494 Create and enqueue a job.
495 495
496 @param name name of this job 496 @param name name of this job
497 @param priority Low, Medium, High, Urgent 497 @param priority Low, Medium, High, Urgent
498 @param control_file String contents of the control file. 498 @param control_file String contents of the control file.
499 @param control_type Type of control file, Client or Server. 499 @param control_type Type of control file, Client or Server.
500 @param synch_count How many machines the job uses per autoserv execution. 500 @param synch_count How many machines the job uses per autoserv execution.
501 synch_count == 1 means the job is asynchronous. If an atomic group is 501 synch_count == 1 means the job is asynchronous. If an atomic group is
502 given this value is treated as a minimum. 502 given this value is treated as a minimum.
503 @param is_template If true then create a template job. 503 @param is_template If true then create a template job.
504 @param timeout Hours after this call returns until the job times out. 504 @param timeout Hours after this call returns until the job times out.
505 @param max_runtime_hrs Hours from job starting time until job times out 505 @param max_runtime_hrs Hours from job starting time until job times out
506 @param run_verify Should the host be verified before running the test? 506 @param run_verify Should the host be verified before running the test?
507 @param email_list String containing emails to mail when the job is done 507 @param email_list String containing emails to mail when the job is done
508 @param dependencies List of label names on which this job depends 508 @param dependencies List of label names on which this job depends
509 @param reboot_before Never, If dirty, or Always 509 @param reboot_before Never, If dirty, or Always
510 @param reboot_after Never, If all tests passed, or Always 510 @param reboot_after Never, If all tests passed, or Always
511 @param parse_failed_repair if true, results of failed repairs launched by 511 @param parse_failed_repair if true, results of failed repairs launched by
512 this job will be parsed as part of the job. 512 this job will be parsed as part of the job.
513 @param hostless if true, create a hostless job 513 @param hostless if true, create a hostless job
514 @param keyvals dict of keyvals to associate with the job 514 @param keyvals dict of keyvals to associate with the job
515 515
516 @param hosts List of hosts to run job on. 516 @param hosts List of hosts to run job on.
517 @param meta_hosts List where each entry is a label name, and for each entry 517 @param meta_hosts List where each entry is a label name, and for each entry
518 one host will be chosen from that label to run the job on. 518 one host will be chosen from that label to run the job on.
519 @param one_time_hosts List of hosts not in the database to run the job on. 519 @param one_time_hosts List of hosts not in the database to run the job on.
520 @param atomic_group_name The name of an atomic group to schedule the job on. 520 @param atomic_group_name The name of an atomic group to schedule the job on.
521 @param drone_set The name of the drone set to run this test on. 521 @param drone_set The name of the drone set to run this test on.
522 @param image OS image to install before running job
DaleCurtis 2011/01/14 20:56:16 End in period.
pauldean_chromium 2011/01/18 17:57:31 Done.
522 523
523 524
524 @returns The created Job id number. 525 @returns The created Job id number.
525 """ 526 """
526 return rpc_utils.create_job_common( 527
527 **rpc_utils.get_create_job_common_args(locals())) 528 if image is None:
529 return rpc_utils.create_job_common(
530 **rpc_utils.get_create_job_common_args(locals()))
531 else:
DaleCurtis 2011/01/14 20:56:16 No need for else here.
pauldean_chromium 2011/01/18 17:57:31 Done.
532 # When image is supplied use a known parameterized test already in the
533 # database to pass the OS image path from the front end, through the
534 # scheduler, and finally to autoserv as the --image parameter.
535
536 # The test autoupdate_ParameterizedJob is in afe_autotests and used to
537 # instantiate a Test object and from there a parameterizedJob.
DaleCurtis 2011/01/14 20:56:16 ParameterizedJob.
pauldean_chromium 2011/01/18 17:57:31 Done.
538 known_test_obj = models.Test.smart_get('autoupdate_ParameterizedJob')
539 known_parameterized_job = models.ParameterizedJob.objects.create(
540 test=known_test_obj)
541
542 # This test has a single parameter, the image parameter, stored in the
543 # table afe_test_parameters. We retrieve and set this parameter to the
DaleCurtis 2011/01/14 20:56:16 Extra space. Consider reflowing sentence, not enti
pauldean_chromium 2011/01/18 17:57:31 Done.
544 # image path.
545 image_parameter = known_test_obj.testparameter_set.get(id=1)
546 known_parameterized_job.parameterizedjobparameter_set.create(
DaleCurtis 2011/01/14 20:56:16 Is this correct? parameterizedjobparameter_set ? D
pauldean_chromium 2011/01/18 17:57:31 It is correct in that it works and is the way crea
547 test_parameter=image_parameter, parameter_value=image,
548 parameter_type='string')
549
550 # By passing a parameterized_job to create_job_common the job entry in
551 # the afe_jobs table will have the field parameterized_job_id set.
552 # The scheduler uses this id in the afe_parameterized_jobs table to
553 # match this job to our known test, and then with the
554 # afe_parameterized_job_parameters table to get the actual image path.
555 return rpc_utils.create_job_common(
556 parameterized_job=known_parameterized_job.id,
557 **rpc_utils.get_create_job_common_args(locals()))
528 558
529 559
530 def abort_host_queue_entries(**filter_data): 560 def abort_host_queue_entries(**filter_data):
531 """\ 561 """\
532 Abort a set of host queue entries. 562 Abort a set of host queue entries.
533 """ 563 """
534 query = models.HostQueueEntry.query_objects(filter_data) 564 query = models.HostQueueEntry.query_objects(filter_data)
535 query = query.filter(complete=False) 565 query = query.filter(complete=False)
536 models.AclGroup.check_abort_permissions(query) 566 models.AclGroup.check_abort_permissions(query)
537 host_queue_entries = list(query.select_related()) 567 host_queue_entries = list(query.select_related())
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 "Parsing": "Awaiting parse of final results", 866 "Parsing": "Awaiting parse of final results",
837 "Gathering": "Gathering log files", 867 "Gathering": "Gathering log files",
838 "Template": "Template job for recurring run", 868 "Template": "Template job for recurring run",
839 "Waiting": "Waiting for scheduler action", 869 "Waiting": "Waiting for scheduler action",
840 "Archiving": "Archiving results"} 870 "Archiving": "Archiving results"}
841 return result 871 return result
842 872
843 873
844 def get_server_time(): 874 def get_server_time():
845 return datetime.datetime.now().strftime("%Y-%m-%d %H:%M") 875 return datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
OLDNEW
« frontend/afe/models.py ('K') | « frontend/afe/models.py ('k') | scheduler/monitor_db.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698