@microagi/alchemy-gcp 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +88 -0
  3. package/lib/Auth/AuthProvider.d.ts +48 -0
  4. package/lib/Auth/AuthProvider.d.ts.map +1 -0
  5. package/lib/Auth/AuthProvider.js +84 -0
  6. package/lib/Auth/AuthProvider.js.map +1 -0
  7. package/lib/Auth/Credentials.d.ts +28 -0
  8. package/lib/Auth/Credentials.d.ts.map +1 -0
  9. package/lib/Auth/Credentials.js +41 -0
  10. package/lib/Auth/Credentials.js.map +1 -0
  11. package/lib/CloudResourceManager/Project.d.ts +143 -0
  12. package/lib/CloudResourceManager/Project.d.ts.map +1 -0
  13. package/lib/CloudResourceManager/Project.js +272 -0
  14. package/lib/CloudResourceManager/Project.js.map +1 -0
  15. package/lib/CloudResourceManager/index.d.ts +3 -0
  16. package/lib/CloudResourceManager/index.d.ts.map +1 -0
  17. package/lib/CloudResourceManager/index.js +2 -0
  18. package/lib/CloudResourceManager/index.js.map +1 -0
  19. package/lib/Compute/GlobalAddress.d.ts +101 -0
  20. package/lib/Compute/GlobalAddress.d.ts.map +1 -0
  21. package/lib/Compute/GlobalAddress.js +134 -0
  22. package/lib/Compute/GlobalAddress.js.map +1 -0
  23. package/lib/Compute/Network.d.ts +114 -0
  24. package/lib/Compute/Network.d.ts.map +1 -0
  25. package/lib/Compute/Network.js +145 -0
  26. package/lib/Compute/Network.js.map +1 -0
  27. package/lib/Compute/Operations.d.ts +34 -0
  28. package/lib/Compute/Operations.d.ts.map +1 -0
  29. package/lib/Compute/Operations.js +62 -0
  30. package/lib/Compute/Operations.js.map +1 -0
  31. package/lib/Compute/SharedVpcHost.d.ts +44 -0
  32. package/lib/Compute/SharedVpcHost.d.ts.map +1 -0
  33. package/lib/Compute/SharedVpcHost.js +71 -0
  34. package/lib/Compute/SharedVpcHost.js.map +1 -0
  35. package/lib/Compute/SharedVpcServiceProject.d.ts +46 -0
  36. package/lib/Compute/SharedVpcServiceProject.d.ts.map +1 -0
  37. package/lib/Compute/SharedVpcServiceProject.js +96 -0
  38. package/lib/Compute/SharedVpcServiceProject.js.map +1 -0
  39. package/lib/Compute/Subnetwork.d.ts +108 -0
  40. package/lib/Compute/Subnetwork.d.ts.map +1 -0
  41. package/lib/Compute/Subnetwork.js +201 -0
  42. package/lib/Compute/Subnetwork.js.map +1 -0
  43. package/lib/Compute/index.d.ts +6 -0
  44. package/lib/Compute/index.d.ts.map +1 -0
  45. package/lib/Compute/index.js +6 -0
  46. package/lib/Compute/index.js.map +1 -0
  47. package/lib/Container/Cluster.d.ts +216 -0
  48. package/lib/Container/Cluster.d.ts.map +1 -0
  49. package/lib/Container/Cluster.js +326 -0
  50. package/lib/Container/Cluster.js.map +1 -0
  51. package/lib/Container/NodePool.d.ts +214 -0
  52. package/lib/Container/NodePool.d.ts.map +1 -0
  53. package/lib/Container/NodePool.js +344 -0
  54. package/lib/Container/NodePool.js.map +1 -0
  55. package/lib/Container/Operations.d.ts +50 -0
  56. package/lib/Container/Operations.d.ts.map +1 -0
  57. package/lib/Container/Operations.js +51 -0
  58. package/lib/Container/Operations.js.map +1 -0
  59. package/lib/Container/index.d.ts +5 -0
  60. package/lib/Container/index.d.ts.map +1 -0
  61. package/lib/Container/index.js +3 -0
  62. package/lib/Container/index.js.map +1 -0
  63. package/lib/Parallelstore/Instance.d.ts +119 -0
  64. package/lib/Parallelstore/Instance.d.ts.map +1 -0
  65. package/lib/Parallelstore/Instance.js +180 -0
  66. package/lib/Parallelstore/Instance.js.map +1 -0
  67. package/lib/Parallelstore/index.d.ts +2 -0
  68. package/lib/Parallelstore/index.d.ts.map +1 -0
  69. package/lib/Parallelstore/index.js +2 -0
  70. package/lib/Parallelstore/index.js.map +1 -0
  71. package/lib/Providers.d.ts +24 -0
  72. package/lib/Providers.d.ts.map +1 -0
  73. package/lib/Providers.js +51 -0
  74. package/lib/Providers.js.map +1 -0
  75. package/lib/ServiceNetworking/PsaConnection.d.ts +84 -0
  76. package/lib/ServiceNetworking/PsaConnection.d.ts.map +1 -0
  77. package/lib/ServiceNetworking/PsaConnection.js +130 -0
  78. package/lib/ServiceNetworking/PsaConnection.js.map +1 -0
  79. package/lib/ServiceNetworking/index.d.ts +2 -0
  80. package/lib/ServiceNetworking/index.d.ts.map +1 -0
  81. package/lib/ServiceNetworking/index.js +2 -0
  82. package/lib/ServiceNetworking/index.js.map +1 -0
  83. package/lib/ServiceUsage/ApiEnable.d.ts +78 -0
  84. package/lib/ServiceUsage/ApiEnable.d.ts.map +1 -0
  85. package/lib/ServiceUsage/ApiEnable.js +132 -0
  86. package/lib/ServiceUsage/ApiEnable.js.map +1 -0
  87. package/lib/ServiceUsage/index.d.ts +3 -0
  88. package/lib/ServiceUsage/index.d.ts.map +1 -0
  89. package/lib/ServiceUsage/index.js +2 -0
  90. package/lib/ServiceUsage/index.js.map +1 -0
  91. package/lib/Tags.d.ts +57 -0
  92. package/lib/Tags.d.ts.map +1 -0
  93. package/lib/Tags.js +106 -0
  94. package/lib/Tags.js.map +1 -0
  95. package/lib/index.d.ts +11 -0
  96. package/lib/index.d.ts.map +1 -0
  97. package/lib/index.js +10 -0
  98. package/lib/index.js.map +1 -0
  99. package/package.json +70 -0
  100. package/src/Auth/AuthProvider.ts +180 -0
  101. package/src/Auth/Credentials.ts +69 -0
  102. package/src/CloudResourceManager/Project.ts +517 -0
  103. package/src/CloudResourceManager/index.ts +2 -0
  104. package/src/Compute/GlobalAddress.ts +283 -0
  105. package/src/Compute/Network.ts +306 -0
  106. package/src/Compute/Operations.ts +108 -0
  107. package/src/Compute/SharedVpcHost.ts +141 -0
  108. package/src/Compute/SharedVpcServiceProject.ts +185 -0
  109. package/src/Compute/Subnetwork.ts +375 -0
  110. package/src/Compute/index.ts +5 -0
  111. package/src/Container/Cluster.ts +599 -0
  112. package/src/Container/NodePool.ts +620 -0
  113. package/src/Container/Operations.ts +88 -0
  114. package/src/Container/index.ts +8 -0
  115. package/src/Parallelstore/Instance.ts +371 -0
  116. package/src/Parallelstore/index.ts +1 -0
  117. package/src/Providers.ts +84 -0
  118. package/src/ServiceNetworking/PsaConnection.ts +269 -0
  119. package/src/ServiceNetworking/index.ts +1 -0
  120. package/src/ServiceUsage/ApiEnable.ts +267 -0
  121. package/src/ServiceUsage/index.ts +2 -0
  122. package/src/Tags.ts +130 -0
  123. package/src/index.ts +16 -0
