@@ -250,57 +250,51 @@ func (r *ResourceTransformationController) validateTransformResource(ctx context
250250 log .TransformLog (transform ).Errorf ("Error getting resources kind:%s, err: %v" , kind , err )
251251 return err
252252 }
253- for _ , path := range spec .Paths {
254- // This can be handle by CRD validation- v1 version crd support
255- if ! (path .Operation == stork_api .AddResourcePath || path .Operation == stork_api .DeleteResourcePath ||
256- path .Operation == stork_api .ModifyResourcePathValue ) {
257- return fmt .Errorf ("unsupported operation type for given path : %s" , path .Operation )
253+ for _ , object := range objects .Items {
254+ logrus .Debugf ("Objects Item %v" , object )
255+ metadata , err := meta .Accessor (object )
256+ if err != nil {
257+ log .TransformLog (transform ).Errorf ("Unable to read metadata for resource %v, err: %v" , kind , err )
258+ return err
259+ }
260+ resInfo := & stork_api.TransformResourceInfo {
261+ Name : metadata .GetName (),
262+ Namespace : metadata .GetNamespace (),
263+ GroupVersionKind : metav1 .GroupVersionKind (object .GetObjectKind ().GroupVersionKind ()),
264+ Specs : spec ,
258265 }
259- for _ , object := range objects .Items {
260- metadata , err := meta .Accessor (object )
261- if err != nil {
262- log .TransformLog (transform ).Errorf ("Unable to read metadata for resource %v, err: %v" , kind , err )
263- return err
264- }
265- resInfo := & stork_api.TransformResourceInfo {
266- Name : metadata .GetName (),
267- Namespace : metadata .GetNamespace (),
268- GroupVersionKind : metav1 .GroupVersionKind (object .GetObjectKind ().GroupVersionKind ()),
269- Specs : spec ,
270- }
271- if err := resourcecollector .TransformResources (object , []stork_api.TransformResourceInfo {* resInfo }, metadata .GetName (), metadata .GetNamespace ()); err != nil {
272- log .TransformLog (transform ).Errorf ("Unable to apply patch path %s during validation on resource kind : %s/,%s/%s, err: %v" , path , kind , resInfo .Namespace , resInfo .Name , err )
273- resInfo .Status = stork_api .ResourceTransformationStatusFailed
274- resInfo .Reason = err .Error ()
275- return err
276- }
277- unstructured , ok := object .(* unstructured.Unstructured )
278- if ! ok {
279- return fmt .Errorf ("unable to cast object to unstructured: %v" , object )
280- }
281- resource := & metav1.APIResource {
282- Name : strings .ToLower (ruleset .Pluralize (strings .ToLower (kind ))),
283- Namespaced : len (metadata .GetNamespace ()) > 0 ,
284- }
285- dynamicClient := localInterface .Resource (
286- object .GetObjectKind ().GroupVersionKind ().GroupVersion ().WithResource (resource .Name )).Namespace (getTransformNamespace (transform .Namespace ))
266+ if err := resourcecollector .TransformResources (object , []stork_api.TransformResourceInfo {* resInfo }, metadata .GetName (), metadata .GetNamespace ()); err != nil {
267+ log .TransformLog (transform ).Errorf ("Unable to transform resource: %s/%s having gvk:%v with error: %v" , resInfo .Namespace , resInfo .Name , resInfo .GroupVersionKind , err )
268+ resInfo .Status = stork_api .ResourceTransformationStatusFailed
269+ resInfo .Reason = err .Error ()
270+ return err
271+ }
272+ unstructured , ok := object .(* unstructured.Unstructured )
273+ if ! ok {
274+ return fmt .Errorf ("unable to cast object to unstructured: %v" , object )
275+ }
276+ resource := & metav1.APIResource {
277+ Name : strings .ToLower (ruleset .Pluralize (strings .ToLower (kind ))),
278+ Namespaced : len (metadata .GetNamespace ()) > 0 ,
279+ }
280+ dynamicClient := localInterface .Resource (
281+ object .GetObjectKind ().GroupVersionKind ().GroupVersion ().WithResource (resource .Name )).Namespace (getTransformNamespace (transform .Namespace ))
287282
288- unstructured .SetNamespace (getTransformNamespace (transform .Namespace ))
289- log .TransformLog (transform ).Infof ("Applying object %s, %s" ,
290- object .GetObjectKind ().GroupVersionKind ().Kind ,
291- metadata .GetName ())
292- _ , err = dynamicClient .Create (context .TODO (), unstructured , metav1.CreateOptions {DryRun : []string {"All" }})
293- if err != nil {
294- log .TransformLog (transform ).Errorf ("Unable to apply patch path %s on resource kind: %s/,%s/%s, err: %v" , path , kind , resInfo .Namespace , resInfo .Name , err )
295- resInfo .Status = stork_api .ResourceTransformationStatusFailed
296- resInfo .Reason = err .Error ()
297- } else {
298- log .TransformLog (transform ).Infof ("Applied patch path %s on resource kind: %s/,%s/%s" , path , kind , resInfo .Namespace , resInfo .Name )
299- resInfo .Status = stork_api .ResourceTransformationStatusReady
300- resInfo .Reason = ""
301- }
302- transform .Status .Resources = append (transform .Status .Resources , resInfo )
283+ unstructured .SetNamespace (getTransformNamespace (transform .Namespace ))
284+ log .TransformLog (transform ).Infof ("Applying object %s, %s" ,
285+ object .GetObjectKind ().GroupVersionKind ().Kind ,
286+ metadata .GetName ())
287+ _ , err = dynamicClient .Create (context .TODO (), unstructured , metav1.CreateOptions {DryRun : []string {"All" }})
288+ if err != nil {
289+ log .TransformLog (transform ).Errorf ("Error while DryRun of resource: %s/%s having gvk:%v with error: %v" , resInfo .Namespace , resInfo .Name , resInfo .GroupVersionKind , err )
290+ resInfo .Status = stork_api .ResourceTransformationStatusFailed
291+ resInfo .Reason = err .Error ()
292+ } else {
293+ log .TransformLog (transform ).Infof ("DryRun is successfull for resource: %s/%s having gvk:%v " , resInfo .Namespace , resInfo .Name , resInfo .GroupVersionKind )
294+ resInfo .Status = stork_api .ResourceTransformationStatusReady
295+ resInfo .Reason = ""
303296 }
297+ transform .Status .Resources = append (transform .Status .Resources , resInfo )
304298 }
305299 }
306300
0 commit comments