Skip to content

Commit 38db4ed

Browse files
authored
feat: add provisioning to versions upload and reprovision on bucket jurisdiction changes (#7889)
1 parent ad58eaa commit 38db4ed

File tree

14 files changed

+657
-365
lines changed

14 files changed

+657
-365
lines changed

.changeset/neat-sloths-reply.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"wrangler": patch
3+
---
4+
5+
feat: add experimental resource auto-provisioning to versions upload

packages/wrangler/e2e/provision.test.ts

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const workerName = generateResourceName();
2020
describe("provisioning", { timeout: TIMEOUT }, () => {
2121
let deployedUrl: string;
2222
let kvId: string;
23+
let kvId2: string;
2324
let d1Id: string;
2425
const helper = new WranglerE2ETestHelper();
2526

@@ -81,16 +82,13 @@ describe("provisioning", { timeout: TIMEOUT }, () => {
8182
- R2
8283
Provisioning KV (KV Namespace)...
8384
🌀 Creating new KV Namespace "tmp-e2e-worker-00000000-0000-0000-0000-000000000000-kv"...
84-
✨ KV provisioned with tmp-e2e-worker-00000000-0000-0000-0000-000000000000-kv
85-
--------------------------------------
85+
✨ KV provisioned 🎉
8686
Provisioning D1 (D1 Database)...
8787
🌀 Creating new D1 Database "tmp-e2e-worker-00000000-0000-0000-0000-000000000000-d1"...
88-
✨ D1 provisioned with tmp-e2e-worker-00000000-0000-0000-0000-000000000000-d1
89-
--------------------------------------
88+
✨ D1 provisioned 🎉
9089
Provisioning R2 (R2 Bucket)...
9190
🌀 Creating new R2 Bucket "tmp-e2e-worker-00000000-0000-0000-0000-000000000000-r2"...
92-
✨ R2 provisioned with tmp-e2e-worker-00000000-0000-0000-0000-000000000000-r2
93-
--------------------------------------
91+
✨ R2 provisioned 🎉
9492
🎉 All resources provisioned, continuing with deployment...
9593
Your worker has access to the following bindings:
9694
- KV Namespaces:
@@ -157,6 +155,52 @@ describe("provisioning", { timeout: TIMEOUT }, () => {
157155
expect(text).toMatchInlineSnapshot('"Hello World!"');
158156
});
159157

158+
it("can inherit and provision resources on version upload", async () => {
159+
await helper.seed({
160+
"wrangler.toml": dedent`
161+
name = "${workerName}"
162+
main = "src/index.ts"
163+
compatibility_date = "2023-01-01"
164+
165+
[[r2_buckets]]
166+
binding = "R2"
167+
168+
[[kv_namespaces]]
169+
binding = "KV2"
170+
`,
171+
});
172+
const worker = helper.runLongLived(
173+
`wrangler versions upload --x-provision`
174+
);
175+
await worker.exitCode;
176+
const output = await worker.output;
177+
expect(normalize(output)).toMatchInlineSnapshot(`
178+
"Total Upload: xx KiB / gzip: xx KiB
179+
The following bindings need to be provisioned:
180+
- KV Namespaces:
181+
- KV2
182+
Provisioning KV2 (KV Namespace)...
183+
🌀 Creating new KV Namespace "tmp-e2e-worker-00000000-0000-0000-0000-000000000000-kv2"...
184+
✨ KV2 provisioned 🎉
185+
🎉 All resources provisioned, continuing with deployment...
186+
Worker Startup Time: (TIMINGS)
187+
Your worker has access to the following bindings:
188+
- KV Namespaces:
189+
- KV2: 00000000000000000000000000000000
190+
- R2 Buckets:
191+
- R2
192+
Uploaded tmp-e2e-worker-00000000-0000-0000-0000-000000000000 (TIMINGS)
193+
Worker Version ID: 00000000-0000-0000-0000-000000000000
194+
Version Preview URL: https://tmp-e2e-worker-PREVIEW-URL.SUBDOMAIN.workers.dev
195+
To deploy this version to production traffic use the command wrangler versions deploy
196+
Changes to non-versioned settings (config properties 'logpush' or 'tail_consumers') take effect after your next deployment using the command wrangler versions deploy
197+
Changes to triggers (routes, custom domains, cron schedules, etc) must be applied with the command wrangler triggers deploy"
198+
`);
199+
const kvMatch = output.match(/- KV2: (?<kv>[0-9a-f]{32})/);
200+
assert(kvMatch?.groups);
201+
kvId2 = kvMatch.groups.kv;
202+
});
203+
160204
afterAll(async () => {
161205
// we need to add d1 back into the config because otherwise wrangler will
162206
// call the api for all 5000 or so db's the e2e test account has
@@ -188,6 +232,9 @@ describe("provisioning", { timeout: TIMEOUT }, () => {
188232
output = await helper.run(
189233
`wrangler kv namespace delete --namespace-id ${kvId}`
190234
);
235+
output = await helper.run(
236+
`wrangler kv namespace delete --namespace-id ${kvId2}`
237+
);
191238
expect(output.stdout).toContain(`Deleted KV namespace`);
192239
}, TIMEOUT);
193240
});

0 commit comments

Comments
 (0)