@@ -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