Skip to content

Commit b298650

Browse files
committed
lala
1 parent 37bb528 commit b298650

2 files changed

Lines changed: 45 additions & 26 deletions

File tree

pkg/controller/dataimportcron-controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ func (r *DataImportCronReconciler) update(ctx context.Context, dataImportCron *c
368368
if hasCurrent {
369369
storageClassChanged = currentSc != desiredSc
370370
} else {
371-
storageClassChanged = len(dataImportCron.Status.CurrentImports) > 0
371+
storageClassChanged = len(imports) > 0
372372
}
373373
if storageClassChanged {
374374
r.log.Info("Storage class changed, deleting imports on old SC", "currentSc", currentSc, "desiredSc", desiredSc)

pkg/controller/dataimportcron-controller_test.go

Lines changed: 44 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1845,47 +1845,66 @@ var _ = Describe("All DataImportCron Tests", func() {
18451845
})
18461846

18471847
It("Should delete old DV and requeue when first default StorageClass is set", func() {
1848-
sp := &cdiv1.StorageProfile{
1849-
ObjectMeta: metav1.ObjectMeta{Name: storageClassName},
1850-
}
1851-
reconciler = createDataImportCronReconciler(sc, sp)
1852-
1853-
dvName, errDvName := createDvName(dataSourceName, testDigest)
1854-
Expect(errDvName).ToNot(HaveOccurred())
1848+
// Step 1: Create reconciler and DIC with no default SC
1849+
reconciler = createDataImportCronReconciler()
18551850
cron = newDataImportCron(cronName)
1856-
cc.AddAnnotation(cron, AnnSourceDesiredDigest, testDigest)
1857-
cron.Status = cdiv1.DataImportCronStatus{
1858-
CurrentImports: []cdiv1.ImportStatus{
1859-
{DataVolumeName: dvName, Digest: testDigest},
1860-
},
1861-
}
18621851
err := reconciler.client.Create(context.TODO(), cron)
18631852
Expect(err).ToNot(HaveOccurred())
18641853

1865-
dv := &cdiv1.DataVolume{
1866-
ObjectMeta: metav1.ObjectMeta{
1867-
Name: dvName,
1868-
Namespace: metav1.NamespaceDefault,
1869-
Labels: map[string]string{common.DataImportCronLabel: cronName},
1870-
},
1871-
Spec: cdiv1.DataVolumeSpec{
1872-
Source: &cdiv1.DataVolumeSource{Registry: &cdiv1.DataVolumeSourceRegistry{URL: ptr.To(testRegistryURL)}},
1873-
Storage: &cdiv1.StorageSpec{},
1874-
},
1854+
cc.AddAnnotation(cron, AnnSourceDesiredDigest, testDigest)
1855+
err = reconciler.client.Update(context.TODO(), cron)
1856+
Expect(err).ToNot(HaveOccurred())
1857+
dataSource = &cdiv1.DataSource{}
1858+
1859+
// Reconcile creates a DV without any SC
1860+
_, err = reconciler.Reconcile(context.TODO(), cronReq)
1861+
Expect(err).ToNot(HaveOccurred())
1862+
err = reconciler.client.Get(context.TODO(), cronKey, cron)
1863+
Expect(err).ToNot(HaveOccurred())
1864+
1865+
imports := cron.Status.CurrentImports
1866+
Expect(imports).ToNot(BeEmpty())
1867+
oldDvName := imports[0].DataVolumeName
1868+
1869+
oldDv := &cdiv1.DataVolume{}
1870+
err = reconciler.client.Get(context.TODO(), dvKey(oldDvName), oldDv)
1871+
Expect(err).ToNot(HaveOccurred())
1872+
Expect(cron.Annotations).ToNot(HaveKey(AnnStorageClass))
1873+
1874+
// Step 2: Add a default SC
1875+
err = reconciler.client.Create(context.TODO(), sc)
1876+
Expect(err).ToNot(HaveOccurred())
1877+
sp := &cdiv1.StorageProfile{
1878+
ObjectMeta: metav1.ObjectMeta{Name: storageClassName},
18751879
}
1876-
err = reconciler.client.Create(context.TODO(), dv)
1880+
err = reconciler.client.Create(context.TODO(), sp)
18771881
Expect(err).ToNot(HaveOccurred())
18781882

1883+
// Reconcile detects nil-to-non-nil SC change, deletes old DV, requeues
18791884
res, err := reconciler.Reconcile(context.TODO(), cronReq)
18801885
Expect(err).ToNot(HaveOccurred())
18811886
Expect(res.RequeueAfter).To(Equal(time.Second))
18821887

1883-
err = reconciler.client.Get(context.TODO(), dvKey(dvName), dv)
1888+
err = reconciler.client.Get(context.TODO(), dvKey(oldDvName), oldDv)
18841889
Expect(k8serrors.IsNotFound(err)).To(BeTrue())
18851890

18861891
err = reconciler.client.Get(context.TODO(), cronKey, cron)
18871892
Expect(err).ToNot(HaveOccurred())
18881893
Expect(cron.Annotations[AnnStorageClass]).To(Equal(storageClassName))
1894+
1895+
// Step 3: Reconcile again creates a new DV
1896+
_, err = reconciler.Reconcile(context.TODO(), cronReq)
1897+
Expect(err).ToNot(HaveOccurred())
1898+
1899+
err = reconciler.client.Get(context.TODO(), cronKey, cron)
1900+
Expect(err).ToNot(HaveOccurred())
1901+
imports = cron.Status.CurrentImports
1902+
Expect(imports).ToNot(BeEmpty())
1903+
newDvName := imports[0].DataVolumeName
1904+
1905+
newDv := &cdiv1.DataVolume{}
1906+
err = reconciler.client.Get(context.TODO(), dvKey(newDvName), newDv)
1907+
Expect(err).ToNot(HaveOccurred())
18891908
})
18901909

18911910
})

0 commit comments

Comments
 (0)