Skip to content

Commit 3dfa5b4

Browse files
committed
PB-4578:
- Remove loop on the paths in the validateTransformResource as this is already been doing in the resourcecollector.TransformResources - Because of this redandent computation issue is solved and RT CR status will not be overloded with duplicate resource information. - Remove path.Operation validation in validateTransformResource as this is already completed with the RT CR is in Initial Stage using the ResourceTransformationController.validateSpecPath method.
1 parent aef5257 commit 3dfa5b4

1 file changed

Lines changed: 41 additions & 48 deletions

File tree

pkg/migration/controllers/resourcetransformation.go

Lines changed: 41 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -250,57 +250,50 @@ 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+
metadata, err := meta.Accessor(object)
255+
if err != nil {
256+
log.TransformLog(transform).Errorf("Unable to read metadata for resource %v, err: %v", kind, err)
257+
return err
258+
}
259+
resInfo := &stork_api.TransformResourceInfo{
260+
Name: metadata.GetName(),
261+
Namespace: metadata.GetNamespace(),
262+
GroupVersionKind: metav1.GroupVersionKind(object.GetObjectKind().GroupVersionKind()),
263+
Specs: spec,
258264
}
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))
265+
if err := resourcecollector.TransformResources(object, []stork_api.TransformResourceInfo{*resInfo}, metadata.GetName(), metadata.GetNamespace()); err != nil {
266+
log.TransformLog(transform).Errorf("Unable to transform resource: %s/%s having group version kind:%v with error: %v", resInfo.Namespace, resInfo.Name, resInfo.GroupVersionKind, err)
267+
resInfo.Status = stork_api.ResourceTransformationStatusFailed
268+
resInfo.Reason = err.Error()
269+
return err
270+
}
271+
unstructured, ok := object.(*unstructured.Unstructured)
272+
if !ok {
273+
return fmt.Errorf("unable to cast object to unstructured: %v", object)
274+
}
275+
resource := &metav1.APIResource{
276+
Name: strings.ToLower(ruleset.Pluralize(strings.ToLower(kind))),
277+
Namespaced: len(metadata.GetNamespace()) > 0,
278+
}
279+
dynamicClient := localInterface.Resource(
280+
object.GetObjectKind().GroupVersionKind().GroupVersion().WithResource(resource.Name)).Namespace(getTransformNamespace(transform.Namespace))
287281

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)
282+
unstructured.SetNamespace(getTransformNamespace(transform.Namespace))
283+
log.TransformLog(transform).Infof("Applying object %s, %s",
284+
object.GetObjectKind().GroupVersionKind().Kind,
285+
metadata.GetName())
286+
_, err = dynamicClient.Create(context.TODO(), unstructured, metav1.CreateOptions{DryRun: []string{"All"}})
287+
if err != nil {
288+
log.TransformLog(transform).Errorf("Error while DryRun of resource: %s/%s having group version kind:%v with error: %v", resInfo.Namespace, resInfo.Name, resInfo.GroupVersionKind, err)
289+
resInfo.Status = stork_api.ResourceTransformationStatusFailed
290+
resInfo.Reason = err.Error()
291+
} else {
292+
log.TransformLog(transform).Infof("DryRun is successfull for resource: %s/%s having group version kind:%v ", resInfo.Namespace, resInfo.Name, resInfo.GroupVersionKind)
293+
resInfo.Status = stork_api.ResourceTransformationStatusReady
294+
resInfo.Reason = ""
303295
}
296+
transform.Status.Resources = append(transform.Status.Resources, resInfo)
304297
}
305298
}
306299

0 commit comments

Comments
 (0)