@@ -2242,6 +2242,26 @@ func validateExistingCRs(dynamicClient dynamic.Interface, gr schema.GroupResourc
22422242 return fmt .Errorf ("error creating validator for schema version %s: %s" , version , err )
22432243 }
22442244 gvr := schema.GroupVersionResource {Group : gr .Group , Version : version , Resource : gr .Resource }
2245+
2246+ results := make (map [string ]* unstructured.Unstructured )
2247+
2248+ crList , err := dynamicClient .Resource (gvr ).List (context .TODO (), metav1.ListOptions {})
2249+ if err != nil {
2250+ return fmt .Errorf ("error listing resources in GroupVersionResource %#v: %s" , gvr , err )
2251+ }
2252+ for _ , cr := range crList .Items {
2253+ var namespacedName string
2254+ if cr .GetNamespace () == "" {
2255+ namespacedName = cr .GetName ()
2256+ } else {
2257+ namespacedName = fmt .Sprintf ("%s/%s" , cr .GetNamespace (), cr .GetName ())
2258+ }
2259+ if err := validation .ValidateCustomResource (field .NewPath ("" ), & cr , validator ).ToAggregate (); err != nil {
2260+ return validationError {fmt .Errorf ("error validating %s %q: updated validation is too restrictive: %v" , cr .GroupVersionKind (), namespacedName , err )}
2261+ }
2262+ results [namespacedName ] = & cr
2263+ }
2264+
22452265 pager := pager .New (pager .SimplePageFunc (func (opts metav1.ListOptions ) (runtime.Object , error ) {
22462266 return dynamicClient .Resource (gvr ).List (context .TODO (), opts )
22472267 }))
@@ -2257,7 +2277,9 @@ func validateExistingCRs(dynamicClient dynamic.Interface, gr schema.GroupResourc
22572277 } else {
22582278 namespacedName = fmt .Sprintf ("%s/%s" , cr .GetNamespace (), cr .GetName ())
22592279 }
2260- return validationError {fmt .Errorf ("error validating %s %q: updated validation is too restrictive: %v" , cr .GroupVersionKind (), namespacedName , err )}
2280+ return validationError {fmt .Errorf ("error validating %s %q: simple list succeeded where paginated failed:\n simple:\n %#v\n paginated:\n %#v\n %v" ,
2281+ gvr , namespacedName , results [namespacedName ], obj , err )}
2282+ // return validationError{fmt.Errorf("error validating %s %q: updated validation is too restrictive: %v", cr.GroupVersionKind(), namespacedName, err)}
22612283 }
22622284 return nil
22632285 }
0 commit comments