diff options
author | Eric Multanen <eric.w.multanen@intel.com> | 2020-07-15 18:43:10 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2020-07-15 18:43:10 +0000 |
commit | ad17b4360890fc2915795515ac265fc66720f4ad (patch) | |
tree | bf5c2f68b3b43178f661f7c890e9f02a496e9b56 /src/rsync/pkg/internal/utils.go | |
parent | 8223d0671617ee6dcc68307aefd3634e1bb0ac8d (diff) | |
parent | b986e8938aaa26945dc7dcdcb990ec8aa53afff0 (diff) |
Merge "Update Rsync"
Diffstat (limited to 'src/rsync/pkg/internal/utils.go')
-rw-r--r-- | src/rsync/pkg/internal/utils.go | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/rsync/pkg/internal/utils.go b/src/rsync/pkg/internal/utils.go index 270edba5..09415ed5 100644 --- a/src/rsync/pkg/internal/utils.go +++ b/src/rsync/pkg/internal/utils.go @@ -1,5 +1,5 @@ /* -Copyright 2018 Intel Corporation. +Copyright 2020 Intel Corporation. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -15,10 +15,14 @@ package utils import ( "io/ioutil" + "log" "os" "path" + corev1 "k8s.io/api/core/v1" + pkgerrors "github.com/pkg/errors" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes/scheme" ) @@ -68,3 +72,41 @@ func EnsureDirectory(f string) error { } return os.MkdirAll(base, 0755) } + +// TagPodsIfPresent finds the PodTemplateSpec from any workload +// object that contains it and changes the spec to include the tag label +func TagPodsIfPresent(unstruct *unstructured.Unstructured, tag string) { + + spec, ok := unstruct.Object["spec"].(map[string]interface{}) + if !ok { + log.Println("Error converting spec to map") + return + } + + template, ok := spec["template"].(map[string]interface{}) + if !ok { + //log.Println("Error converting template to map") + return + } + log.Println("Apply label in template") + //Attempt to convert the template to a podtemplatespec. + //This is to check if we have any pods being created. + podTemplateSpec := &corev1.PodTemplateSpec{} + err := runtime.DefaultUnstructuredConverter.FromUnstructured(template, podTemplateSpec) + if err != nil { + log.Println("Did not find a podTemplateSpec: " + err.Error()) + return + } + + labels := podTemplateSpec.GetLabels() + if labels == nil { + labels = map[string]string{} + } + labels["emco/deployment-id"] = tag + podTemplateSpec.SetLabels(labels) + + updatedTemplate, err := runtime.DefaultUnstructuredConverter.ToUnstructured(podTemplateSpec) + + //Set the label + spec["template"] = updatedTemplate +} |