@@ -1254,7 +1254,37 @@ var _ = Describe("Subscription", func() {
1254
1254
require .Len (GinkgoT (), installPlan .Status .CatalogSources , 1 )
1255
1255
})
1256
1256
1257
- It ("creation with multiple dependencies" , func () {
1257
+ // CatSrc:
1258
+ //
1259
+ // Package A (apackage)
1260
+ // Default Channel: Stable
1261
+ // Channel Stable:
1262
+ // Operator A (Requires: CRD 1, CRD 2 )
1263
+ // Channel Alpha:
1264
+ // Operator ABC (Provides: CRD 1, CRD 2 )
1265
+ // Package B (apackage)
1266
+ // Default Channel: Stable
1267
+ // Channel Stable:
1268
+ // Operator B (Provides: CRD)
1269
+ // CatSrc2:
1270
+ //
1271
+ // Package B (bpackage)
1272
+ // Default Channel: Stable
1273
+ // Channel Stable:
1274
+ // Operator C (Provides: CRD 2)
1275
+ // Then create a subscription:
1276
+ //
1277
+ // CatalogSource: CatSrc
1278
+ // Package: Package A,
1279
+ // Channel: Stable,
1280
+ // StartingCSV: CSV A
1281
+ //
1282
+ // Check installed:
1283
+ //
1284
+ // CSV A, CSV B, CSV C
1285
+ //
1286
+ // CSV A required B and C but didn't get them from Package A
1287
+ It ("creation with dependencies required and provided in different versions of an operator in the same package" , func () {
1258
1288
1259
1289
defer cleaner .NotifyTestComplete (true )
1260
1290
@@ -1309,12 +1339,18 @@ var _ = Describe("Subscription", func() {
1309
1339
namedStrategy := newNginxInstallStrategy ((genName ("dep" )), permissions , nil )
1310
1340
depNamedStrategy := newNginxInstallStrategy ((genName ("dep" )), permissions , nil )
1311
1341
depNamedStrategy2 := newNginxInstallStrategy ((genName ("dep" )), permissions , nil )
1342
+ // csvA requires CRD1 and CRD2
1312
1343
csvA := newCSV ("nginx-a" , testNamespace , "" , semver .MustParse ("0.1.0" ), nil , []apiextensions.CustomResourceDefinition {crd , crd2 }, namedStrategy )
1344
+ // csvABC provides CRD1 and CRD2 in the same catalogsource with csvA (apackage)
1345
+ // also in the same package with csvA but different channel
1313
1346
csvABC := newCSV ("nginx-a-bc" , testNamespace , "" , semver .MustParse ("0.1.0" ), []apiextensions.CustomResourceDefinition {crd , crd2 }, nil , namedStrategy )
1347
+ // csvB provides CRD1 in the same catalogsource with csvA (apackage)
1314
1348
csvB := newCSV ("nginx-b-dep" , testNamespace , "" , semver .MustParse ("0.1.0" ), []apiextensions.CustomResourceDefinition {crd }, nil , depNamedStrategy )
1349
+ // csvC provides CRD2 in the different catalogsource with csvA (apackage)
1315
1350
csvC := newCSV ("nginx-c-dep" , testNamespace , "" , semver .MustParse ("0.1.0" ), []apiextensions.CustomResourceDefinition {crd2 }, nil , depNamedStrategy2 )
1316
1351
1317
- // Create PackageManifests
1352
+ // Create PackageManifests 1
1353
+ // Contain csvA, ABC and B
1318
1354
manifests := []registry.PackageManifest {
1319
1355
{
1320
1356
PackageName : packageName1 ,
@@ -1333,6 +1369,8 @@ var _ = Describe("Subscription", func() {
1333
1369
},
1334
1370
}
1335
1371
1372
+ // Create PackageManifests 2
1373
+ // Contain csvC
1336
1374
manifests2 := []registry.PackageManifest {
1337
1375
{
1338
1376
PackageName : packageName2 ,
@@ -1380,13 +1418,16 @@ var _ = Describe("Subscription", func() {
1380
1418
// Check that a single catalog source was used to resolve the InstallPlan
1381
1419
_ , err = fetchInstallPlan (GinkgoT (), crClient , subscription .Status .InstallPlanRef .Name , buildInstallPlanPhaseCheckFunc (v1alpha1 .InstallPlanPhaseComplete ))
1382
1420
require .NoError (GinkgoT (), err )
1383
- // Fetch CSVs
1421
+ // Fetch CSVs A, B and C
1384
1422
_ , err = fetchCSV (GinkgoT (), crClient , csvB .Name , testNamespace , csvSucceededChecker )
1385
1423
require .NoError (GinkgoT (), err )
1386
1424
_ , err = fetchCSV (GinkgoT (), crClient , csvC .Name , testNamespace , csvSucceededChecker )
1387
1425
require .NoError (GinkgoT (), err )
1388
1426
_ , err = fetchCSV (GinkgoT (), crClient , csvA .Name , testNamespace , csvSucceededChecker )
1389
1427
require .NoError (GinkgoT (), err )
1428
+ // Ensure csvABC is not installed
1429
+ _ , err = crClient .OperatorsV1alpha1 ().ClusterServiceVersions (testNamespace ).Get (context .TODO (), csvABC .Name , metav1.GetOptions {})
1430
+ require .Error (GinkgoT (), err )
1390
1431
})
1391
1432
})
1392
1433
0 commit comments