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

Commit 0b9b373

Browse files
committed
Add project instances
There are a few situations where we need a buffer between a project being deleted and the corresponding namespace being deleted. One such scenario is ensuring that delete jobs run when a project is deleted. This change adds a project instance, which is this buffer. Using the project instance, we can ensure that all apps are successfully cleaned up before the namespace is deleted. This should also give the user the ability to use the ignore-cleanup functionality when deleting a project. Changes are also made to the integration tests to use project instances instead of namespaces. Signed-off-by: Donnie Adams <[email protected]>
1 parent 26fd3b4 commit 0b9b373

File tree

85 files changed

+1169
-1111
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1169
-1111
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
cuelang.org/go v0.5.0
1515
github.com/AlecAivazis/survey/v2 v2.3.6
1616
github.com/acorn-io/aml v0.0.0-20230707055340-d9d7a8c927b2
17-
github.com/acorn-io/baaah v0.0.0-20230628211933-3f682344a78d
17+
github.com/acorn-io/baaah v0.0.0-20230707151126-5d519d272865
1818
github.com/acorn-io/mink v0.0.0-20230523184405-ceaaa366d500
1919
github.com/acorn-io/namegenerator v0.0.0-20220915160418-9e3d5a0ffe78
2020
github.com/adrg/xdg v0.4.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpH
9494
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
9595
github.com/acorn-io/aml v0.0.0-20230707055340-d9d7a8c927b2 h1:zx1YhJI+jecZ1nQ3MzFRblMU4KdACUG8DQfd0zB9XvY=
9696
github.com/acorn-io/aml v0.0.0-20230707055340-d9d7a8c927b2/go.mod h1:UEx5RRLFjryCEHN2pM59+d8A0mPJ3VAxggJOTzPymwg=
97-
github.com/acorn-io/baaah v0.0.0-20230628211933-3f682344a78d h1:a+geMqB3U52a4+iMmLZ9R/EXkgxrp0QCetoqLAUnTD8=
98-
github.com/acorn-io/baaah v0.0.0-20230628211933-3f682344a78d/go.mod h1:LtwaWrYK/VuGptWxeD5Sgl0sgJV1ksicpTzyLilow1U=
97+
github.com/acorn-io/baaah v0.0.0-20230707151126-5d519d272865 h1:BPPGCEBgPxn7crFFWqLDJUlzdHQ23olFkdUqlXd3KA8=
98+
github.com/acorn-io/baaah v0.0.0-20230707151126-5d519d272865/go.mod h1:LtwaWrYK/VuGptWxeD5Sgl0sgJV1ksicpTzyLilow1U=
9999
github.com/acorn-io/mink v0.0.0-20230523184405-ceaaa366d500 h1:tiM36bM+iMWuW9HM+YlM1GfNDXC7f565z8Be5epO0qM=
100100
github.com/acorn-io/mink v0.0.0-20230523184405-ceaaa366d500/go.mod h1:y6aYj2dF/SlU205bDfA43Y5c9sa/aYr4X5GDqYJzJTU=
101101
github.com/acorn-io/namegenerator v0.0.0-20220915160418-9e3d5a0ffe78 h1:5zs9L/CXNkuTdJSbhFWczAorbmx67nqlqswx5CQi7XI=

