func addConversionFuncs(scheme *runtime.Scheme) { err := scheme.AddConversionFuncs( Convert_v1_NamedTagEventListArray_to_api_TagEventListArray, Convert_api_TagEventListArray_to_v1_NamedTagEventListArray, Convert_v1_TagReferenceArray_to_api_TagReferenceMap, Convert_api_TagReferenceMap_to_v1_TagReferenceArray, Convert_api_Image_To_v1_Image, Convert_v1_Image_To_api_Image, Convert_v1_ImageStreamSpec_To_api_ImageStreamSpec, Convert_api_ImageStreamSpec_To_v1_ImageStreamSpec, Convert_v1_ImageStreamStatus_To_api_ImageStreamStatus, Convert_api_ImageStreamStatus_To_v1_ImageStreamStatus, Convert_api_ImageStreamMapping_To_v1_ImageStreamMapping, Convert_v1_ImageStreamMapping_To_api_ImageStreamMapping, ) if err != nil { // If one of the conversion functions is malformed, detect it immediately. panic(err) } if err := scheme.AddFieldLabelConversionFunc("v1", "Image", oapi.GetFieldLabelConversionFunc(newer.ImageToSelectableFields(&newer.Image{}), nil), ); err != nil { panic(err) } if err := scheme.AddFieldLabelConversionFunc("v1", "ImageStream", oapi.GetFieldLabelConversionFunc(newer.ImageStreamToSelectableFields(&newer.ImageStream{}), map[string]string{"name": "metadata.name"}), ); err != nil { panic(err) } }
// MatchImage returns a generic matcher for a given label and field selector. func MatchImage(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { image, ok := obj.(*api.Image) if !ok { return false, fmt.Errorf("not an image") } fields := api.ImageToSelectableFields(image) return label.Matches(labels.Set(image.Labels)) && field.Matches(fields), nil }) }
func TestFieldSelectors(t *testing.T) { testutil.CheckFieldLabelConversions(t, "v1", "Image", // Ensure all currently returned labels are supported newer.ImageToSelectableFields(&newer.Image{}), ) testutil.CheckFieldLabelConversions(t, "v1", "ImageStream", // Ensure all currently returned labels are supported newer.ImageStreamToSelectableFields(&newer.ImageStream{}), // Ensure previously supported labels have conversions. DO NOT REMOVE THINGS FROM THIS LIST "name", "spec.dockerImageRepository", "status.dockerImageRepository", ) }
func addConversionFuncs(scheme *runtime.Scheme) { err := scheme.AddDefaultingFuncs( func(obj *ImageImportSpec) { if obj.To == nil { if ref, err := newer.ParseDockerImageReference(obj.From.Name); err == nil { if len(ref.Tag) > 0 { obj.To = &v1.LocalObjectReference{Name: ref.Tag} } } } }) if err != nil { // If one of the default functions is malformed, detect it immediately. panic(err) } err = scheme.AddConversionFuncs( Convert_v1_NamedTagEventListArray_to_api_TagEventListArray, Convert_api_TagEventListArray_to_v1_NamedTagEventListArray, Convert_v1_TagReferenceArray_to_api_TagReferenceMap, Convert_api_TagReferenceMap_to_v1_TagReferenceArray, Convert_api_Image_To_v1_Image, Convert_v1_Image_To_api_Image, Convert_v1_ImageStreamSpec_To_api_ImageStreamSpec, Convert_api_ImageStreamSpec_To_v1_ImageStreamSpec, Convert_v1_ImageStreamStatus_To_api_ImageStreamStatus, Convert_api_ImageStreamStatus_To_v1_ImageStreamStatus, Convert_api_ImageStreamMapping_To_v1_ImageStreamMapping, Convert_v1_ImageStreamMapping_To_api_ImageStreamMapping, ) if err != nil { // If one of the conversion functions is malformed, detect it immediately. panic(err) } if err := scheme.AddFieldLabelConversionFunc("v1", "Image", oapi.GetFieldLabelConversionFunc(newer.ImageToSelectableFields(&newer.Image{}), nil), ); err != nil { panic(err) } if err := scheme.AddFieldLabelConversionFunc("v1", "ImageStream", oapi.GetFieldLabelConversionFunc(newer.ImageStreamToSelectableFields(&newer.ImageStream{}), map[string]string{"name": "metadata.name"}), ); err != nil { panic(err) } }
func init() { err := kapi.Scheme.AddDefaultingFuncs( func(obj *ImageImportSpec) { if obj.To == nil { if ref, err := newer.ParseDockerImageReference(obj.From.Name); err == nil { if len(ref.Tag) > 0 { obj.To = &v1.LocalObjectReference{Name: ref.Tag} } } } }) if err != nil { // If one of the default functions is malformed, detect it immediately. panic(err) } err = kapi.Scheme.AddConversionFuncs( func(in *[]NamedTagEventList, out *map[string]newer.TagEventList, s conversion.Scope) error { for _, curr := range *in { newTagEventList := newer.TagEventList{} if err := s.Convert(&curr.Conditions, &newTagEventList.Conditions, 0); err != nil { return err } if err := s.Convert(&curr.Items, &newTagEventList.Items, 0); err != nil { return err } (*out)[curr.Tag] = newTagEventList } return nil }, func(in *map[string]newer.TagEventList, out *[]NamedTagEventList, s conversion.Scope) error { allKeys := make([]string, 0, len(*in)) for key := range *in { allKeys = append(allKeys, key) } sort.Strings(allKeys) for _, key := range allKeys { newTagEventList := (*in)[key] oldTagEventList := &NamedTagEventList{Tag: key} if err := s.Convert(&newTagEventList.Conditions, &oldTagEventList.Conditions, 0); err != nil { return err } if err := s.Convert(&newTagEventList.Items, &oldTagEventList.Items, 0); err != nil { return err } *out = append(*out, *oldTagEventList) } return nil }, func(in *[]NamedTagReference, out *map[string]newer.TagReference, s conversion.Scope) error { for _, curr := range *in { r := newer.TagReference{ Annotations: curr.Annotations, Reference: curr.Reference, ImportPolicy: newer.TagImportPolicy{ Insecure: curr.ImportPolicy.Insecure, }, } if curr.Generation != nil { gen := *curr.Generation r.Generation = &gen } if err := s.Convert(&curr.From, &r.From, 0); err != nil { return err } (*out)[curr.Name] = r } return nil }, func(in *map[string]newer.TagReference, out *[]NamedTagReference, s conversion.Scope) error { allTags := make([]string, 0, len(*in)) for tag := range *in { allTags = append(allTags, tag) } sort.Strings(allTags) for _, tag := range allTags { newTagReference := (*in)[tag] oldTagReference := NamedTagReference{ Name: tag, Annotations: newTagReference.Annotations, Reference: newTagReference.Reference, ImportPolicy: TagImportPolicy{ Insecure: newTagReference.ImportPolicy.Insecure, }, } if newTagReference.Generation != nil { gen := *newTagReference.Generation oldTagReference.Generation = &gen } if err := s.Convert(&newTagReference.From, &oldTagReference.From, 0); err != nil { return err } *out = append(*out, oldTagReference) } return nil }, convert_api_Image_To_v1_Image, convert_v1_Image_To_api_Image, convert_v1_ImageStreamSpec_To_api_ImageStreamSpec, convert_api_ImageStreamSpec_To_v1_ImageStreamSpec, convert_v1_ImageStreamStatus_To_api_ImageStreamStatus, convert_api_ImageStreamStatus_To_v1_ImageStreamStatus, convert_api_ImageStreamMapping_To_v1_ImageStreamMapping, convert_v1_ImageStreamMapping_To_api_ImageStreamMapping, ) if err != nil { // If one of the conversion functions is malformed, detect it immediately. panic(err) } if err := kapi.Scheme.AddFieldLabelConversionFunc("v1", "Image", oapi.GetFieldLabelConversionFunc(newer.ImageToSelectableFields(&newer.Image{}), nil), ); err != nil { panic(err) } if err := kapi.Scheme.AddFieldLabelConversionFunc("v1", "ImageStream", oapi.GetFieldLabelConversionFunc(newer.ImageStreamToSelectableFields(&newer.ImageStream{}), map[string]string{"name": "metadata.name"}), ); err != nil { panic(err) } }
func init() { err := kapi.Scheme.AddConversionFuncs( func(in *[]NamedTagEventList, out *map[string]newer.TagEventList, s conversion.Scope) error { for _, curr := range *in { newTagEventList := newer.TagEventList{} if err := s.Convert(&curr.Items, &newTagEventList.Items, 0); err != nil { return err } (*out)[curr.Tag] = newTagEventList } return nil }, func(in *map[string]newer.TagEventList, out *[]NamedTagEventList, s conversion.Scope) error { allKeys := make([]string, 0, len(*in)) for key := range *in { allKeys = append(allKeys, key) } sort.Strings(allKeys) for _, key := range allKeys { newTagEventList := (*in)[key] oldTagEventList := &NamedTagEventList{Tag: key} if err := s.Convert(&newTagEventList.Items, &oldTagEventList.Items, 0); err != nil { return err } *out = append(*out, *oldTagEventList) } return nil }, func(in *[]NamedTagReference, out *map[string]newer.TagReference, s conversion.Scope) error { for _, curr := range *in { r := newer.TagReference{ Annotations: curr.Annotations, Reference: curr.Reference, } if err := s.Convert(&curr.From, &r.From, 0); err != nil { return err } (*out)[curr.Name] = r } return nil }, func(in *map[string]newer.TagReference, out *[]NamedTagReference, s conversion.Scope) error { allTags := make([]string, 0, len(*in)) for tag := range *in { allTags = append(allTags, tag) } sort.Strings(allTags) for _, tag := range allTags { newTagReference := (*in)[tag] oldTagReference := NamedTagReference{ Name: tag, Annotations: newTagReference.Annotations, Reference: newTagReference.Reference, } if err := s.Convert(&newTagReference.From, &oldTagReference.From, 0); err != nil { return err } *out = append(*out, oldTagReference) } return nil }, convert_api_Image_To_v1_Image, convert_v1_Image_To_api_Image, convert_v1_ImageStreamSpec_To_api_ImageStreamSpec, convert_api_ImageStreamSpec_To_v1_ImageStreamSpec, convert_v1_ImageStreamStatus_To_api_ImageStreamStatus, convert_api_ImageStreamStatus_To_v1_ImageStreamStatus, convert_api_ImageStreamMapping_To_v1_ImageStreamMapping, convert_v1_ImageStreamMapping_To_api_ImageStreamMapping, ) if err != nil { // If one of the conversion functions is malformed, detect it immediately. panic(err) } if err := kapi.Scheme.AddFieldLabelConversionFunc("v1", "Image", oapi.GetFieldLabelConversionFunc(newer.ImageToSelectableFields(&newer.Image{}), nil), ); err != nil { panic(err) } if err := kapi.Scheme.AddFieldLabelConversionFunc("v1", "ImageStream", oapi.GetFieldLabelConversionFunc(newer.ImageStreamToSelectableFields(&newer.ImageStream{}), map[string]string{"name": "metadata.name"}), ); err != nil { panic(err) } }