the-moby-effect
Version:
Moby/Docker API client built using effect-ts
90 lines (80 loc) • 3.89 kB
text/typescript
import * as Schema from "effect/Schema";
import * as MobySchemas from "../schemas/index.js";
import * as SwarmSpec from "./SwarmSpec.generated.js";
export class SwarmInitRequest extends Schema.Class<SwarmInitRequest>("SwarmInitRequest")(
{
/**
* Listen address used for inter-manager communication, as well as
* determining the networking interface used for the VXLAN Tunnel
* Endpoint (VTEP). This can either be an address/port combination in
* the form 192.168.1.1:4567, or an interface followed by a port number,
* like eth0:4567. If the port number is omitted, the default swarm
* listening port is used.
*/
ListenAddr: Schema.Union(
Schema.TemplateLiteral(Schema.String, ":", Schema.Number),
MobySchemas.AddressString,
Schema.String
),
/**
* Externally reachable address advertised to other nodes. This can
* either be an address/port combination in the form 192.168.1.1:4567,
* or an interface followed by a port number, like eth0:4567. If the
* port number is omitted, the port number from the listen address is
* used. If AdvertiseAddr is not specified, it will be automatically
* detected when possible.
*/
AdvertiseAddr: Schema.optionalWith(
Schema.Union(
Schema.TemplateLiteral(Schema.String, ":", Schema.Number),
MobySchemas.AddressString,
Schema.String
),
{ nullable: true }
),
/**
* Address or interface to use for data path traffic (format:
* <ip|interface>), for example, 192.168.1.1, or an interface, like
* eth0. If DataPathAddr is unspecified, the same address as
* AdvertiseAddr is used.
*
* The DataPathAddr specifies the address that global scope network
* drivers will publish towards other nodes in order to reach the
* containers running on this node. Using this parameter it is possible
* to separate the container data traffic from the management traffic of
* the cluster.
*/
DataPathAddr: Schema.optionalWith(Schema.Union(MobySchemas.AddressString, Schema.String), { nullable: true }),
/**
* DataPathPort specifies the data path port number for data traffic.
* Acceptable port range is 1024 to 49151. if no port is set or is set
* to 0, default port 4789 will be used.
*/
DataPathPort: Schema.optionalWith(MobySchemas.Port, { nullable: true }),
/** Force creation of a new swarm. */
ForceNewCluster: Schema.optionalWith(Schema.Boolean, { nullable: true }),
/** User modifiable swarm configuration. */
Spec: Schema.optionalWith(SwarmSpec.SwarmSpec, { nullable: true }),
/**
* Default Address Pool specifies default subnet pools for global scope
* networks.
*/
DefaultAddrPool: Schema.optionalWith(Schema.Array(MobySchemas.CidrBlockFromString), { nullable: true }),
/**
* SubnetSize specifies the subnet size of the networks created from the
* default subnet pool.
*/
SubnetSize: Schema.optionalWith(MobySchemas.UInt32, {
default: () => MobySchemas.UInt32Schemas.UInt32Brand(24),
nullable: true,
}),
AutoLockManagers: Schema.optionalWith(Schema.Boolean, { nullable: true }),
Availability: Schema.optionalWith(Schema.Literal("active", "pause", "drain"), { nullable: true }),
},
{
identifier: "SwarmInitRequest",
title: "swarm.InitRequest",
documentation:
"https://github.com/moby/moby/blob/7d861e889cd2214b38c8f1f3f997bf003c77739d/api/types/swarm/swarm.go#L152-L164",
}
) {}