UNPKG

swarm-pilot

Version:
78 lines (77 loc) 3.63 kB
import { Schema } from "effect"; export const service_schema = Schema.mutable(Schema.Struct({ id: Schema.String, name: Schema.String, mode: Schema.Union(Schema.Literal("replicated"), Schema.Literal("global")), replicas_running: Schema.Number, replicas_target: Schema.Number, image: Schema.String, ports: Schema.optional(Schema.String), })); export const service_list_schema = Schema.Array(service_schema); const node_status_schema = Schema.Union(Schema.Literal("ready"), Schema.Literal("down"), Schema.Literal("unknown"), Schema.Literal("disconnected")); const node_availability_schema = Schema.Union(Schema.Literal("active"), Schema.Literal("pause"), Schema.Literal("drain")); const manager_status_schema = Schema.Union(Schema.Literal("leader"), Schema.Literal("reachable"), Schema.Literal("unavailable"), Schema.Literal("worker")); export const docker_node_list_schema = Schema.Struct({ is_self: Schema.Boolean, id: Schema.String, hostname: Schema.String, status: node_status_schema, availability: node_availability_schema, manager_status: manager_status_schema, engine_version: Schema.String }); export const desired_state_schema = Schema.Union(Schema.Literal("Running"), Schema.Literal("Shutdown"), Schema.Literal("Unknown")); export const current_state_schema = Schema.Union(Schema.Literal("Running"), Schema.Literal("Shutdown"), Schema.Literal("Failed"), Schema.Literal("Rejected"), Schema.Literal("Complete"), Schema.Literal("Orphaned"), Schema.Literal("Paused"), Schema.Literal("Pending"), Schema.Literal("Preparing"), Schema.Literal("Starting"), Schema.Literal("Removing"), Schema.Literal("Accepted"), Schema.Literal("New"), Schema.Literal("Allocated"), Schema.Literal("Assigned"), Schema.Literal("Ready"), Schema.Literal("Unknown")); export const Service_ps_schema = Schema.Struct({ id: Schema.String, name: Schema.String, image: Schema.String, node: Schema.String, desired_state: desired_state_schema, current_state: current_state_schema, current_state_since: Schema.String, error: Schema.optional(Schema.String), ports: Schema.optional(Schema.String), }); export const service_ps_list_schema = Schema.mutable(Schema.Array(Service_ps_schema)); export const service_usage_schema = Schema.Struct({ id: Schema.String, name: Schema.String, cpu: Schema.Number, mem: Schema.Number, }); export const service_usage_list_schema = Schema.mutable(Schema.Array(service_usage_schema)); export const metrics_schema = Schema.Struct({ metric: Schema.Struct({ container_label_com_docker_swarm_service_name: Schema.String, container_label_com_docker_swarm_task_id: Schema.String, instance: Schema.String, }), value: Schema.Tuple(Schema.Number, // The timestamp Schema.String // The value, parsed and kept as a string ), }); export const prometheus_response_schema = Schema.Struct({ status: Schema.String, data: Schema.Struct({ resultType: Schema.String, result: Schema.Array(metrics_schema), }), }); export const usage_schema = Schema.Struct({ service_name: Schema.String, cpu_usage: Schema.Number, memory_usage: Schema.Number, task_id: Schema.String, instance: Schema.String, }); export const label_config_schema = Schema.Struct({ autoscaler_enable: Schema.Boolean, autoscaler_minimum_cpu: Schema.Number, autoscaler_maximum_cpu: Schema.Number, autoscaler_minimum_mem: Schema.Number, autoscaler_maximum_mem: Schema.Number, autoscaler_min_replicas: Schema.Number, autoscaler_max_replicas: Schema.Number, });