Skip to content

Commit aa1056c

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 aa1056c

File tree

1 file changed

+42
-48
lines changed

1 file changed

+42
-48
lines changed

pkg/migration/controllers/resourcetransformation.go

Lines changed: 42 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)