From f7bd7cc20f16727cd3e0afd91e168c1e45f8dc22 Mon Sep 17 00:00:00 2001 From: Renan DelValle Date: Fri, 15 Mar 2019 15:10:31 -0700 Subject: [PATCH] =?UTF-8?q?Bug=20fix=20for=20metadata=20duplicates=20as=20?= =?UTF-8?q?well=20as=20un-initialized=20GPU=20re=E2=80=A6=20(#103)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix for metadata duplicates as well. * Fix for un-initialized GPU resource when creating a new job update. --- job.go | 9 ++++++++- updatejob.go | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/job.go b/job.go index c3394d7..029d911 100644 --- a/job.go +++ b/job.go @@ -74,6 +74,7 @@ const ( type AuroraJob struct { jobConfig *aurora.JobConfiguration resources map[ResourceType]*aurora.Resource + metadata map[string]*aurora.Metadata portCount int } @@ -107,6 +108,7 @@ func NewJob() Job { return &AuroraJob{ jobConfig: jobConfig, resources: resources, + metadata: make(map[string]*aurora.Metadata), portCount: 0, } } @@ -243,7 +245,12 @@ func (j *AuroraJob) AddURIs(extract bool, cache bool, values ...string) Job { // Adds a Mesos label to the job. Note that Aurora will add the // prefix "org.apache.aurora.metadata." to the beginning of each key. func (j *AuroraJob) AddLabel(key string, value string) Job { - j.jobConfig.TaskConfig.Metadata = append(j.jobConfig.TaskConfig.Metadata, &aurora.Metadata{Key: key, Value: value}) + if _, ok := j.metadata[key]; ok { + j.metadata[key].Value = value + } else { + j.metadata[key] = &aurora.Metadata{Key: key, Value: value} + j.jobConfig.TaskConfig.Metadata = append(j.jobConfig.TaskConfig.Metadata, j.metadata[key]) + } return j } diff --git a/updatejob.go b/updatejob.go index 0319d8d..eeaaa9c 100644 --- a/updatejob.go +++ b/updatejob.go @@ -96,6 +96,7 @@ func NewUpdateJob(config *aurora.TaskConfig, settings *aurora.JobUpdateSettings) } if ptr.NumGpus != nil { + job.resources[GPU] = &aurora.Resource{} job.resources[GPU].NumGpus = ptr.NumGpus continue // Guard against Union violations that Go won't enforce }