@@ -0,0 +1,96 @@
1
+ import * as compute from "@distilled.cloud/gcp/compute-v1";
2
+ import { Resource } from "alchemy";
3
+ import { isResolved } from "alchemy/Diff";
4
+ import * as Provider from "alchemy/Provider";
5
+ import * as Effect from "effect/Effect";
6
+ import { makeAwaitGlobalOperation } from "./Operations.js";
7
+ export const SharedVpcServiceProject = Resource("GCP.SharedVpcServiceProject");
8
+ export const SharedVpcServiceProjectProvider = () => Provider.effect(SharedVpcServiceProject, Effect.gen(function* () {
9
+ const getXpnHostProjects = yield* compute.getXpnHostProjects;
10
+ const enableXpnResource = yield* compute.enableXpnResourceProjects;
11
+ const disableXpnResource = yield* compute.disableXpnResourceProjects;
12
+ const getGlobalOperations = yield* compute.getGlobalOperations;
13
+ const awaitOp = makeAwaitGlobalOperation(getGlobalOperations);
14
+ // Observed-host name from a service project's perspective.
15
+ // Returns the host project's `name`/`projectId` — or undefined
16
+ // if the service project isn't attached anywhere. GCP returns
17
+ // 404 in that case; some SDK paths return a `Project` with
18
+ // empty fields instead, so we coalesce both.
19
+ const observeHost = (serviceProject) => getXpnHostProjects({ project: serviceProject }).pipe(Effect.map((p) => p.name ?? p.id ?? undefined), Effect.catchTag("NotFound", () => Effect.succeed(undefined)), Effect.catchTag("Forbidden", () => Effect.succeed(undefined)));
20
+ const isAttached = Effect.fn(function* (hostProject, serviceProject) {
21
+ const observed = yield* observeHost(serviceProject);
22
+ if (!observed)
23
+ return false;
24
+ // Host references can come back as the bare project ID, the
25
+ // numeric ID, or `projects/{id}` — match suffix to avoid
26
+ // missing on format drift.
27
+ return (observed === hostProject ||
28
+ observed.endsWith(`/${hostProject}`) ||
29
+ observed.endsWith(`projects/${hostProject}`));
30
+ });
31
+ const enable = Effect.fn(function* (args) {
32
+ const op = yield* enableXpnResource({
33
+ project: args.hostProject,
34
+ body: {
35
+ xpnResource: { type: "PROJECT", id: args.serviceProject },
36
+ },
37
+ }).pipe(Effect.catchTag("Conflict", () => Effect.succeed(undefined)));
38
+ if (op?.name)
39
+ yield* awaitOp(args.hostProject, op.name, args.session);
40
+ });
41
+ return {
42
+ stables: ["hostProject", "serviceProject"],
43
+ diff: Effect.fn(function* ({ news, olds = {} }) {
44
+ if (!isResolved(news))
45
+ return undefined;
46
+ if ((olds.hostProject !== undefined &&
47
+ olds.hostProject !== news.hostProject) ||
48
+ (olds.serviceProject !== undefined &&
49
+ olds.serviceProject !== news.serviceProject)) {
50
+ return { action: "replace" };
51
+ }
52
+ return undefined;
53
+ }),
54
+ reconcile: Effect.fn(function* ({ news, session }) {
55
+ const attached = yield* isAttached(news.hostProject, news.serviceProject);
56
+ if (!attached) {
57
+ yield* enable({
58
+ hostProject: news.hostProject,
59
+ serviceProject: news.serviceProject,
60
+ session,
61
+ });
62
+ }
63
+ return {
64
+ hostProject: news.hostProject,
65
+ serviceProject: news.serviceProject,
66
+ };
67
+ }),
68
+ delete: Effect.fn(function* ({ output, session }) {
69
+ yield* disableXpnResource({
70
+ project: output.hostProject,
71
+ body: {
72
+ xpnResource: { type: "PROJECT", id: output.serviceProject },
73
+ },
74
+ }).pipe(Effect.flatMap((op) => op.name
75
+ ? awaitOp(output.hostProject, op.name, session)
76
+ : Effect.succeed(op)), Effect.catchTag("NotFound", () => Effect.void),
77
+ // `BadRequest` covers "not attached to this host" (idempotent
78
+ // detach); other 400s (resources still using shared subnets)
79
+ // propagate so the user sees the real precondition.
80
+ Effect.catchTag("BadRequest", (e) => /not.*service.*project|not.*xpn|UNSPECIFIED_XPN_PROJECT_STATUS|not.*attached/i.test(e.message ?? "")
81
+ ? Effect.void
82
+ : Effect.fail(e)));
83
+ }),
84
+ read: Effect.fn(function* ({ output, olds }) {
85
+ const hostProject = output?.hostProject ?? olds?.hostProject;
86
+ const serviceProject = output?.serviceProject ?? olds?.serviceProject;
87
+ if (!hostProject || !serviceProject)
88
+ return undefined;
89
+ const attached = yield* isAttached(hostProject, serviceProject);
90
+ if (!attached)
91
+ return undefined;
92
+ return { hostProject, serviceProject };
93
+ }),
94
+ };
95
+ }));
96
+ //# sourceMappingURL=SharedVpcServiceProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedVpcServiceProject.js","sourceRoot":"","sources":["../../src/Compute/SharedVpcServiceProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import { Resource } from "alchemy";
2
+ import * as Provider from "alchemy/Provider";
3
+ import type * as GCP from "../Providers.ts";
4
+ export type SubnetworkSecondaryRange = {
5
+ /** Name used by alias-IP ranges on VMs in this subnet. */
6
+ rangeName: string;
7
+ /** Secondary CIDR. Must be unique and non-overlapping. */
8
+ ipCidrRange: string;
9
+ };
10
+ /**
11
+ * A regional VPC subnet. Carries a primary CIDR plus zero or more
12
+ * named secondary ranges (used by GKE VPC-native pods/services).
13
+ *
14
+ * Like Networks, Subnetworks have no `labels` field, so adoption uses
15
+ * the alchemy marker embedded in `description`. Description is set on
16
+ * create and treated as immutable.
17
+ *
18
+ * @section Creating a subnet
19
+ * @example GKE-ready subnet with pods + services secondary ranges
20
+ * ```typescript
21
+ * const sub = yield* GCP.Subnetwork("ResearchSubnet", {
22
+ * project: hostProject.projectId,
23
+ * region: "us-central1",
24
+ * network: vpc.selfLink,
25
+ * ipCidrRange: "10.0.0.0/20",
26
+ * secondaryIpRanges: [
27
+ * { rangeName: "pods", ipCidrRange: "10.4.0.0/14" },
28
+ * { rangeName: "services", ipCidrRange: "10.8.0.0/20" },
29
+ * ],
30
+ * privateIpGoogleAccess: true,
31
+ * });
32
+ * ```
33
+ */
34
+ export type SubnetworkProps = {
35
+ /** GCP project ID hosting the subnet. Immutable — replace if changed. */
36
+ project: string;
37
+ /**
38
+ * GCP region. Subnets are regional — a different region requires
39
+ * replace.
40
+ */
41
+ region: string;
42
+ /**
43
+ * Subnet name. Defaults to `createPhysicalName({ id, lowercase: true,
44
+ * maxLength: 63 })`. Immutable — replace if changed.
45
+ */
46
+ name?: string;
47
+ /**
48
+ * URL or short name of the parent VPC. Pass `network.selfLink` from a
49
+ * `GCP.Network` to make alchemy sequence the subnet after the VPC.
50
+ * Immutable — replace.
51
+ */
52
+ network: string;
53
+ /** User-visible description. Stored after the alchemy marker. Immutable. */
54
+ description?: string;
55
+ /**
56
+ * Primary CIDR for the subnet. Mutable via `expandIpCidrRange` *only*
57
+ * to a strictly-larger range; we surface that as a sync (treats
58
+ * shrinks as "no-op"). For changes that aren't an expansion, this is
59
+ * effectively replace-only.
60
+ */
61
+ ipCidrRange: string;
62
+ /**
63
+ * Secondary CIDR ranges used by alias IPs (e.g. GKE pods/services
64
+ * ranges). Mutable via `patchSubnetworks`.
65
+ */
66
+ secondaryIpRanges?: ReadonlyArray<SubnetworkSecondaryRange>;
67
+ /**
68
+ * Whether VMs in this subnet can reach Google services without an
69
+ * external IP. Defaults to `false`. Mutable via `patchSubnetworks`.
70
+ */
71
+ privateIpGoogleAccess?: boolean;
72
+ /**
73
+ * Stack type for the subnet. Defaults to `IPV4_ONLY`.
74
+ */
75
+ stackType?: "IPV4_ONLY" | "IPV4_IPV6" | "IPV6_ONLY";
76
+ };
77
+ export type SubnetworkAttributes = {
78
+ /** Subnet name. */
79
+ name: string;
80
+ /** GCP project ID, threaded through from props for delete/read. */
81
+ project: string;
82
+ /** GCP region, threaded through from props for delete/read. */
83
+ region: string;
84
+ /** Server-defined URL. */
85
+ selfLink: string;
86
+ /** Server-assigned numeric id. */
87
+ id: string;
88
+ /** URL of the parent VPC. */
89
+ network: string;
90
+ /** User-visible description (with the alchemy marker stripped). */
91
+ description: string | undefined;
92
+ /** Primary CIDR. */
93
+ ipCidrRange: string;
94
+ /** Secondary ranges currently set. */
95
+ secondaryIpRanges: ReadonlyArray<SubnetworkSecondaryRange>;
96
+ /** Private Google Access setting. */
97
+ privateIpGoogleAccess: boolean;
98
+ /** Stack type. */
99
+ stackType: string | undefined;
100
+ /** Lifecycle state. */
101
+ state: string | undefined;
102
+ /** Default IPv4 gateway in the primary range. */
103
+ gatewayAddress: string | undefined;
104
+ };
105
+ export type Subnetwork = Resource<"GCP.Subnetwork", SubnetworkProps, SubnetworkAttributes, never, GCP.Providers>;
106
+ export declare const Subnetwork: import("alchemy").ResourceClass<Subnetwork>;
107
+ export declare const SubnetworkProvider: () => import("effect/Layer").Layer<Provider.Provider<Subnetwork>, never, import("effect/unstable/http/HttpClient").HttpClient | import("alchemy").Stage | import("alchemy").Stack | import("@distilled.cloud/gcp").Credentials>;
108
+ //# sourceMappingURL=Subnetwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subnetwork.d.ts","sourceRoot":"","sources":["../../src/Compute/Subnetwork.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAO7C,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAG5C,MAAM,MAAM,wBAAwB,GAAG;IACrC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC5D;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;CACrD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,iBAAiB,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC3D,qCAAqC;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB;IAClB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,uBAAuB;IACvB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,iDAAiD;IACjD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAC/B,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,GAAG,CAAC,SAAS,CACd,CAAC;AACF,eAAO,MAAM,UAAU,6CAAyC,CAAC;AA6BjE,eAAO,MAAM,kBAAkB,iOA0N5B,CAAC"}
@@ -0,0 +1,201 @@
1
+ import * as compute from "@distilled.cloud/gcp/compute-v1";
2
+ import { Resource } from "alchemy";
3
+ import { Unowned } from "alchemy/AdoptPolicy";
4
+ import { deepEqual, isResolved, somePropsAreDifferent } from "alchemy/Diff";
5
+ import { createPhysicalName } from "alchemy/PhysicalName";
6
+ import * as Provider from "alchemy/Provider";
7
+ import * as Effect from "effect/Effect";
8
+ import { descriptionHasAlchemyMarker, gcpAlchemyDescription, stripAlchemyMarker, } from "../Tags.js";
9
+ import { makeAwaitRegionOperation } from "./Operations.js";
10
+ export const Subnetwork = Resource("GCP.Subnetwork");
11
+ const toSubnetworkAttributes = (s, parent) => ({
12
+ name: s.name ?? "",
13
+ project: parent.project,
14
+ region: parent.region,
15
+ selfLink: s.selfLink ?? "",
16
+ id: s.id ?? "",
17
+ network: s.network ?? "",
18
+ description: stripAlchemyMarker(s.description),
19
+ ipCidrRange: s.ipCidrRange ?? "",
20
+ secondaryIpRanges: (s.secondaryIpRanges ?? []).map((r) => ({
21
+ rangeName: r.rangeName ?? "",
22
+ ipCidrRange: r.ipCidrRange ?? "",
23
+ })),
24
+ privateIpGoogleAccess: s.privateIpGoogleAccess ?? false,
25
+ stackType: s.stackType,
26
+ state: s.state,
27
+ gatewayAddress: s.gatewayAddress,
28
+ });
29
+ const sortedSecondaryRanges = (rs) => [...(rs ?? [])].sort((a, b) => a.rangeName.localeCompare(b.rangeName));
30
+ export const SubnetworkProvider = () => Provider.effect(Subnetwork, Effect.gen(function* () {
31
+ const getSubnetworks = yield* compute.getSubnetworks;
32
+ const insertSubnetworks = yield* compute.insertSubnetworks;
33
+ const patchSubnetworks = yield* compute.patchSubnetworks;
34
+ const deleteSubnetworks = yield* compute.deleteSubnetworks;
35
+ const expandIpCidrRange = yield* compute.expandIpCidrRangeSubnetworks;
36
+ const getRegionOperations = yield* compute.getRegionOperations;
37
+ const awaitOp = makeAwaitRegionOperation(getRegionOperations);
38
+ const observe = (project, region, name) => getSubnetworks({ project, region, subnetwork: name }).pipe(Effect.catchTag("NotFound", () => Effect.succeed(undefined)), Effect.catchTag("Forbidden", () => Effect.succeed(undefined)));
39
+ // patchSubnetworks requires an up-to-date `fingerprint` for
40
+ // optimistic concurrency control. Re-read just before patching to
41
+ // minimize the chance of `412 conditionNotMet`.
42
+ const patchAspects = Effect.fn(function* (args) {
43
+ const body = {};
44
+ const obsRanges = sortedSecondaryRanges((args.observed.secondaryIpRanges ?? []).map((r) => ({
45
+ rangeName: r.rangeName ?? "",
46
+ ipCidrRange: r.ipCidrRange ?? "",
47
+ })));
48
+ const desiredRanges = sortedSecondaryRanges(args.news.secondaryIpRanges);
49
+ if (!deepEqual(obsRanges, desiredRanges)) {
50
+ body.secondaryIpRanges = desiredRanges;
51
+ }
52
+ if (args.news.privateIpGoogleAccess !== undefined &&
53
+ (args.observed.privateIpGoogleAccess ?? false) !==
54
+ args.news.privateIpGoogleAccess) {
55
+ body.privateIpGoogleAccess = args.news.privateIpGoogleAccess;
56
+ }
57
+ if (args.news.stackType !== undefined &&
58
+ args.observed.stackType !== args.news.stackType) {
59
+ body.stackType = args.news.stackType;
60
+ }
61
+ if (Object.keys(body).length === 0)
62
+ return;
63
+ body.fingerprint = args.observed.fingerprint;
64
+ const op = yield* patchSubnetworks({
65
+ project: args.project,
66
+ region: args.region,
67
+ subnetwork: args.name,
68
+ body,
69
+ });
70
+ if (op.name)
71
+ yield* awaitOp(args.project, args.region, op.name, args.session);
72
+ });
73
+ // Primary CIDR can only be *expanded*. We treat shrinks as no-ops
74
+ // (the diff path doesn't trigger replace on ipCidrRange to keep
75
+ // adoption flexible — if the user passes a smaller range, the
76
+ // observed range stays).
77
+ const expandPrimary = Effect.fn(function* (args) {
78
+ if (!args.observed.ipCidrRange)
79
+ return;
80
+ if (args.observed.ipCidrRange === args.desired)
81
+ return;
82
+ // Cheap guard: only attempt expand if the desired range is
83
+ // syntactically different. The API will reject shrinks/jumps;
84
+ // surface that error to the user.
85
+ const op = yield* expandIpCidrRange({
86
+ project: args.project,
87
+ region: args.region,
88
+ subnetwork: args.name,
89
+ body: { ipCidrRange: args.desired },
90
+ });
91
+ if (op.name)
92
+ yield* awaitOp(args.project, args.region, op.name, args.session);
93
+ });
94
+ return {
95
+ stables: ["name", "project", "region", "selfLink", "id"],
96
+ diff: Effect.fn(function* ({ news, olds = {} }) {
97
+ if (!isResolved(news))
98
+ return undefined;
99
+ if (somePropsAreDifferent(olds, news, [
100
+ "project",
101
+ "region",
102
+ "name",
103
+ "network",
104
+ ])) {
105
+ return { action: "replace" };
106
+ }
107
+ return undefined;
108
+ }),
109
+ reconcile: Effect.fn(function* ({ id, news, session }) {
110
+ const desiredName = news.name ??
111
+ (yield* createPhysicalName({ id, maxLength: 63 })).toLowerCase();
112
+ const desiredDescription = yield* gcpAlchemyDescription(id, news.description);
113
+ let observed = yield* observe(news.project, news.region, desiredName);
114
+ if (!observed) {
115
+ const body = {
116
+ name: desiredName,
117
+ description: desiredDescription,
118
+ network: news.network,
119
+ ipCidrRange: news.ipCidrRange,
120
+ ...(news.privateIpGoogleAccess !== undefined
121
+ ? { privateIpGoogleAccess: news.privateIpGoogleAccess }
122
+ : {}),
123
+ ...(news.stackType ? { stackType: news.stackType } : {}),
124
+ ...(news.secondaryIpRanges
125
+ ? {
126
+ secondaryIpRanges: news.secondaryIpRanges.map((r) => ({
127
+ rangeName: r.rangeName,
128
+ ipCidrRange: r.ipCidrRange,
129
+ })),
130
+ }
131
+ : {}),
132
+ };
133
+ const op = yield* insertSubnetworks({
134
+ project: news.project,
135
+ region: news.region,
136
+ body,
137
+ }).pipe(Effect.catchTag("Conflict", () => Effect.succeed(undefined)));
138
+ if (op?.name)
139
+ yield* awaitOp(news.project, news.region, op.name, session);
140
+ observed = yield* getSubnetworks({
141
+ project: news.project,
142
+ region: news.region,
143
+ subnetwork: desiredName,
144
+ });
145
+ }
146
+ // Sync mutables: secondary ranges, privateIpGoogleAccess,
147
+ // stackType (via patch), then primary range (via expand).
148
+ yield* patchAspects({
149
+ project: news.project,
150
+ region: news.region,
151
+ name: desiredName,
152
+ observed,
153
+ news,
154
+ session,
155
+ });
156
+ yield* expandPrimary({
157
+ project: news.project,
158
+ region: news.region,
159
+ name: desiredName,
160
+ observed,
161
+ desired: news.ipCidrRange,
162
+ session,
163
+ });
164
+ const final = yield* getSubnetworks({
165
+ project: news.project,
166
+ region: news.region,
167
+ subnetwork: desiredName,
168
+ });
169
+ return toSubnetworkAttributes(final, {
170
+ project: news.project,
171
+ region: news.region,
172
+ });
173
+ }),
174
+ delete: Effect.fn(function* ({ output, session }) {
175
+ yield* deleteSubnetworks({
176
+ project: output.project,
177
+ region: output.region,
178
+ subnetwork: output.name,
179
+ }).pipe(Effect.flatMap((op) => op.name
180
+ ? awaitOp(output.project, output.region, op.name, session)
181
+ : Effect.succeed(op)), Effect.catchTag("NotFound", () => Effect.void));
182
+ }),
183
+ read: Effect.fn(function* ({ id, output, olds }) {
184
+ const project = output?.project ?? olds?.project;
185
+ const region = output?.region ?? olds?.region;
186
+ if (!project || !region)
187
+ return undefined;
188
+ const name = output?.name ??
189
+ olds?.name ??
190
+ (yield* createPhysicalName({ id, maxLength: 63 })).toLowerCase();
191
+ const observed = yield* observe(project, region, name);
192
+ if (!observed)
193
+ return undefined;
194
+ const attrs = toSubnetworkAttributes(observed, { project, region });
195
+ return (yield* descriptionHasAlchemyMarker(id, observed.description))
196
+ ? attrs
197
+ : Unowned(attrs);
198
+ }),
199
+ };
200
+ }));
201
+ //# sourceMappingURL=Subnetwork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subnetwork.js","sourceRoot":"","sources":["../../src/Compute/Subnetwork.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./GlobalAddress.ts";
2
+ export * from "./Network.ts";
3
+ export * from "./SharedVpcHost.ts";
4
+ export * from "./SharedVpcServiceProject.ts";
5
+ export * from "./Subnetwork.ts";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Compute/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./GlobalAddress.js";
2
+ export * from "./Network.js";
3
+ export * from "./SharedVpcHost.js";
4
+ export * from "./SharedVpcServiceProject.js";
5
+ export * from "./Subnetwork.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Compute/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC"}