integration/build/build_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@ func TestBuildDefault(t *testing.T) {
173173
func TestMultiArch(t *testing.T) {
174174
helper.StartController(t)
175175
cfg := helper.StartAPI(t)
176-
ns := helper.TempNamespace(t, helper.MustReturn(k8sclient.Default))
176+
project := helper.TempProject(t, helper.MustReturn(k8sclient.Default))
177177
kclient := helper.MustReturn(k8sclient.Default)
178-
c, err := client.New(cfg, "", ns.Name)
178+
c, err := client.New(cfg, "", project.Name)
179179
if err != nil {
180180
t.Fatal()
181181
}
@@ -204,7 +204,7 @@ func TestMultiArch(t *testing.T) {
204204
t.Fatal(err)
205205
}
206206

207-
opts, err := images.GetAuthenticationRemoteOptions(context.Background(), kclient, ns.Name, remote.WithTransport(transport))
207+
opts, err := images.GetAuthenticationRemoteOptions(context.Background(), kclient, project.Name, remote.WithTransport(transport))
208208
if err != nil {
209209
t.Fatal(err)
210210
}
@@ -234,8 +234,8 @@ func TestMultiArch(t *testing.T) {
234234
func TestBuildNestedAcornWithLocalImage(t *testing.T) {
235235
helper.StartController(t)
236236
cfg := helper.StartAPI(t)
237-
ns := helper.TempNamespace(t, helper.MustReturn(k8sclient.Default))
238-
c, err := client.New(cfg, "", ns.Name)
237+
project := helper.TempProject(t, helper.MustReturn(k8sclient.Default))
238+
c, err := client.New(cfg, "", project.Name)
239239
if err != nil {
240240
t.Fatal(err)
241241
}
@@ -261,8 +261,8 @@ func TestBuildNestedAcornWithLocalImage(t *testing.T) {
261261
assert.Equal(t, strings.Split(nestedImage.ImageData.Acorns["nginx"].Image, "sha256:")[1], image)
262262

263263
// create a second project and make sure we can't access the local image from the first project
264-
ns2 := helper.TempNamespace(t, helper.MustReturn(k8sclient.Default))
265-
c2, err := client.New(cfg, "", ns2.Name)
264+
project2 := helper.TempProject(t, helper.MustReturn(k8sclient.Default))
265+
c2, err := client.New(cfg, "", project2.Name)
266266
if err != nil {
267267
t.Fatal(err)
268268
}

integration/client/apps/apps_test.go

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ func TestAppStartStop(t *testing.T) {
2020

2121
ctx := helper.GetCTX(t)
2222
kclient := helper.MustReturn(kclient.Default)
23-
ns := helper.TempNamespace(t, kclient)
23+
project := helper.TempProject(t, kclient)
2424

25-
imageID := client2.NewImage(t, ns.Name)
25+
imageID := client2.NewImage(t, project.Name)
2626

27-
c, err := client.New(restConfig, "", ns.Name)
27+
c, err := client.New(restConfig, "", project.Name)
2828
if err != nil {
2929
t.Fatal(err)
3030
}
@@ -67,11 +67,11 @@ func TestAppDelete(t *testing.T) {
6767

6868
ctx := helper.GetCTX(t)
6969
kclient := helper.MustReturn(kclient.Default)
70-
ns := helper.TempNamespace(t, kclient)
70+
project := helper.TempProject(t, kclient)
7171

72-
imageID := client2.NewImage(t, ns.Name)
72+
imageID := client2.NewImage(t, project.Name)
7373

74-
c, err := client.New(restConfig, "", ns.Name)
74+
c, err := client.New(restConfig, "", project.Name)
7575
if err != nil {
7676
t.Fatal(err)
7777
}
@@ -103,12 +103,12 @@ func TestAppUpdate(t *testing.T) {
103103

104104
ctx := helper.GetCTX(t)
105105
kclient := helper.MustReturn(kclient.Default)
106-
ns := helper.TempNamespace(t, kclient)
106+
project := helper.TempProject(t, kclient)
107107

108-
imageID := client2.NewImage(t, ns.Name)
109-
imageID2 := client2.NewImage2(t, ns.Name)
108+
imageID := client2.NewImage(t, project.Name)
109+
imageID2 := client2.NewImage2(t, project.Name)
110110

111-
c, err := client.New(restConfig, "", ns.Name)
111+
c, err := client.New(restConfig, "", project.Name)
112112
if err != nil {
113113
t.Fatal(err)
114114
}
@@ -316,11 +316,11 @@ func TestAppGet(t *testing.T) {
316316

317317
ctx := helper.GetCTX(t)
318318
kclient := helper.MustReturn(kclient.Default)
319-
ns := helper.TempNamespace(t, kclient)
319+
project := helper.TempProject(t, kclient)
320320

321-
imageID := client2.NewImage(t, ns.Name)
321+
imageID := client2.NewImage(t, project.Name)
322322

323-
c, err := client.New(restConfig, "", ns.Name)
323+
c, err := client.New(restConfig, "", project.Name)
324324
if err != nil {
325325
t.Fatal(err)
326326
}
@@ -345,11 +345,11 @@ func TestAppList(t *testing.T) {
345345

346346
ctx := helper.GetCTX(t)
347347
kclient := helper.MustReturn(kclient.Default)
348-
ns := helper.TempNamespace(t, kclient)
348+
project := helper.TempProject(t, kclient)
349349

350-
imageID := client2.NewImage(t, ns.Name)
350+
imageID := client2.NewImage(t, project.Name)
351351

352-
c, err := client.New(restConfig, "", ns.Name)
352+
c, err := client.New(restConfig, "", project.Name)
353353
if err != nil {
354354
t.Fatal(err)
355355
}
@@ -376,11 +376,11 @@ func TestAppLog(t *testing.T) {
376376

377377
ctx := helper.GetCTX(t)
378378
kclient := helper.MustReturn(kclient.Default)
379-
ns := helper.TempNamespace(t, kclient)
379+
project := helper.TempProject(t, kclient)
380380

381-
imageID := client2.NewImage(t, ns.Name)
381+
imageID := client2.NewImage(t, project.Name)
382382

383-
c, err := client.New(restConfig, "", ns.Name)
383+
c, err := client.New(restConfig, "", project.Name)
384384
if err != nil {
385385
t.Fatal(err)
386386
}
@@ -421,11 +421,11 @@ func TestAppRun(t *testing.T) {
421421

422422
ctx := helper.GetCTX(t)
423423
kclient := helper.MustReturn(kclient.Default)
424-
ns := helper.TempNamespace(t, kclient)
424+
project := helper.TempProject(t, kclient)
425425

426-
imageID := client2.NewImage(t, ns.Name)
426+
imageID := client2.NewImage(t, project.Name)
427427

428-
c, err := client.New(restConfig, "", ns.Name)
428+
c, err := client.New(restConfig, "", project.Name)
429429
if err != nil {
430430
t.Fatal(err)
431431
}
@@ -455,7 +455,7 @@ func TestAppRun(t *testing.T) {
455455
t.Fatal(err)
456456
}
457457

458-
assert.Equal(t, ns.Name, app.Namespace)
458+
assert.Equal(t, project.Name, app.Namespace)
459459
assert.NotEqual(t, "", app.Name)
460460
assert.Equal(t, v1.PublishModeAll, app.Spec.PublishMode)
461461
assert.Equal(t, "volume", app.Spec.Volumes[0].Volume)
@@ -469,11 +469,11 @@ func TestAppRunImageVariations(t *testing.T) {
469469

470470
ctx := helper.GetCTX(t)
471471
kclient := helper.MustReturn(kclient.Default)
472-
ns := helper.TempNamespace(t, kclient)
472+
project := helper.TempProject(t, kclient)
473473

474-
imageID := client2.NewImage(t, ns.Name)
474+
imageID := client2.NewImage(t, project.Name)
475475

476-
c, err := client.New(restConfig, "", ns.Name)
476+
c, err := client.New(restConfig, "", project.Name)
477477
if err != nil {
478478
t.Fatal(err)
479479
}

integration/client/apps/update_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ func TestUpdatePull(t *testing.T) {
1717

1818
ctx := helper.GetCTX(t)
1919
kclient := helper.MustReturn(kclient.Default)
20-
ns := helper.TempNamespace(t, kclient)
20+
project := helper.TempProject(t, kclient)
2121

22-
c, err := client.New(restConfig, "", ns.Name)
22+
c, err := client.New(restConfig, "", project.Name)
2323
if err != nil {
2424
t.Fatal(err)
2525
}
2626

27-
imageID := client2.NewImage(t, ns.Name)
27+
imageID := client2.NewImage(t, project.Name)
2828
err = c.ImageTag(ctx, imageID, "foo")
2929
if err != nil {
3030
t.Fatal(err)
@@ -41,7 +41,7 @@ func TestUpdatePull(t *testing.T) {
4141
assert.NotEmpty(t, app.Status.Namespace)
4242
assert.Equal(t, app.Status.AppImage.ID, imageID)
4343

44-
imageID2 := client2.NewImage2(t, ns.Name)
44+
imageID2 := client2.NewImage2(t, project.Name)
4545
err = c.ImageTag(ctx, imageID2, "foo:latest")
4646
if err != nil {
4747
t.Fatal(err)

integration/client/client_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020

2121
func TestAppsSSA(t *testing.T) {
2222
cfg := helper.StartAPI(t)
23-
c, ns := helper.ClientAndNamespace(t)
23+
c, project := helper.ClientAndProject(t)
2424
ctx := helper.GetCTX(t)
2525

2626
dyn, err := dynamic.NewForConfig(cfg)
@@ -42,7 +42,7 @@ func TestAppsSSA(t *testing.T) {
4242
},
4343
ObjectMeta: metav1.ObjectMeta{
4444
Name: "test",
45-
Namespace: ns.Name,
45+
Namespace: project.Name,
4646
},
4747
Spec: v1.AppInstanceSpec{
4848
Image: image.ID,
@@ -53,7 +53,7 @@ func TestAppsSSA(t *testing.T) {
5353
}
5454

5555
_, err = dyn.Resource(apiv1.SchemeGroupVersion.WithResource("apps")).
56-
Namespace(ns.Name).
56+
Namespace(project.Name).
5757
Patch(ctx, "test", types.ApplyPatchType, appBytes, metav1.PatchOptions{
5858
FieldManager: "unit-test",
5959
})
@@ -73,7 +73,7 @@ func TestFriendlyNameInContainer(t *testing.T) {
7373
helper.StartController(t)
7474
cfg := helper.StartAPI(t)
7575

76-
c, ns := helper.ClientAndNamespace(t)
76+
c, project := helper.ClientAndProject(t)
7777
ctx := helper.GetCTX(t)
7878
client, err := k8sclient.New(cfg)
7979
if err != nil {
@@ -90,7 +90,7 @@ func TestFriendlyNameInContainer(t *testing.T) {
9090
appInstance := &apiv1.App{
9191
ObjectMeta: metav1.ObjectMeta{
9292
GenerateName: "simple-app",
93-
Namespace: ns.Name,
93+
Namespace: project.Name,
9494
Labels: map[string]string{
9595
labels.AcornManaged: "true",
9696
},
@@ -109,7 +109,7 @@ func TestFriendlyNameInContainer(t *testing.T) {
109109
return obj.Status.AppStatus.Containers["default"].ReadyReplicaCount == 1
110110
})
111111

112-
c, err = hclient.New(cfg, "", ns.Name)
112+
c, err = hclient.New(cfg, "", project.Name)
113113
if err != nil {
114114
t.Fatal(err)
115115
}

integration/client/computeclass/computeclass_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import (
1616
func TestCreatingComputeClasses(t *testing.T) {
1717
helper.StartController(t)
1818
cfg := helper.StartAPI(t)
19-
ns := helper.TempNamespace(t, helper.MustReturn(kclient.Default))
19+
project := helper.TempProject(t, helper.MustReturn(kclient.Default))
2020
kclient := helper.MustReturn(kclient.Default)
21-
c, err := client.New(cfg, "", ns.Name)
21+
c, err := client.New(cfg, "", project.Name)
2222
if err != nil {
2323
t.Fatal(err)
2424
}

integration/client/containers/containers_test.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ func TestContainerList(t *testing.T) {
2424
t.Fatal(err)
2525
}
2626
kclient := helper.MustReturn(kclient.Default)
27-
ns := helper.TempNamespace(t, kclient)
27+
project := helper.TempProject(t, kclient)
2828

29-
c, err := client.New(restConfig, "", ns.Name)
29+
c, err := client.New(restConfig, "", project.Name)
3030
if err != nil {
3131
t.Fatal(err)
3232
}
3333

34-
imageID := client2.NewImage(t, ns.Name)
34+
imageID := client2.NewImage(t, project.Name)
3535
app, err := c.AppRun(ctx, imageID, nil)
3636
if err != nil {
3737
t.Fatal(err)
@@ -61,14 +61,14 @@ func TestContainerDelete(t *testing.T) {
6161
t.Fatal(err)
6262
}
6363
kclient := helper.MustReturn(kclient.Default)
64-
ns := helper.TempNamespace(t, kclient)
64+
project := helper.TempProject(t, kclient)
6565

66-
c, err := client.New(restConfig, "", ns.Name)
66+
c, err := client.New(restConfig, "", project.Name)
6767
if err != nil {
6868
t.Fatal(err)
6969
}
7070

71-
imageID := client2.NewImage(t, ns.Name)
71+
imageID := client2.NewImage(t, project.Name)
7272
app, err := c.AppRun(ctx, imageID, nil)
7373
if err != nil {
7474
t.Fatal(err)
@@ -109,14 +109,14 @@ func TestContainerGet(t *testing.T) {
109109
t.Fatal(err)
110110
}
111111
kclient := helper.MustReturn(kclient.Default)
112-
ns := helper.TempNamespace(t, kclient)
112+
project := helper.TempProject(t, kclient)
113113

114-
c, err := client.New(restConfig, "", ns.Name)
114+
c, err := client.New(restConfig, "", project.Name)
115115
if err != nil {
116116
t.Fatal(err)
117117
}
118118

119-
imageID := client2.NewImage(t, ns.Name)
119+
imageID := client2.NewImage(t, project.Name)
120120
app, err := c.AppRun(ctx, imageID, nil)
121121
if err != nil {
122122
t.Fatal(err)
@@ -153,14 +153,14 @@ func TestContainerExec(t *testing.T) {
153153
t.Fatal(err)
154154
}
155155
kclient := helper.MustReturn(kclient.Default)
156-
ns := helper.TempNamespace(t, kclient)
156+
project := helper.TempProject(t, kclient)
157157

158-
c, err := client.New(restConfig, "", ns.Name)
158+
c, err := client.New(restConfig, "", project.Name)
159159
if err != nil {
160160
t.Fatal(err)
161161
}
162162

163-
imageID := client2.NewImage(t, ns.Name)
163+
imageID := client2.NewImage(t, project.Name)
164164
app, err := c.AppRun(ctx, imageID, nil)
165165
if err != nil {
166166
t.Fatal(err)
@@ -207,14 +207,14 @@ func TestContainerDebugExec(t *testing.T) {
207207
t.Fatal(err)
208208
}
209209
kclient := helper.MustReturn(kclient.Default)
210-
ns := helper.TempNamespace(t, kclient)
210+
project := helper.TempProject(t, kclient)
211211

212-
c, err := client.New(restConfig, "", ns.Name)
212+
c, err := client.New(restConfig, "", project.Name)
213213
if err != nil {
214214
t.Fatal(err)
215215
}
216216

217-
imageID := client2.NewImage(t, ns.Name)
217+
imageID := client2.NewImage(t, project.Name)
218218
app, err := c.AppRun(ctx, imageID, nil)
219219
if err != nil {
220220
t.Fatal(err)
@@ -263,14 +263,14 @@ func TestContainerWithSidecarExec(t *testing.T) {
263263
t.Fatal(err)
264264
}
265265
kclient := helper.MustReturn(kclient.Default)
266-
ns := helper.TempNamespace(t, kclient)
266+
project := helper.TempProject(t, kclient)
267267

268-
c, err := client.New(restConfig, "", ns.Name)
268+
c, err := client.New(restConfig, "", project.Name)
269269
if err != nil {
270270
t.Fatal(err)
271271
}
272272

273-
imageID := client2.NewImageWithSidecar(t, ns.Name)
273+
imageID := client2.NewImageWithSidecar(t, project.Name)
274274
app, err := c.AppRun(ctx, imageID, nil)
275275
if err != nil {
276276
t.Fatal(err)

0 commit comments

Comments
 (0)