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 }