Skip to content

Commit d16af12

Browse files
committed
OVA: manually remove PVs attached to ova provider once it deleted.
Signed-off-by: Bella Khizgiyaev <bkhizgiy@redhat.com>
1 parent 5f52229 commit d16af12

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

pkg/controller/provider/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ go_library(
3333
"//vendor/k8s.io/apimachinery/pkg/api/errors",
3434
"//vendor/k8s.io/apimachinery/pkg/api/resource",
3535
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:meta",
36+
"//vendor/k8s.io/apimachinery/pkg/labels",
3637
"//vendor/k8s.io/apimachinery/pkg/util/intstr",
3738
"//vendor/k8s.io/apiserver/pkg/storage/names",
3839
"//vendor/sigs.k8s.io/controller-runtime/pkg/client",

pkg/controller/provider/controller.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ import (
2121
"fmt"
2222
"os"
2323
"path/filepath"
24+
"strings"
2425
"sync"
26+
"time"
2527

2628
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
2729
"github.com/konveyor/forklift-controller/pkg/controller/base"
@@ -41,6 +43,7 @@ import (
4143
appsv1 "k8s.io/api/apps/v1"
4244
v1 "k8s.io/api/core/v1"
4345
k8serr "k8s.io/apimachinery/pkg/api/errors"
46+
"k8s.io/apimachinery/pkg/labels"
4447
"k8s.io/apiserver/pkg/storage/names"
4548
"sigs.k8s.io/controller-runtime/pkg/client"
4649
"sigs.k8s.io/controller-runtime/pkg/controller"
@@ -157,6 +160,28 @@ func (r Reconciler) Reconcile(ctx context.Context, request reconcile.Request) (r
157160
_ = r.DB().Close(true)
158161
}
159162
}
163+
164+
// Wait for the PV to release
165+
time.Sleep(5 * time.Second)
166+
167+
// List all PVs with a specific prefix and label
168+
labelSelector := labels.SelectorFromSet(labels.Set{"subapp": "ova-server"})
169+
pvList := &v1.PersistentVolumeList{}
170+
err = r.Client.List(context.TODO(), pvList, &client.ListOptions{
171+
LabelSelector: labelSelector,
172+
})
173+
if err != nil {
174+
r.Log.Error(err, "Failed to list PVs")
175+
} else {
176+
for _, pv := range pvList.Items {
177+
if strings.HasPrefix(pv.Name, "ova-server-pv-") && pv.Status.Phase == v1.VolumeReleased {
178+
err = r.Client.Delete(context.TODO(), &pv)
179+
if err != nil {
180+
r.Log.Error(err, "Failed to delete PV", "PV Name", pv.Name)
181+
}
182+
}
183+
}
184+
}
160185
}
161186
return
162187
} else {

0 commit comments

Comments
 (0)