@@ -21,7 +21,9 @@ import (
21
21
"fmt"
22
22
"os"
23
23
"path/filepath"
24
+ "strings"
24
25
"sync"
26
+ "time"
25
27
26
28
api "github.com/konveyor/forklift-controller/pkg/apis/forklift/v1beta1"
27
29
"github.com/konveyor/forklift-controller/pkg/controller/base"
@@ -41,6 +43,7 @@ import (
41
43
appsv1 "k8s.io/api/apps/v1"
42
44
v1 "k8s.io/api/core/v1"
43
45
k8serr "k8s.io/apimachinery/pkg/api/errors"
46
+ "k8s.io/apimachinery/pkg/labels"
44
47
"k8s.io/apiserver/pkg/storage/names"
45
48
"sigs.k8s.io/controller-runtime/pkg/client"
46
49
"sigs.k8s.io/controller-runtime/pkg/controller"
@@ -157,6 +160,28 @@ func (r Reconciler) Reconcile(ctx context.Context, request reconcile.Request) (r
157
160
_ = r .DB ().Close (true )
158
161
}
159
162
}
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
+ }
160
185
}
161
186
return
162
187
} else {
0 commit comments