From fe664178ceb9fe51b0155b0af7be5dab05492ce6 Mon Sep 17 00:00:00 2001 From: lenhattan86 Date: Fri, 15 Oct 2021 12:18:26 -0700 Subject: [PATCH] Add tier & production in task config (#14) --- docs/getting-started.md | 6 +++++ docs/leveraging-the-library.md | 3 +++ examples/client.go | 9 ++++++++ examples/jsonClient.go | 2 ++ job.go | 5 +++++ jobUpdate.go | 5 +++++ realis_e2e_test.go | 40 ++++++++++++++++++++++++++++++---- task.go | 9 ++++++++ task_test.go | 1 + 9 files changed, 76 insertions(+), 4 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index b16ac3f..b894d06 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -247,6 +247,9 @@ job = realis.NewJob(). RAM(64). Disk(100). IsService(false). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(1). AddLabel("fileName", "sample-app/docker-compose.yml"). @@ -291,6 +294,9 @@ job = realis.NewJob(). RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(1) ``` diff --git a/docs/leveraging-the-library.md b/docs/leveraging-the-library.md index 464bddd..2165ae1 100644 --- a/docs/leveraging-the-library.md +++ b/docs/leveraging-the-library.md @@ -25,6 +25,9 @@ job = realis.NewJob(). RAM(64). Disk(100). IsService(false). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(1). AddLabel("fileName", "sample-app/docker-compose.yml"). diff --git a/examples/client.go b/examples/client.go index f598562..367f785 100644 --- a/examples/client.go +++ b/examples/client.go @@ -124,6 +124,9 @@ func main() { RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(1). ThermosExecutor(thermosExec) @@ -138,6 +141,9 @@ func main() { RAM(512). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(4). AddLabel("fileName", "sample-app/docker-compose.yml"). @@ -151,6 +157,9 @@ func main() { RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(1) default: diff --git a/examples/jsonClient.go b/examples/jsonClient.go index 68ea1ca..c53516b 100644 --- a/examples/jsonClient.go +++ b/examples/jsonClient.go @@ -177,6 +177,8 @@ func main() { RAM(job.RAM). Disk(job.Disk). IsService(job.Service). + Tier("preemptible"). + Priority(0). InstanceCount(job.Instances). AddPorts(job.Ports) diff --git a/job.go b/job.go index 698ecfa..adf3958 100644 --- a/job.go +++ b/job.go @@ -161,6 +161,11 @@ func (j *AuroraJob) Priority(priority int32) *AuroraJob { return j } +func (j *AuroraJob) Production(production bool) *AuroraJob { + j.task.Production(production) + return j +} + func (j *AuroraJob) TaskConfig() *aurora.TaskConfig { return j.task.TaskConfig() } diff --git a/jobUpdate.go b/jobUpdate.go index 0f231f2..248a65d 100644 --- a/jobUpdate.go +++ b/jobUpdate.go @@ -226,6 +226,11 @@ func (j *JobUpdate) Priority(priority int32) *JobUpdate { return j } +func (j *JobUpdate) Production(production bool) *JobUpdate { + j.task.Production(production) + return j +} + func (j *JobUpdate) TaskConfig() *aurora.TaskConfig { return j.task.TaskConfig() } diff --git a/realis_e2e_test.go b/realis_e2e_test.go index d9c007e..63d9d03 100644 --- a/realis_e2e_test.go +++ b/realis_e2e_test.go @@ -100,6 +100,9 @@ func TestBadCredentials(t *testing.T) { RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(2). AddPorts(1) @@ -232,6 +235,9 @@ func TestRealisClient_CreateJob_Thermos(t *testing.T) { RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(2). AddPorts(1) @@ -339,6 +345,9 @@ func TestRealisClient_CreateService_WithPulse_Thermos(t *testing.T) { Disk(100). ThermosExecutor(thermosExec). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(2). AddPorts(1). AddLabel("currentTime", time.Now().String()). @@ -424,6 +433,9 @@ func TestRealisClient_CreateService(t *testing.T) { InstanceCount(3). WatchTime(20 * time.Second). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). BatchSize(2) result, err := r.CreateService(job) @@ -488,6 +500,9 @@ func TestRealisClient_ScheduleCronJob_Thermos(t *testing.T) { RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(1). AddPorts(1). CronSchedule("* * * * *"). @@ -704,6 +719,9 @@ func TestRealisClient_PartitionPolicy(t *testing.T) { RAM(64). Disk(100). IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). InstanceCount(2). BatchSize(2). PartitionPolicy(true, partitionDelay) @@ -734,7 +752,10 @@ func TestRealisClient_UpdateStrategies(t *testing.T) { RAM(4). Disk(10). InstanceCount(6). - IsService(true) + IsService(true). + Production(false). + Tier("preemptible"). + Priority(0) // Needed to populate the task config correctly assert.NoError(t, job.BuildThermosPayload()) @@ -798,7 +819,11 @@ func TestRealisClient_BatchAwareAutoPause(t *testing.T) { RAM(4). Disk(10). InstanceCount(6). - IsService(true) + IsService(true). + Production(false). + Tier("preemptible"). + Priority(0) + updateGroups := []int32{1, 2, 3} strategy := realis.JobUpdateFromAuroraTask(job.AuroraTask()). VariableBatchStrategy(true, updateGroups...). @@ -837,8 +862,15 @@ func TestRealisClient_GetJobSummary(t *testing.T) { CPU(.25). RAM(4). Disk(10). - InstanceCount(1). - IsService(false) + InstanceCount(3). + WatchTime(20 * time.Second). + IsService(true). + Production(false). + Tier("preemptible"). + Priority(0). + BatchSize(2) + + result, err := r.CreateService(job) err := r.CreateJob(job) assert.NoError(t, err) diff --git a/task.go b/task.go index e055190..e9aaa98 100644 --- a/task.go +++ b/task.go @@ -85,6 +85,10 @@ func TaskFromThrift(config *aurora.TaskConfig) *AuroraTask { newTask.Tier(*config.Tier) } + if config.Production != nil { + newTask.Production(*config.Production) + } + if config.ExecutorConfig != nil { newTask. ExecutorName(config.ExecutorConfig.Name). @@ -294,6 +298,11 @@ func (t *AuroraTask) Priority(priority int32) *AuroraTask { return t } +func (t *AuroraTask) Production(production bool) *AuroraTask { + t.task.Production = &production + return t +} + // Add a list of URIs with the same extract and cache configuration. Scheduler must have // --enable_mesos_fetcher flag enabled. Currently there is no duplicate detection. func (t *AuroraTask) AddURIs(extract bool, cache bool, values ...string) *AuroraTask { diff --git a/task_test.go b/task_test.go index deaf7b1..8c0a026 100644 --- a/task_test.go +++ b/task_test.go @@ -35,6 +35,7 @@ func TestAuroraTask_Clone(t *testing.T) { Disk(1000). IsService(true). Priority(1). + Production(false). AddPorts(10). Tier("preferred"). MaxFailure(23).