Merge pull request #23472 from wojtek-t/fix_object_meta_for

Automatic merge from submit-queue

Switch from api.ObjectMetaFor to meta.Accessor in most of places

Fix #23278

@smarterclayton @lavalamp
This commit is contained in:
k8s-merge-robot
2016-04-02 02:33:40 -07:00
17 changed files with 160 additions and 108 deletions

View File

@@ -26,6 +26,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
@@ -310,14 +311,14 @@ func validateAnnotations(removeAnnotations []string, newAnnotations map[string]s
}
// validateNoAnnotationOverwrites validates that when overwrite is false, to-be-updated annotations don't exist in the object annotation map (yet)
func validateNoAnnotationOverwrites(meta *api.ObjectMeta, annotations map[string]string) error {
func validateNoAnnotationOverwrites(accessor meta.Object, annotations map[string]string) error {
var buf bytes.Buffer
for key := range annotations {
// change-cause annotation can always be overwritten
if key == kubectl.ChangeCauseAnnotation {
continue
}
if value, found := meta.Annotations[key]; found {
if value, found := accessor.GetAnnotations()[key]; found {
if buf.Len() > 0 {
buf.WriteString("; ")
}
@@ -332,29 +333,31 @@ func validateNoAnnotationOverwrites(meta *api.ObjectMeta, annotations map[string
// updateAnnotations updates annotations of obj
func (o AnnotateOptions) updateAnnotations(obj runtime.Object) error {
meta, err := api.ObjectMetaFor(obj)
accessor, err := meta.Accessor(obj)
if err != nil {
return err
}
if !o.overwrite {
if err := validateNoAnnotationOverwrites(meta, o.newAnnotations); err != nil {
if err := validateNoAnnotationOverwrites(accessor, o.newAnnotations); err != nil {
return err
}
}
if meta.Annotations == nil {
meta.Annotations = make(map[string]string)
annotations := accessor.GetAnnotations()
if annotations == nil {
annotations = make(map[string]string)
}
for key, value := range o.newAnnotations {
meta.Annotations[key] = value
annotations[key] = value
}
for _, annotation := range o.removeAnnotations {
delete(meta.Annotations, annotation)
delete(annotations, annotation)
}
accessor.SetAnnotations(annotations)
if len(o.resourceVersion) != 0 {
meta.ResourceVersion = o.resourceVersion
accessor.SetResourceVersion(o.resourceVersion)
}
return nil
}

View File

@@ -28,6 +28,7 @@ import (
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/client/unversioned/fake"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
@@ -94,33 +95,36 @@ func readServiceFromFile(t *testing.T, filename string) *api.Service {
}
func annotateRuntimeObject(t *testing.T, originalObj, currentObj runtime.Object, kind string) (string, []byte) {
originalMeta, err := api.ObjectMetaFor(originalObj)
originalAccessor, err := meta.Accessor(originalObj)
if err != nil {
t.Fatal(err)
}
originalMeta.Labels["DELETE_ME"] = "DELETE_ME"
originalLabels := originalAccessor.GetLabels()
originalLabels["DELETE_ME"] = "DELETE_ME"
originalAccessor.SetLabels(originalLabels)
original, err := json.Marshal(originalObj)
if err != nil {
t.Fatal(err)
}
currentMeta, err := api.ObjectMetaFor(currentObj)
currentAccessor, err := meta.Accessor(currentObj)
if err != nil {
t.Fatal(err)
}
if currentMeta.Annotations == nil {
currentMeta.Annotations = map[string]string{}
currentAnnotations := currentAccessor.GetAnnotations()
if currentAnnotations == nil {
currentAnnotations = make(map[string]string)
}
currentMeta.Annotations[kubectl.LastAppliedConfigAnnotation] = string(original)
currentAnnotations[kubectl.LastAppliedConfigAnnotation] = string(original)
currentAccessor.SetAnnotations(currentAnnotations)
current, err := json.Marshal(currentObj)
if err != nil {
t.Fatal(err)
}
return currentMeta.Name, current
return currentAccessor.GetName(), current
}
func readAndAnnotateReplicationController(t *testing.T, filename string) (string, []byte) {

View File

@@ -26,6 +26,7 @@ import (
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/kubectl"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
@@ -105,10 +106,10 @@ func NewCmdLabel(f *cmdutil.Factory, out io.Writer) *cobra.Command {
return cmd
}
func validateNoOverwrites(meta *api.ObjectMeta, labels map[string]string) error {
func validateNoOverwrites(accessor meta.Object, labels map[string]string) error {
allErrs := []error{}
for key := range labels {
if value, found := meta.Labels[key]; found {
if value, found := accessor.GetLabels()[key]; found {
allErrs = append(allErrs, fmt.Errorf("'%s' already has a value (%s), and --overwrite is false", key, value))
}
}
@@ -140,29 +141,31 @@ func parseLabels(spec []string) (map[string]string, []string, error) {
}
func labelFunc(obj runtime.Object, overwrite bool, resourceVersion string, labels map[string]string, remove []string) error {
meta, err := api.ObjectMetaFor(obj)
accessor, err := meta.Accessor(obj)
if err != nil {
return err
}
if !overwrite {
if err := validateNoOverwrites(meta, labels); err != nil {
if err := validateNoOverwrites(accessor, labels); err != nil {
return err
}
}
if meta.Labels == nil {
meta.Labels = make(map[string]string)
objLabels := accessor.GetLabels()
if objLabels == nil {
objLabels = make(map[string]string)
}
for key, value := range labels {
meta.Labels[key] = value
objLabels[key] = value
}
for _, label := range remove {
delete(meta.Labels, label)
delete(objLabels, label)
}
accessor.SetLabels(objLabels)
if len(resourceVersion) != 0 {
meta.ResourceVersion = resourceVersion
accessor.SetResourceVersion(resourceVersion)
}
return nil
}
@@ -250,9 +253,12 @@ func RunLabel(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
if err != nil {
return err
}
meta, err := api.ObjectMetaFor(obj)
accessor, err := meta.Accessor(obj)
if err != nil {
return err
}
for _, label := range remove {
if _, ok := meta.Labels[label]; !ok {
if _, ok := accessor.GetLabels()[label]; !ok {
fmt.Fprintf(out, "label %q not found.\n", label)
}
}

View File

@@ -28,7 +28,6 @@ import (
"strings"
"time"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
@@ -476,14 +475,16 @@ func GetRecordFlag(cmd *cobra.Command) bool {
// RecordChangeCause annotate change-cause to input runtime object.
func RecordChangeCause(obj runtime.Object, changeCause string) error {
meta, err := api.ObjectMetaFor(obj)
accessor, err := meta.Accessor(obj)
if err != nil {
return err
}
if meta.Annotations == nil {
meta.Annotations = make(map[string]string)
annotations := accessor.GetAnnotations()
if annotations == nil {
annotations = make(map[string]string)
}
meta.Annotations[kubectl.ChangeCauseAnnotation] = changeCause
annotations[kubectl.ChangeCauseAnnotation] = changeCause
accessor.SetAnnotations(annotations)
return nil
}