@soft-stech/argo-rollouts
Version:
871 lines (870 loc) • 114 kB
JavaScript
import { z } from "zod";
import { iObjectMetaSchema } from "@soft-stech/apimachinery/apis/meta/v1/ObjectMeta.schema";
export const IAnalysisRunSchema = z.object({
apiVersion: z.literal("argoproj.io/v1alpha1"),
kind: z.literal("AnalysisRun"),
metadata: iObjectMetaSchema.optional(),
spec: z.object({
args: z
.array(z.object({
name: z.string(),
value: z.string().optional(),
valueFrom: z
.object({
fieldRef: z
.object({
fieldPath: z.string()
})
.optional(),
secretKeyRef: z
.object({
key: z.string(),
name: z.string()
})
.optional()
})
.optional()
}))
.optional(),
dryRun: z
.array(z.object({
metricName: z.string()
}))
.optional(),
measurementRetention: z
.array(z.object({
/**
*
* @format int32
*/
limit: z.int32(),
metricName: z.string()
}))
.optional(),
metrics: z.array(z.object({
consecutiveErrorLimit: z.union([z.number(), z.string()]).optional(),
count: z.union([z.number(), z.string()]).optional(),
failureCondition: z.string().optional(),
failureLimit: z.union([z.number(), z.string()]).optional(),
inconclusiveLimit: z.union([z.number(), z.string()]).optional(),
initialDelay: z.string().optional(),
interval: z.string().optional(),
name: z.string(),
provider: z.object({
cloudWatch: z
.object({
interval: z.string().optional(),
metricDataQueries: z.array(z.object({
expression: z.string().optional(),
id: z.string().optional(),
label: z.string().optional(),
metricStat: z
.object({
metric: z
.object({
dimensions: z
.array(z.object({
name: z.string().optional(),
value: z.string().optional()
}))
.optional(),
metricName: z.string().optional(),
namespace: z.string().optional()
})
.optional(),
period: z.union([z.number(), z.string()]).optional(),
stat: z.string().optional(),
unit: z.string().optional()
})
.optional(),
period: z.union([z.number(), z.string()]).optional(),
returnData: z.boolean().optional()
}))
})
.optional(),
datadog: z
.object({
apiVersion: z.string().optional(),
interval: z.string().optional(),
query: z.string()
})
.optional(),
graphite: z
.object({
address: z.string().optional(),
query: z.string().optional()
})
.optional(),
influxdb: z
.object({
profile: z.string().optional(),
query: z.string().optional()
})
.optional(),
job: z
.object({
metadata: z
.object({
annotations: z.record(z.string(), z.string()).optional(),
labels: z.record(z.string(), z.string()).optional()
})
.optional(),
spec: z.object({
activeDeadlineSeconds: z.number().optional(),
/**
*
* @format int32
*/
backoffLimit: z.int32().optional(),
completionMode: z.string().optional(),
/**
*
* @format int32
*/
completions: z.int32().optional(),
manualSelector: z.boolean().optional(),
/**
*
* @format int32
*/
parallelism: z.int32().optional(),
podFailurePolicy: z
.object({
rules: z.array(z.object({
action: z.string(),
onExitCodes: z
.object({
containerName: z.string().optional(),
operator: z.string(),
values: z.array(z.number())
})
.optional(),
onPodConditions: z.array(z.object({
status: z.string(),
type: z.string()
}))
}))
})
.optional(),
selector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z.array(z.string()).optional()
}))
.optional(),
matchLabels: z.record(z.string(), z.string()).optional()
})
.optional(),
suspend: z.boolean().optional(),
template: z.object({
metadata: z
.object({
annotations: z.record(z.string(), z.string()).optional(),
labels: z.record(z.string(), z.string()).optional()
})
.optional(),
spec: z
.object({
activeDeadlineSeconds: z.number().optional(),
affinity: z
.object({
nodeAffinity: z
.object({
preferredDuringSchedulingIgnoredDuringExecution: z
.array(z.object({
preference: z.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchFields: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional()
}),
/**
*
* @format int32
*/
weight: z.int32()
}))
.optional(),
requiredDuringSchedulingIgnoredDuringExecution: z
.object({
nodeSelectorTerms: z.array(z.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchFields: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional()
}))
})
.optional()
})
.optional(),
podAffinity: z
.object({
preferredDuringSchedulingIgnoredDuringExecution: z
.array(z.object({
podAffinityTerm: z.object({
labelSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaceSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaces: z
.array(z.string())
.optional(),
topologyKey: z.string()
}),
/**
*
* @format int32
*/
weight: z.int32()
}))
.optional(),
requiredDuringSchedulingIgnoredDuringExecution: z
.array(z.object({
labelSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaceSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaces: z.array(z.string()).optional(),
topologyKey: z.string()
}))
.optional()
})
.optional(),
podAntiAffinity: z
.object({
preferredDuringSchedulingIgnoredDuringExecution: z
.array(z.object({
podAffinityTerm: z.object({
labelSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaceSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaces: z
.array(z.string())
.optional(),
topologyKey: z.string()
}),
/**
*
* @format int32
*/
weight: z.int32()
}))
.optional(),
requiredDuringSchedulingIgnoredDuringExecution: z
.array(z.object({
labelSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaceSelector: z
.object({
matchExpressions: z
.array(z.object({
key: z.string(),
operator: z.string(),
values: z
.array(z.string())
.optional()
}))
.optional(),
matchLabels: z
.record(z.string(), z.string())
.optional()
})
.optional(),
namespaces: z.array(z.string()).optional(),
topologyKey: z.string()
}))
.optional()
})
.optional()
})
.optional(),
automountServiceAccountToken: z.boolean().optional(),
containers: z.array(z.object({
args: z.array(z.string()).optional(),
command: z.array(z.string()).optional(),
env: z
.array(z.object({
name: z.string(),
value: z.string().optional(),
valueFrom: z
.object({
configMapKeyRef: z
.object({
key: z.string(),
name: z.string().optional(),
optional: z.boolean().optional()
})
.optional(),
fieldRef: z
.object({
apiVersion: z.string().optional(),
fieldPath: z.string()
})
.optional(),
resourceFieldRef: z
.object({
containerName: z.string().optional(),
/**
*
* @schema union([z.number(), z.string().regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)]).optional()
*/
divisor: z
.union([
z.number(),
z
.string()
.regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)
])
.optional(),
resource: z.string()
})
.optional(),
secretKeyRef: z
.object({
key: z.string(),
name: z.string().optional(),
optional: z.boolean().optional()
})
.optional()
})
.optional()
}))
.optional(),
envFrom: z
.array(z.object({
configMapRef: z
.object({
name: z.string().optional(),
optional: z.boolean().optional()
})
.optional(),
prefix: z.string().optional(),
secretRef: z
.object({
name: z.string().optional(),
optional: z.boolean().optional()
})
.optional()
}))
.optional(),
image: z.string().optional(),
imagePullPolicy: z.string().optional(),
lifecycle: z
.object({
postStart: z
.object({
exec: z
.object({
command: z.array(z.string()).optional()
})
.optional(),
httpGet: z
.object({
host: z.string().optional(),
httpHeaders: z
.array(z.object({
name: z.string(),
value: z.string()
}))
.optional(),
path: z.string().optional(),
port: z.union([z.number(), z.string()]),
scheme: z.string().optional()
})
.optional(),
tcpSocket: z
.object({
host: z.string().optional(),
port: z.union([z.number(), z.string()])
})
.optional()
})
.optional(),
preStop: z
.object({
exec: z
.object({
command: z.array(z.string()).optional()
})
.optional(),
httpGet: z
.object({
host: z.string().optional(),
httpHeaders: z
.array(z.object({
name: z.string(),
value: z.string()
}))
.optional(),
path: z.string().optional(),
port: z.union([z.number(), z.string()]),
scheme: z.string().optional()
})
.optional(),
tcpSocket: z
.object({
host: z.string().optional(),
port: z.union([z.number(), z.string()])
})
.optional()
})
.optional()
})
.optional(),
livenessProbe: z
.object({
exec: z
.object({
command: z.array(z.string()).optional()
})
.optional(),
/**
*
* @format int32
*/
failureThreshold: z.int32().optional(),
grpc: z
.object({
/**
*
* @format int32
*/
port: z.int32(),
service: z.string().optional()
})
.optional(),
httpGet: z
.object({
host: z.string().optional(),
httpHeaders: z
.array(z.object({
name: z.string(),
value: z.string()
}))
.optional(),
path: z.string().optional(),
port: z.union([z.number(), z.string()]),
scheme: z.string().optional()
})
.optional(),
/**
*
* @format int32
*/
initialDelaySeconds: z.int32().optional(),
/**
*
* @format int32
*/
periodSeconds: z.int32().optional(),
/**
*
* @format int32
*/
successThreshold: z.int32().optional(),
tcpSocket: z
.object({
host: z.string().optional(),
port: z.union([z.number(), z.string()])
})
.optional(),
terminationGracePeriodSeconds: z
.number()
.optional(),
/**
*
* @format int32
*/
timeoutSeconds: z.int32().optional()
})
.optional(),
name: z.string(),
ports: z
.array(z.object({
/**
*
* @format int32
*/
containerPort: z.int32(),
hostIP: z.string().optional(),
/**
*
* @format int32
*/
hostPort: z.int32().optional(),
name: z.string().optional(),
/**
*
* @default "TCP"
*/
protocol: z.string().optional().default("TCP")
}))
.optional(),
readinessProbe: z
.object({
exec: z
.object({
command: z.array(z.string()).optional()
})
.optional(),
/**
*
* @format int32
*/
failureThreshold: z.int32().optional(),
grpc: z
.object({
/**
*
* @format int32
*/
port: z.int32(),
service: z.string().optional()
})
.optional(),
httpGet: z
.object({
host: z.string().optional(),
httpHeaders: z
.array(z.object({
name: z.string(),
value: z.string()
}))
.optional(),
path: z.string().optional(),
port: z.union([z.number(), z.string()]),
scheme: z.string().optional()
})
.optional(),
/**
*
* @format int32
*/
initialDelaySeconds: z.int32().optional(),
/**
*
* @format int32
*/
periodSeconds: z.int32().optional(),
/**
*
* @format int32
*/
successThreshold: z.int32().optional(),
tcpSocket: z
.object({
host: z.string().optional(),
port: z.union([z.number(), z.string()])
})
.optional(),
terminationGracePeriodSeconds: z
.number()
.optional(),
/**
*
* @format int32
*/
timeoutSeconds: z.int32().optional()
})
.optional(),
resources: z
.object({
limits: z.any().optional(),
requests: z.any().optional()
})
.optional(),
securityContext: z
.object({
allowPrivilegeEscalation: z.boolean().optional(),
capabilities: z
.object({
add: z.array(z.string()).optional(),
drop: z.array(z.string()).optional()
})
.optional(),
privileged: z.boolean().optional(),
procMount: z.string().optional(),
readOnlyRootFilesystem: z.boolean().optional(),
runAsGroup: z.number().optional(),
runAsNonRoot: z.boolean().optional(),
runAsUser: z.number().optional(),
seLinuxOptions: z
.object({
level: z.string().optional(),
role: z.string().optional(),
type: z.string().optional(),
user: z.string().optional()
})
.optional(),
seccompProfile: z
.object({
localhostProfile: z.string().optional(),
type: z.string()
})
.optional(),
windowsOptions: z
.object({
gmsaCredentialSpec: z.string().optional(),
gmsaCredentialSpecName: z.string().optional(),
hostProcess: z.boolean().optional(),
runAsUserName: z.string().optional()
})
.optional()
})
.optional(),
startupProbe: z
.object({
exec: z
.object({
command: z.array(z.string()).optional()
})
.optional(),
/**
*
* @format int32
*/
failureThreshold: z.int32().optional(),
grpc: z
.object({
/**
*
* @format int32
*/
port: z.int32(),
service: z.string().optional()
})
.optional(),
httpGet: z
.object({
host: z.string().optional(),
httpHeaders: z
.array(z.object({
name: z.string(),
value: z.string()
}))
.optional(),
path: z.string().optional(),
port: z.union([z.number(), z.string()]),
scheme: z.string().optional()
})
.optional(),
/**
*
* @format int32
*/
initialDelaySeconds: z.int32().optional(),
/**
*
* @format int32
*/
periodSeconds: z.int32().optional(),
/**
*
* @format int32
*/
successThreshold: z.int32().optional(),
tcpSocket: z
.object({
host: z.string().optional(),
port: z.union([z.number(), z.string()])
})
.optional(),
terminationGracePeriodSeconds: z
.number()
.optional(),
/**
*
* @format int32
*/
timeoutSeconds: z.int32().optional()
})
.optional(),
stdin: z.boolean().optional(),
stdinOnce: z.boolean().optional(),
terminationMessagePath: z.string().optional(),
terminationMessagePolicy: z.string().optional(),
tty: z.boolean().optional(),
volumeDevices: z
.array(z.object({
devicePath: z.string(),
name: z.string()
}))
.optional(),
volumeMounts: z
.array(z.object({
mountPath: z.string(),
mountPropagation: z.string().optional(),
name: z.string(),
readOnly: z.boolean().optional(),
subPath: z.string().optional(),
subPathExpr: z.string().optional()
}))
.optional(),
workingDir: z.string().optional()
})),
dnsConfig: z
.object({
nameservers: z.array(z.string()).optional(),
options: z
.array(z.object({
name: z.string().optional(),
value: z.string().optional()
}))
.optional(),
searches: z.array(z.string()).optional()
})
.optional(),
dnsPolicy: z.string().optional(),
enableServiceLinks: z.boolean().optional(),
ephemeralContainers: z
.array(z.object({
args: z.array(z.string()).optional(),
command: z.array(z.string()).optional(),
env: z
.array(z.object({
name: z.string(),
value: z.string().optional(),
valueFrom: z
.object({
configMapKeyRef: z
.object({
key: z.string(),
name: z.string().optional(),
optional: z.boolean().optional()
})
.optional(),
fieldRef: z
.object({
apiVersion: z.string().optional(),
fieldPath: z.string()
})