@highstate/common 0.15.0 → 0.17.0
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.
- package/dist/{chunk-WFWXDYUX.js → chunk-X5BK6JSN.js} +877 -194
- package/dist/chunk-X5BK6JSN.js.map +1 -0
- package/dist/highstate.manifest.json +12 -2
- package/dist/index.js +1 -1
- package/dist/units/databases/etcd-patch/index.js +20 -0
- package/dist/units/databases/etcd-patch/index.js.map +1 -0
- package/dist/units/databases/existing-etcd/index.js +14 -0
- package/dist/units/databases/existing-etcd/index.js.map +1 -0
- package/dist/units/databases/existing-mariadb/index.js +2 -2
- package/dist/units/databases/existing-mariadb/index.js.map +1 -1
- package/dist/units/databases/existing-mongodb/index.js +2 -2
- package/dist/units/databases/existing-mongodb/index.js.map +1 -1
- package/dist/units/databases/existing-postgresql/index.js +2 -2
- package/dist/units/databases/existing-postgresql/index.js.map +1 -1
- package/dist/units/databases/existing-redis/index.js +2 -2
- package/dist/units/databases/existing-redis/index.js.map +1 -1
- package/dist/units/databases/existing-s3/index.js +18 -0
- package/dist/units/databases/existing-s3/index.js.map +1 -0
- package/dist/units/databases/mariadb-patch/index.js +24 -0
- package/dist/units/databases/mariadb-patch/index.js.map +1 -0
- package/dist/units/databases/mongodb-patch/index.js +24 -0
- package/dist/units/databases/mongodb-patch/index.js.map +1 -0
- package/dist/units/databases/postgresql-patch/index.js +24 -0
- package/dist/units/databases/postgresql-patch/index.js.map +1 -0
- package/dist/units/databases/redis-patch/index.js +27 -0
- package/dist/units/databases/redis-patch/index.js.map +1 -0
- package/dist/units/databases/s3-patch/index.js +25 -0
- package/dist/units/databases/s3-patch/index.js.map +1 -0
- package/dist/units/dns/record-set/index.js +14 -20
- package/dist/units/dns/record-set/index.js.map +1 -1
- package/dist/units/existing-server/index.js +3 -4
- package/dist/units/existing-server/index.js.map +1 -1
- package/dist/units/network/address-space/index.js +20 -0
- package/dist/units/network/address-space/index.js.map +1 -0
- package/dist/units/network/endpoint-filter/index.js +15 -0
- package/dist/units/network/endpoint-filter/index.js.map +1 -0
- package/dist/units/network/l3-endpoint/index.js +2 -2
- package/dist/units/network/l3-endpoint/index.js.map +1 -1
- package/dist/units/network/l4-endpoint/index.js +2 -2
- package/dist/units/network/l4-endpoint/index.js.map +1 -1
- package/dist/units/network/l7-endpoint/index.js +12 -0
- package/dist/units/network/l7-endpoint/index.js.map +1 -0
- package/dist/units/script/index.js +1 -1
- package/dist/units/server-patch/index.js +9 -12
- package/dist/units/server-patch/index.js.map +1 -1
- package/dist/units/ssh/key-pair/index.js +1 -1
- package/package.json +64 -10
- package/src/shared/command.ts +1 -1
- package/src/shared/dns.ts +11 -93
- package/src/shared/files.ts +3 -3
- package/src/shared/impl-ref.ts +4 -0
- package/src/shared/index.ts +2 -0
- package/src/shared/network/address-space.spec.ts +114 -0
- package/src/shared/network/address-space.ts +364 -0
- package/src/shared/network/address.spec.ts +109 -0
- package/src/shared/network/address.ts +119 -0
- package/src/shared/network/endpoints.spec.ts +249 -0
- package/src/shared/network/endpoints.ts +608 -0
- package/src/shared/network/index.ts +4 -0
- package/src/shared/network/ip.ts +236 -0
- package/src/shared/network/subnet.spec.ts +62 -0
- package/src/shared/network/subnet.ts +137 -0
- package/src/shared/ssh.ts +1 -1
- package/src/shared/tls.ts +21 -5
- package/src/shared/utils.ts +93 -0
- package/src/units/databases/etcd-patch/index.ts +23 -0
- package/src/units/databases/existing-etcd/index.ts +11 -0
- package/src/units/databases/existing-mariadb/index.ts +1 -1
- package/src/units/databases/existing-mongodb/index.ts +1 -1
- package/src/units/databases/existing-postgresql/index.ts +1 -1
- package/src/units/databases/existing-redis/index.ts +1 -1
- package/src/units/databases/existing-s3/index.ts +1 -1
- package/src/units/databases/mariadb-patch/index.ts +27 -0
- package/src/units/databases/mongodb-patch/index.ts +27 -0
- package/src/units/databases/postgresql-patch/index.ts +27 -0
- package/src/units/databases/redis-patch/index.ts +32 -0
- package/src/units/databases/s3-patch/index.ts +28 -0
- package/src/units/dns/record-set/index.ts +15 -20
- package/src/units/existing-server/index.ts +3 -4
- package/src/units/network/address-space/index.ts +20 -0
- package/src/units/network/endpoint-filter/index.ts +5 -5
- package/src/units/network/l3-endpoint/index.ts +2 -2
- package/src/units/network/l4-endpoint/index.ts +2 -2
- package/src/units/network/l7-endpoint/index.ts +2 -2
- package/src/units/remote-file/index.ts +12 -5
- package/src/units/server-patch/index.ts +10 -13
- package/dist/chunk-WFWXDYUX.js.map +0 -1
- package/dist/units/server-dns/index.js +0 -26
- package/dist/units/server-dns/index.js.map +0 -1
- package/src/shared/network.ts +0 -413
- package/src/units/server-dns/index.ts +0 -26
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { databases } from "@highstate/library"
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { l4EndpointToString, parseEndpoints } from "../../../shared"
|
|
4
|
+
|
|
5
|
+
const { args, inputs, outputs } = forUnit(databases.mongodbPatch)
|
|
6
|
+
|
|
7
|
+
const mongodb = await toPromise(inputs.mongodb)
|
|
8
|
+
const resolvedInputEndpoints = await toPromise(inputs.endpoints ?? [])
|
|
9
|
+
|
|
10
|
+
const shouldOverrideEndpoints =
|
|
11
|
+
args.endpoints.length > 0 || resolvedInputEndpoints.some(endpoint => endpoint != null)
|
|
12
|
+
const endpoints = shouldOverrideEndpoints
|
|
13
|
+
? await parseEndpoints(args.endpoints, inputs.endpoints, 4)
|
|
14
|
+
: mongodb.endpoints
|
|
15
|
+
|
|
16
|
+
export default outputs({
|
|
17
|
+
mongodb: {
|
|
18
|
+
...mongodb,
|
|
19
|
+
endpoints,
|
|
20
|
+
username: args.username ?? mongodb.username,
|
|
21
|
+
database: args.database ?? mongodb.database,
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
$statusFields: {
|
|
25
|
+
endpoints: endpoints.map(l4EndpointToString),
|
|
26
|
+
},
|
|
27
|
+
})
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { databases } from "@highstate/library"
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { l4EndpointToString, parseEndpoints } from "../../../shared"
|
|
4
|
+
|
|
5
|
+
const { args, inputs, outputs } = forUnit(databases.postgresqlPatch)
|
|
6
|
+
|
|
7
|
+
const postgresql = await toPromise(inputs.postgresql)
|
|
8
|
+
const resolvedInputEndpoints = await toPromise(inputs.endpoints ?? [])
|
|
9
|
+
|
|
10
|
+
const shouldOverrideEndpoints =
|
|
11
|
+
args.endpoints.length > 0 || resolvedInputEndpoints.some(endpoint => endpoint != null)
|
|
12
|
+
const endpoints = shouldOverrideEndpoints
|
|
13
|
+
? await parseEndpoints(args.endpoints, inputs.endpoints, 4)
|
|
14
|
+
: postgresql.endpoints
|
|
15
|
+
|
|
16
|
+
export default outputs({
|
|
17
|
+
postgresql: {
|
|
18
|
+
...postgresql,
|
|
19
|
+
endpoints,
|
|
20
|
+
username: args.username ?? postgresql.username,
|
|
21
|
+
database: args.database ?? postgresql.database,
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
$statusFields: {
|
|
25
|
+
endpoints: endpoints.map(l4EndpointToString),
|
|
26
|
+
},
|
|
27
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { databases } from "@highstate/library"
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { l4EndpointToString, parseEndpoints } from "../../../shared"
|
|
4
|
+
|
|
5
|
+
const { args, inputs, outputs } = forUnit(databases.redisPatch)
|
|
6
|
+
|
|
7
|
+
const redis = await toPromise(inputs.redis)
|
|
8
|
+
const resolvedInputEndpoints = await toPromise(inputs.endpoints ?? [])
|
|
9
|
+
|
|
10
|
+
const shouldOverrideEndpoints =
|
|
11
|
+
args.endpoints.length > 0 || resolvedInputEndpoints.some(endpoint => endpoint != null)
|
|
12
|
+
const endpoints = shouldOverrideEndpoints
|
|
13
|
+
? await parseEndpoints(args.endpoints, inputs.endpoints, 4)
|
|
14
|
+
: redis.endpoints
|
|
15
|
+
|
|
16
|
+
const redisDatabase = args.database === undefined ? undefined : Number.parseInt(args.database, 10)
|
|
17
|
+
|
|
18
|
+
if (redisDatabase !== undefined && Number.isNaN(redisDatabase)) {
|
|
19
|
+
throw new Error(`Invalid Redis database number "${args.database}"`)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default outputs({
|
|
23
|
+
redis: {
|
|
24
|
+
...redis,
|
|
25
|
+
endpoints,
|
|
26
|
+
database: redisDatabase ?? redis.database,
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
$statusFields: {
|
|
30
|
+
endpoints: endpoints.map(l4EndpointToString),
|
|
31
|
+
},
|
|
32
|
+
})
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { databases } from "@highstate/library"
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { l4EndpointToString, parseEndpoints } from "../../../shared"
|
|
4
|
+
|
|
5
|
+
const { args, inputs, outputs } = forUnit(databases.s3Patch)
|
|
6
|
+
|
|
7
|
+
const s3 = await toPromise(inputs.s3)
|
|
8
|
+
const resolvedInputEndpoints = await toPromise(inputs.endpoints ?? [])
|
|
9
|
+
|
|
10
|
+
const shouldOverrideEndpoints =
|
|
11
|
+
args.endpoints.length > 0 || resolvedInputEndpoints.some(endpoint => endpoint != null)
|
|
12
|
+
const endpoints = shouldOverrideEndpoints
|
|
13
|
+
? await parseEndpoints(args.endpoints, inputs.endpoints, 4)
|
|
14
|
+
: s3.endpoints
|
|
15
|
+
|
|
16
|
+
export default outputs({
|
|
17
|
+
s3: {
|
|
18
|
+
...s3,
|
|
19
|
+
endpoints,
|
|
20
|
+
region: args.region ?? s3.region,
|
|
21
|
+
accessKey: args.accessKey ?? s3.accessKey,
|
|
22
|
+
buckets: args.buckets ?? s3.buckets,
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
$statusFields: {
|
|
26
|
+
endpoints: endpoints.map(l4EndpointToString),
|
|
27
|
+
},
|
|
28
|
+
})
|
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
import { dns } from "@highstate/library"
|
|
2
|
-
import { forUnit } from "@highstate/pulumi"
|
|
3
|
-
import {
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { DnsRecordSet, mergeEndpoints, parseEndpoint, replaceEndpointBase } from "../../../shared"
|
|
4
4
|
|
|
5
5
|
const { name, args, inputs, outputs } = forUnit(dns.recordSet)
|
|
6
6
|
|
|
7
|
-
const {
|
|
8
|
-
|
|
9
|
-
args.fqdn ?? name,
|
|
10
|
-
args.endpointFilter,
|
|
11
|
-
args.patchMode,
|
|
12
|
-
inputs.dnsProviders,
|
|
13
|
-
`${args.fqdn ?? name}-l3`,
|
|
14
|
-
)
|
|
7
|
+
const { l3Endpoints, l4Endpoints, l7Endpoints } = await toPromise(inputs)
|
|
8
|
+
const waitServers = await toPromise(inputs.waitServers)
|
|
15
9
|
|
|
16
|
-
|
|
17
|
-
inputs.
|
|
18
|
-
args.
|
|
19
|
-
args.
|
|
20
|
-
args.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
)
|
|
10
|
+
new DnsRecordSet("record-set", {
|
|
11
|
+
providers: inputs.dnsProviders,
|
|
12
|
+
name: args.recordName ?? name,
|
|
13
|
+
values: [...args.values, ...l3Endpoints, ...l4Endpoints, ...l7Endpoints],
|
|
14
|
+
waitAt: [...(args.waitLocal ? ["local" as const] : []), ...waitServers],
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
const base = parseEndpoint(args.recordName ?? name)
|
|
24
18
|
|
|
25
19
|
export default outputs({
|
|
26
|
-
l3Endpoints,
|
|
27
|
-
l4Endpoints,
|
|
20
|
+
l3Endpoints: mergeEndpoints(l3Endpoints.map(endpoint => replaceEndpointBase(endpoint, base))),
|
|
21
|
+
l4Endpoints: mergeEndpoints(l4Endpoints.map(endpoint => replaceEndpointBase(endpoint, base))),
|
|
22
|
+
l7Endpoints: mergeEndpoints(l7Endpoints.map(endpoint => replaceEndpointBase(endpoint, base))),
|
|
28
23
|
})
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { common } from "@highstate/library"
|
|
2
2
|
import { forUnit } from "@highstate/pulumi"
|
|
3
3
|
import { map } from "remeda"
|
|
4
|
-
import { createServerBundle, l3EndpointToString,
|
|
4
|
+
import { createServerBundle, l3EndpointToString, parseEndpoints } from "../../shared"
|
|
5
5
|
|
|
6
6
|
const { name, args, inputs, secrets, outputs } = forUnit(common.existingServer)
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const endpoints = await parseEndpoints([args.endpoint], inputs.endpoints)
|
|
9
9
|
|
|
10
10
|
const { server, terminal } = await createServerBundle({
|
|
11
11
|
name,
|
|
12
|
-
endpoints
|
|
12
|
+
endpoints,
|
|
13
13
|
sshArgs: args.ssh,
|
|
14
14
|
sshPassword: secrets.sshPassword,
|
|
15
15
|
sshPrivateKey: secrets.sshPrivateKey,
|
|
@@ -18,7 +18,6 @@ const { server, terminal } = await createServerBundle({
|
|
|
18
18
|
|
|
19
19
|
export default outputs({
|
|
20
20
|
server,
|
|
21
|
-
endpoints: server.endpoints,
|
|
22
21
|
|
|
23
22
|
$statusFields: {
|
|
24
23
|
hostname: server.hostname,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { network } from "@highstate/library"
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { createAddressSpace, subnetToString } from "../../../shared"
|
|
4
|
+
|
|
5
|
+
const { args, inputs, outputs } = forUnit(network.addressSpace)
|
|
6
|
+
|
|
7
|
+
const resolvedInputs = await toPromise(inputs)
|
|
8
|
+
|
|
9
|
+
const addressSpace = createAddressSpace({
|
|
10
|
+
included: [...args.included, ...resolvedInputs.included],
|
|
11
|
+
excluded: [...args.excluded, ...resolvedInputs.excluded],
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
export default outputs({
|
|
15
|
+
addressSpace,
|
|
16
|
+
|
|
17
|
+
$statusFields: {
|
|
18
|
+
subnets: addressSpace.subnets.map(subnetToString),
|
|
19
|
+
},
|
|
20
|
+
})
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { network } from "@highstate/library"
|
|
2
2
|
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
-
import {
|
|
3
|
+
import { filterByExpression } from "../../../shared"
|
|
4
4
|
|
|
5
5
|
const { args, inputs, outputs } = forUnit(network.endpointFilter)
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const l4EndpointsResolved = await toPromise(inputs.l4Endpoints)
|
|
7
|
+
const resolvedInputs = await toPromise(inputs)
|
|
9
8
|
|
|
10
9
|
export default outputs({
|
|
11
|
-
l3Endpoints:
|
|
12
|
-
l4Endpoints:
|
|
10
|
+
l3Endpoints: filterByExpression(resolvedInputs.l3Endpoints, args.endpointFilter),
|
|
11
|
+
l4Endpoints: filterByExpression(resolvedInputs.l4Endpoints, args.endpointFilter),
|
|
12
|
+
l7Endpoints: filterByExpression(resolvedInputs.l7Endpoints, args.endpointFilter),
|
|
13
13
|
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { network } from "@highstate/library"
|
|
2
2
|
import { forUnit } from "@highstate/pulumi"
|
|
3
|
-
import {
|
|
3
|
+
import { addEndpointMetadata, parseEndpoint } from "../../../shared"
|
|
4
4
|
|
|
5
5
|
const { args, outputs } = forUnit(network.l3Endpoint)
|
|
6
6
|
|
|
7
7
|
export default outputs({
|
|
8
|
-
endpoint:
|
|
8
|
+
endpoint: addEndpointMetadata(parseEndpoint(args.endpoint), args.metadata),
|
|
9
9
|
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { network } from "@highstate/library"
|
|
2
2
|
import { forUnit } from "@highstate/pulumi"
|
|
3
|
-
import {
|
|
3
|
+
import { addEndpointMetadata, parseEndpoint } from "../../../shared"
|
|
4
4
|
|
|
5
5
|
const { args, outputs } = forUnit(network.l4Endpoint)
|
|
6
6
|
|
|
7
7
|
export default outputs({
|
|
8
|
-
endpoint:
|
|
8
|
+
endpoint: addEndpointMetadata(parseEndpoint(args.endpoint, 4), args.metadata),
|
|
9
9
|
})
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { network } from "@highstate/library"
|
|
2
2
|
import { forUnit } from "@highstate/pulumi"
|
|
3
|
-
import {
|
|
3
|
+
import { addEndpointMetadata, parseEndpoint } from "../../../shared"
|
|
4
4
|
|
|
5
5
|
const { args, outputs } = forUnit(network.l7Endpoint)
|
|
6
6
|
|
|
7
7
|
export default outputs({
|
|
8
|
-
endpoint:
|
|
8
|
+
endpoint: addEndpointMetadata(parseEndpoint(args.endpoint, 7), args.metadata),
|
|
9
9
|
})
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import { common } from "@highstate/library"
|
|
2
|
-
import { forUnit } from "@highstate/pulumi"
|
|
3
|
-
import {
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { parseEndpoint } from "../../shared"
|
|
4
4
|
|
|
5
|
-
const { args, inputs, outputs } = forUnit(common.remoteFile)
|
|
5
|
+
const { name, args, inputs, outputs } = forUnit(common.remoteFile)
|
|
6
|
+
|
|
7
|
+
const resolvedInputs = await toPromise(inputs)
|
|
8
|
+
if (!resolvedInputs.endpoint && !args.url) {
|
|
9
|
+
throw new Error("Either 'endpoint' input or 'url' argument must be provided.")
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const endpoint = parseEndpoint(resolvedInputs.endpoint ?? args.url!, 7)
|
|
6
13
|
|
|
7
14
|
export default outputs({
|
|
8
15
|
file: {
|
|
9
16
|
meta: {
|
|
10
|
-
name: args.
|
|
17
|
+
name: args.fileName ?? endpoint.path?.split("/").pop() ?? name,
|
|
11
18
|
},
|
|
12
19
|
content: {
|
|
13
20
|
type: "remote",
|
|
14
|
-
endpoint
|
|
21
|
+
endpoint,
|
|
15
22
|
},
|
|
16
23
|
},
|
|
17
24
|
})
|
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
import { common } from "@highstate/library"
|
|
2
|
-
import { forUnit } from "@highstate/pulumi"
|
|
3
|
-
import { l3EndpointToString,
|
|
2
|
+
import { forUnit, toPromise } from "@highstate/pulumi"
|
|
3
|
+
import { l3EndpointToString, parseEndpoints } from "../../shared"
|
|
4
4
|
|
|
5
5
|
const { args, inputs, outputs } = forUnit(common.serverPatch)
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
args.endpointsPatchMode,
|
|
12
|
-
)
|
|
7
|
+
const server = await toPromise(inputs.server)
|
|
8
|
+
const endpoints = await parseEndpoints(args.endpoints, inputs.endpoints, 3)
|
|
9
|
+
|
|
10
|
+
const newEndpoints = endpoints.length > 0 ? endpoints : server.endpoints
|
|
13
11
|
|
|
14
12
|
export default outputs({
|
|
15
|
-
server:
|
|
13
|
+
server: {
|
|
16
14
|
...server,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
endpoints,
|
|
15
|
+
hostname: args.hostname ?? server.hostname,
|
|
16
|
+
endpoints: newEndpoints,
|
|
17
|
+
},
|
|
21
18
|
|
|
22
19
|
$statusFields: {
|
|
23
20
|
endpoints: endpoints.map(l3EndpointToString),
|