Hi, I was going through the Aurora Thrift API to determine how to add new jobs. I am using aurora v0.12 released last month and have upgraded to mesos v0.25 accordingly.
Below is a summary of my (very limited) understanding of some APIs, & would help it if someone can point out flaws in my understanding: 1. All APIs require thrift inputs of the structs specified, and return thrift values only in Response.result field. 2. Is there a set of examples in the documentation to help understand Thrift API better? 3. createJob(JobDescription desc, Lock lock): This is basically the API to replace the Aurora DSL/.aurora files for job configuration. 4. What is the Lock object? I see that some APIs require locking and some don't. For example, createJob needs a Lock object as parameter, & I am assuming that it is required so that one does not create multiple jobs with the same JobKey. 5. addInstances(AddInstancesConfig cfg, Lock lock): By the naming convention, it seems this is used to increase the number of instances of a job. It will not result in stopping of current instances of the job. My second explanation for this API: Since it uses a set of instanceIds, this is used for adding already running job in slaves to the internal data structures of Aurora to track the job. 6. getPendingResult(TaskQuery taskquery): Return the reason (in string) about why the job is PENDING. For example: insufficient CPU. 7. setQuota & getQuota for setting user level quotas. 8. killTasks to kill all running instances of a job in the cluster. 9. startJobUpdate(JobUpdateRequest request, string message): Used for updating jobs with the new TaskConfig specified. Can be used if resource requirement changes. For example: If I wanted aurora to update the version of container used for a job using TaskConfig.Container attribute. An aurora scheduling question is if I start a job with 5 instances, and there are resources available to run only 4 of them, does the entire job block, or only the 5th instance of the job blocks? Thanks! -- κρισhναν
