Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions controllers/jenkins/devopsproject/devopsproject_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,21 @@ func (c *Controller) syncHandler(key string) error {
}

if delSuccess {
// find all namespaces with the prefix of devopsproject
namespaces, err := c.namespaceLister.List(labels.SelectorFromSet(labels.Set{constants.DevOpsProjectLabelKey: project.Name}))
if err != nil {
klog.ErrorS(err, fmt.Sprintf("failed to list namespaces when deleting devopsproject %s", key))
return err
}
for _, ns := range namespaces {
klog.Infof("deleting namespace %s for devopsproject %s", ns.Name, project.Name)
err := c.client.CoreV1().Namespaces().Delete(context.Background(), ns.Name, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
// do not return error, continue to delete other namespaces
klog.ErrorS(err, fmt.Sprintf("failed to delete namespace %s for devopsproject %s", ns.Name, project.Name))
}
}
Comment on lines +345 to +358

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The logging within this block could be improved by consistently using structured logging (klog.InfoS and klog.ErrorS) instead of klog.Infof and fmt.Sprintf. This enhances readability and makes logs easier to parse and query for observability purposes. Additionally, the leading comment can be improved to better describe the purpose of this code block.

Suggested change
// find all namespaces with the prefix of devopsproject
namespaces, err := c.namespaceLister.List(labels.SelectorFromSet(labels.Set{constants.DevOpsProjectLabelKey: project.Name}))
if err != nil {
klog.ErrorS(err, fmt.Sprintf("failed to list namespaces when deleting devopsproject %s", key))
return err
}
for _, ns := range namespaces {
klog.Infof("deleting namespace %s for devopsproject %s", ns.Name, project.Name)
err := c.client.CoreV1().Namespaces().Delete(context.Background(), ns.Name, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
// do not return error, continue to delete other namespaces
klog.ErrorS(err, fmt.Sprintf("failed to delete namespace %s for devopsproject %s", ns.Name, project.Name))
}
}
// Clean up associated namespaces before removing the finalizer.
namespaces, err := c.namespaceLister.List(labels.SelectorFromSet(labels.Set{constants.DevOpsProjectLabelKey: project.Name}))
if err != nil {
klog.ErrorS(err, "failed to list namespaces when deleting devopsproject", "devopsproject", key)
return err
}
for _, ns := range namespaces {
klog.InfoS("deleting namespace for devopsproject", "namespace", ns.Name, "devopsproject", project.Name)
err := c.client.CoreV1().Namespaces().Delete(context.Background(), ns.Name, metav1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) {
// do not return error, continue to delete other namespaces
klog.ErrorS(err, "failed to delete namespace", "namespace", ns.Name, "devopsproject", project.Name)
}
}


project.ObjectMeta.Finalizers = sliceutil.RemoveString(project.ObjectMeta.Finalizers, func(item string) bool {
return item == devopsv1alpha3.DevOpsProjectFinalizerName
})
Expand Down