This adds the following function to the PartitionPolicy configuration to the Job interface (#91)

* Adding Partition Policy API
This commit is contained in:
Robert Allen 2018-12-20 16:38:06 -06:00 committed by Renan DelValle
parent 9a835631b2
commit 296af622d1
2 changed files with 46 additions and 0 deletions

8
job.go
View file

@ -55,6 +55,7 @@ type Job interface {
GetInstanceCount() int32
MaxFailure(maxFail int32) Job
Container(container Container) Job
PartitionPolicy(policy *aurora.PartitionPolicy) Job
}
// Structure to collect all information pertaining to an Aurora job.
@ -315,3 +316,10 @@ func (j *AuroraJob) Container(container Container) Job {
return j
}
// Set a partition policy for the job configuration to implement.
func (j *AuroraJob) PartitionPolicy(policy *aurora.PartitionPolicy) Job {
j.jobConfig.TaskConfig.PartitionPolicy = policy
return j
}

View file

@ -692,3 +692,41 @@ func TestRealisClient_ForceExplicitTaskReconciliation(t *testing.T) {
err = r.ForceExplicitTaskReconciliation(&batchSize)
assert.NoError(t, err)
}
func TestRealisClient_PartitionPolicy(t *testing.T) {
role := "vagrant"
var partitionDelay int64 = 30
job := realis.NewJob().
Environment("prod").
Role(role).
Name("create_thermos_job_partition_policy_test").
ExecutorName(aurora.AURORA_EXECUTOR_NAME).
ExecutorData(string(thermosPayload)).
CPU(.5).
RAM(64).
Disk(100).
IsService(true).
InstanceCount(2).
PartitionPolicy(&aurora.PartitionPolicy{Reschedule: true, DelaySecs: &partitionDelay})
settings := realis.NewUpdateSettings()
settings.UpdateGroupSize = 2
resp, result, err := r.CreateService(job, settings)
assert.NoError(t, err)
assert.Equal(t, aurora.ResponseCode_OK, resp.ResponseCode)
var ok bool
var mErr error
if ok, mErr = monitor.JobUpdate(*result.GetKey(), 5, 180); !ok || mErr != nil {
// Update may already be in a terminal state so don't check for error
_, err := r.AbortJobUpdate(*result.GetKey(), "Monitor timed out.")
_, err = r.KillJob(job.JobKey())
assert.NoError(t, err)
}
}