Skip to content
This repository was archived by the owner on Mar 16, 2024. It is now read-only.

Commit e0bfed6

Browse files
authored
Merge pull request #2460 from njhale/enhance-strip-scheduling-field
enhance: strip k8s scheduling details from app objects
2 parents 23546b4 + fc7939c commit e0bfed6

File tree

26 files changed

+990
-842
lines changed

26 files changed

+990
-842
lines changed

integration/run/run_test.go

Lines changed: 58 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func TestVolume(t *testing.T) {
4040
helper.StartController(t)
4141

4242
ctx := helper.GetCTX(t)
43-
kclient := helper.MustReturn(kclient.Default)
43+
kc := helper.MustReturn(kclient.Default)
4444
c, _ := helper.ClientAndProject(t)
4545

4646
image, err := c.AcornImageBuild(ctx, "./testdata/volume/Acornfile", &client.AcornImageBuildOptions{
@@ -55,7 +55,7 @@ func TestVolume(t *testing.T) {
5555
t.Fatal(err)
5656
}
5757

58-
pv := helper.Wait(t, kclient.Watch, &corev1.PersistentVolumeList{}, func(obj *corev1.PersistentVolume) bool {
58+
pv := helper.Wait(t, kc.Watch, &corev1.PersistentVolumeList{}, func(obj *corev1.PersistentVolume) bool {
5959
return obj.Labels[labels.AcornAppName] == app.Name &&
6060
obj.Labels[labels.AcornAppNamespace] == app.Namespace &&
6161
obj.Labels[labels.AcornManaged] == "true" &&
@@ -85,7 +85,7 @@ func TestVolume(t *testing.T) {
8585
t.Fatal(err)
8686
}
8787

88-
helper.WaitForObject(t, kclient.Watch, &corev1.PersistentVolumeList{}, pv, func(obj *corev1.PersistentVolume) bool {
88+
helper.WaitForObject(t, kc.Watch, &corev1.PersistentVolumeList{}, pv, func(obj *corev1.PersistentVolume) bool {
8989
return obj.Status.Phase == corev1.VolumeBound &&
9090
obj.Labels[labels.AcornAppName] == app.Name &&
9191
obj.Labels[labels.AcornAppNamespace] == app.Namespace &&
@@ -123,7 +123,7 @@ func TestServiceConsumer(t *testing.T) {
123123

124124
ctx := helper.GetCTX(t)
125125
c, _ := helper.ClientAndProject(t)
126-
kclient := helper.MustReturn(kclient.Default)
126+
kc := helper.MustReturn(kclient.Default)
127127

128128
image, err := c.AcornImageBuild(ctx, "./testdata/serviceconsumer/Acornfile", &client.AcornImageBuildOptions{
129129
Cwd: "./testdata/serviceconsumer/",
@@ -151,9 +151,8 @@ func TestServiceConsumer(t *testing.T) {
151151
}},
152152
}},
153153
},
154-
Status: v1.AppInstanceStatus{},
155154
}
156-
if err := kclient.Create(ctx, appInstance); err != nil {
155+
if err := kc.Create(ctx, appInstance); err != nil {
157156
t.Fatal(err)
158157
}
159158

@@ -171,11 +170,11 @@ func TestVolumeBadClassInImageBoundToGoodClass(t *testing.T) {
171170
helper.StartController(t)
172171

173172
ctx := helper.GetCTX(t)
174-
kclient := helper.MustReturn(kclient.Default)
173+
kc := helper.MustReturn(kclient.Default)
175174
c, _ := helper.ClientAndProject(t)
176175

177176
storageClasses := new(storagev1.StorageClassList)
178-
err := kclient.List(ctx, storageClasses)
177+
err := kc.List(ctx, storageClasses)
179178
if err != nil || len(storageClasses.Items) == 0 {
180179
t.Skip("No storage classes, so skipping VolumeBadClassInImageBoundToGoodClass")
181180
return
@@ -186,11 +185,11 @@ func TestVolumeBadClassInImageBoundToGoodClass(t *testing.T) {
186185
StorageClassName: getStorageClassName(t, storageClasses),
187186
SupportedRegions: []string{apiv1.LocalRegion},
188187
}
189-
if err = kclient.Create(ctx, &volumeClass); err != nil {
188+
if err = kc.Create(ctx, &volumeClass); err != nil {
190189
t.Fatal(err)
191190
}
192191
defer func() {
193-
if err = kclient.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
192+
if err = kc.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
194193
t.Fatal(err)
195194
}
196195
}()
@@ -214,7 +213,7 @@ func TestVolumeBadClassInImageBoundToGoodClass(t *testing.T) {
214213
t.Fatal(err)
215214
}
216215

217-
helper.Wait(t, kclient.Watch, &corev1.PersistentVolumeClaimList{}, func(obj *corev1.PersistentVolumeClaim) bool {
216+
helper.Wait(t, kc.Watch, &corev1.PersistentVolumeClaimList{}, func(obj *corev1.PersistentVolumeClaim) bool {
218217
return obj.Labels[labels.AcornAppName] == app.Name &&
219218
obj.Labels[labels.AcornAppNamespace] == app.Namespace &&
220219
obj.Labels[labels.AcornManaged] == "true" &&
@@ -232,11 +231,11 @@ func TestVolumeBoundBadClass(t *testing.T) {
232231
helper.StartController(t)
233232

234233
ctx := helper.GetCTX(t)
235-
kclient := helper.MustReturn(kclient.Default)
234+
kc := helper.MustReturn(kclient.Default)
236235
c, _ := helper.ClientAndProject(t)
237236

238237
storageClasses := new(storagev1.StorageClassList)
239-
if err := kclient.List(ctx, storageClasses); err != nil {
238+
if err := kc.List(ctx, storageClasses); err != nil {
240239
t.Fatal(err)
241240
}
242241

@@ -246,11 +245,11 @@ func TestVolumeBoundBadClass(t *testing.T) {
246245
SupportedRegions: []string{apiv1.LocalRegion},
247246
}
248247

249-
if err := kclient.Create(ctx, &volumeClass); err != nil {
248+
if err := kc.Create(ctx, &volumeClass); err != nil {
250249
t.Fatal(err)
251250
}
252251
defer func() {
253-
if err := kclient.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
252+
if err := kc.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
254253
t.Fatal(err)
255254
}
256255
}()
@@ -279,19 +278,19 @@ func TestVolumeClassInactive(t *testing.T) {
279278
helper.StartController(t)
280279

281280
ctx := helper.GetCTX(t)
282-
kclient := helper.MustReturn(kclient.Default)
281+
kc := helper.MustReturn(kclient.Default)
283282
c, _ := helper.ClientAndProject(t)
284283

285284
volumeClass := adminapiv1.ClusterVolumeClass{
286285
ObjectMeta: metav1.ObjectMeta{Name: "acorn-test-custom"},
287286
Inactive: true,
288287
SupportedRegions: []string{apiv1.LocalRegion},
289288
}
290-
if err := kclient.Create(ctx, &volumeClass); err != nil {
289+
if err := kc.Create(ctx, &volumeClass); err != nil {
291290
t.Fatal(err)
292291
}
293292
defer func() {
294-
if err := kclient.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
293+
if err := kc.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
295294
t.Fatal(err)
296295
}
297296
}()
@@ -313,7 +312,7 @@ func TestVolumeClassSizeTooSmall(t *testing.T) {
313312
helper.StartController(t)
314313

315314
ctx := helper.GetCTX(t)
316-
kclient := helper.MustReturn(kclient.Default)
315+
kc := helper.MustReturn(kclient.Default)
317316
c, _ := helper.ClientAndProject(t)
318317

319318
volumeClass := adminapiv1.ClusterVolumeClass{
@@ -324,11 +323,11 @@ func TestVolumeClassSizeTooSmall(t *testing.T) {
324323
},
325324
SupportedRegions: []string{apiv1.LocalRegion},
326325
}
327-
if err := kclient.Create(ctx, &volumeClass); err != nil {
326+
if err := kc.Create(ctx, &volumeClass); err != nil {
328327
t.Fatal(err)
329328
}
330329
defer func() {
331-
if err := kclient.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
330+
if err := kc.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
332331
t.Fatal(err)
333332
}
334333
}()
@@ -357,7 +356,7 @@ func TestVolumeClassSizeTooLarge(t *testing.T) {
357356
helper.StartController(t)
358357

359358
ctx := helper.GetCTX(t)
360-
kclient := helper.MustReturn(kclient.Default)
359+
kc := helper.MustReturn(kclient.Default)
361360
c, _ := helper.ClientAndProject(t)
362361

363362
volumeClass := adminapiv1.ClusterVolumeClass{
@@ -368,11 +367,11 @@ func TestVolumeClassSizeTooLarge(t *testing.T) {
368367
},
369368
SupportedRegions: []string{apiv1.LocalRegion},
370369
}
371-
if err := kclient.Create(ctx, &volumeClass); err != nil {
370+
if err := kc.Create(ctx, &volumeClass); err != nil {
372371
t.Fatal(err)
373372
}
374373
defer func() {
375-
if err := kclient.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
374+
if err := kc.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
376375
t.Fatal(err)
377376
}
378377
}()
@@ -401,11 +400,11 @@ func TestVolumeClassRemoved(t *testing.T) {
401400
helper.StartController(t)
402401

403402
ctx := helper.GetCTX(t)
404-
kclient := helper.MustReturn(kclient.Default)
403+
kc := helper.MustReturn(kclient.Default)
405404
c, _ := helper.ClientAndProject(t)
406405

407406
storageClasses := new(storagev1.StorageClassList)
408-
err := kclient.List(ctx, storageClasses)
407+
err := kc.List(ctx, storageClasses)
409408
if err != nil || len(storageClasses.Items) == 0 {
410409
t.Skip("No storage classes, so skipping VolumeClassRemoved")
411410
return
@@ -416,11 +415,11 @@ func TestVolumeClassRemoved(t *testing.T) {
416415
StorageClassName: getStorageClassName(t, storageClasses),
417416
SupportedRegions: []string{apiv1.LocalRegion},
418417
}
419-
if err = kclient.Create(ctx, &volumeClass); err != nil {
418+
if err = kc.Create(ctx, &volumeClass); err != nil {
420419
t.Fatal(err)
421420
}
422421
defer func() {
423-
if err = kclient.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
422+
if err = kc.Delete(context.Background(), &volumeClass); err != nil && !apierrors.IsNotFound(err) {
424423
t.Fatal(err)
425424
}
426425
}()
@@ -437,7 +436,7 @@ func TestVolumeClassRemoved(t *testing.T) {
437436
t.Fatal(err)
438437
}
439438

440-
helper.Wait(t, kclient.Watch, &corev1.PersistentVolumeClaimList{}, func(obj *corev1.PersistentVolumeClaim) bool {
439+
helper.Wait(t, kc.Watch, &corev1.PersistentVolumeClaimList{}, func(obj *corev1.PersistentVolumeClaim) bool {
441440
return obj.Labels[labels.AcornAppName] == app.Name &&
442441
obj.Labels[labels.AcornAppNamespace] == app.Namespace &&
443442
obj.Labels[labels.AcornManaged] == "true" &&
@@ -449,7 +448,7 @@ func TestVolumeClassRemoved(t *testing.T) {
449448
done := obj.Status.Condition(v1.AppInstanceConditionParsed).Success &&
450449
obj.Status.Condition(v1.AppInstanceConditionVolumes).Success
451450
if done {
452-
if err = kclient.Delete(ctx, &volumeClass); err != nil {
451+
if err = kc.Delete(ctx, &volumeClass); err != nil {
453452
t.Fatal(err)
454453
}
455454
}
@@ -934,13 +933,8 @@ func TestDeployParam(t *testing.T) {
934933

935934
func TestUsingComputeClasses(t *testing.T) {
936935
helper.StartController(t)
937-
cfg := helper.StartAPI(t)
938-
project := helper.TempProject(t, helper.MustReturn(kclient.Default))
936+
c, _ := helper.ClientAndProject(t)
939937
kclient := helper.MustReturn(kclient.Default)
940-
c, err := client.New(cfg, "", project.Name)
941-
if err != nil {
942-
t.Fatal(err)
943-
}
944938

945939
ctx := helper.GetCTX(t)
946940

@@ -950,7 +944,7 @@ func TestUsingComputeClasses(t *testing.T) {
950944
testDataDirectory string
951945
computeClass adminv1.ProjectComputeClassInstance
952946
expected map[string]v1.Scheduling
953-
waitFor func(obj *apiv1.App) bool
947+
waitFor func(obj *v1.AppInstance) bool
954948
fail bool
955949
}{
956950
{
@@ -993,7 +987,7 @@ func TestUsingComputeClasses(t *testing.T) {
993987
},
994988
}},
995989
},
996-
waitFor: func(obj *apiv1.App) bool {
990+
waitFor: func(obj *v1.AppInstance) bool {
997991
return obj.Status.Condition(v1.AppInstanceConditionParsed).Success &&
998992
obj.Status.Condition(v1.AppInstanceConditionScheduling).Success
999993
},
@@ -1027,7 +1021,7 @@ func TestUsingComputeClasses(t *testing.T) {
10271021
Operator: corev1.TolerationOpExists,
10281022
},
10291023
}}},
1030-
waitFor: func(obj *apiv1.App) bool {
1024+
waitFor: func(obj *v1.AppInstance) bool {
10311025
return obj.Status.Condition(v1.AppInstanceConditionParsed).Success &&
10321026
obj.Status.Condition(v1.AppInstanceConditionScheduling).Success
10331027
},
@@ -1066,7 +1060,7 @@ func TestUsingComputeClasses(t *testing.T) {
10661060
},
10671061
}},
10681062
},
1069-
waitFor: func(obj *apiv1.App) bool {
1063+
waitFor: func(obj *v1.AppInstance) bool {
10701064
return obj.Status.Condition(v1.AppInstanceConditionParsed).Success &&
10711065
obj.Status.Condition(v1.AppInstanceConditionScheduling).Success
10721066
},
@@ -1104,7 +1098,7 @@ func TestUsingComputeClasses(t *testing.T) {
11041098
},
11051099
}},
11061100
},
1107-
waitFor: func(obj *apiv1.App) bool {
1101+
waitFor: func(obj *v1.AppInstance) bool {
11081102
return obj.Status.Condition(v1.AppInstanceConditionParsed).Success &&
11091103
obj.Status.Condition(v1.AppInstanceConditionScheduling).Success
11101104
},
@@ -1131,7 +1125,7 @@ func TestUsingComputeClasses(t *testing.T) {
11311125
},
11321126
}},
11331127
},
1134-
waitFor: func(obj *apiv1.App) bool {
1128+
waitFor: func(obj *v1.AppInstance) bool {
11351129
return obj.Status.Condition(v1.AppInstanceConditionParsed).Success &&
11361130
obj.Status.Condition(v1.AppInstanceConditionScheduling).Success
11371131
},
@@ -1176,7 +1170,7 @@ func TestUsingComputeClasses(t *testing.T) {
11761170

11771171
// Clean-up and gurantee the computeclass doesn't exist after this test run
11781172
t.Cleanup(func() {
1179-
if err = kclient.Delete(context.Background(), computeClass); err != nil && !apierrors.IsNotFound(err) {
1173+
if err := kclient.Delete(context.Background(), computeClass); err != nil && !apierrors.IsNotFound(err) {
11801174
t.Fatal(err)
11811175
}
11821176
err := helper.EnsureDoesNotExist(ctx, func() (crClient.Object, error) {
@@ -1225,8 +1219,14 @@ func TestUsingComputeClasses(t *testing.T) {
12251219
}
12261220

12271221
if tt.waitFor != nil {
1228-
app = helper.WaitForObject(t, helper.Watcher(t, c), new(apiv1.AppList), app, tt.waitFor)
1229-
assert.EqualValues(t, app.Status.Scheduling, tt.expected, "generated scheduling rules are incorrect")
1222+
appInstance := &v1.AppInstance{
1223+
ObjectMeta: metav1.ObjectMeta{
1224+
Name: app.Name,
1225+
Namespace: app.Namespace,
1226+
},
1227+
}
1228+
appInstance = helper.WaitForObject(t, kclient.Watch, new(v1.AppInstanceList), appInstance, tt.waitFor)
1229+
assert.EqualValues(t, appInstance.Status.Scheduling, tt.expected, "generated scheduling rules are incorrect")
12301230
}
12311231
})
12321232
}
@@ -1745,8 +1745,8 @@ func TestAutoUpgradeLocalImage(t *testing.T) {
17451745
if err != nil {
17461746
t.Fatal("error while getting rest config:", err)
17471747
}
1748-
kclient := helper.MustReturn(kclient.Default)
1749-
project := helper.TempProject(t, kclient)
1748+
kc := helper.MustReturn(kclient.Default)
1749+
project := helper.TempProject(t, kc)
17501750

17511751
c, err := client.New(restConfig, project.Name, project.Name)
17521752
if err != nil {
@@ -1797,10 +1797,10 @@ func TestIgnoreResourceRequirements(t *testing.T) {
17971797
if err != nil {
17981798
t.Fatal("error while getting rest config:", err)
17991799
}
1800-
kclient := helper.MustReturn(kclient.Default)
1801-
project := helper.TempProject(t, kclient)
1800+
kc := helper.MustReturn(kclient.Default)
1801+
project := helper.TempProject(t, kc)
18021802

1803-
helper.SetIgnoreResourceRequirementsWithRestore(t, ctx, kclient)
1803+
helper.SetIgnoreResourceRequirementsWithRestore(t, ctx, kc)
18041804

18051805
c, err := client.New(restConfig, project.Name, project.Name)
18061806
if err != nil {
@@ -1824,8 +1824,14 @@ func TestIgnoreResourceRequirements(t *testing.T) {
18241824
t.Fatal(err)
18251825
}
18261826

1827-
app = helper.WaitForObject(t, helper.Watcher(t, c), &apiv1.AppList{}, app, func(obj *apiv1.App) bool {
1827+
appInstance := &v1.AppInstance{
1828+
ObjectMeta: metav1.ObjectMeta{
1829+
Name: app.Name,
1830+
Namespace: app.Namespace,
1831+
},
1832+
}
1833+
appInstance = helper.WaitForObject(t, helper.Watcher(t, c), &v1.AppInstanceList{}, appInstance, func(obj *v1.AppInstance) bool {
18281834
return obj.Status.Condition(v1.AppInstanceConditionParsed).Success
18291835
})
1830-
assert.Empty(t, app.Status.Scheduling["simple"].Requirements)
1836+
assert.Empty(t, appInstance.Status.Scheduling["simple"].Requirements)
18311837
}

0 commit comments

Comments
 (0)