@soft-stech/argo-rollouts
Version:
790 lines (789 loc) • 96.6 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.number(),
"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()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"spec": z.object({
/**
*
* @format int64
*/
"activeDeadlineSeconds": z.number().optional(),
/**
*
* @format int32
*/
"backoffLimit": z.number().optional(),
"completionMode": z.string().optional(),
/**
*
* @format int32
*/
"completions": z.number().optional(),
"manualSelector": z.boolean().optional(),
/**
*
* @format int32
*/
"parallelism": z.number().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()).optional()
}).optional(),
"suspend": z.boolean().optional(),
"template": z.object({
"metadata": z.object({
"annotations": z.record(z.string()).optional(),
"labels": z.record(z.string()).optional()
}).optional(),
"spec": z.object({
/**
*
* @format int64
*/
"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.number()
})).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()).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()).optional()
}).optional(),
"namespaces": z.array(z.string()).optional(),
"topologyKey": z.string()
}),
/**
*
* @format int32
*/
"weight": z.number()
})).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()).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()).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()).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()).optional()
}).optional(),
"namespaces": z.array(z.string()).optional(),
"topologyKey": z.string()
}),
/**
*
* @format int32
*/
"weight": z.number()
})).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()).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()).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.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"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.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().optional()
}).optional(),
"name": z.string(),
"ports": z.array(z.object({
/**
*
* @format int32
*/
"containerPort": z.number(),
"hostIP": z.string().optional(),
/**
*
* @format int32
*/
"hostPort": z.number().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.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"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.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().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(),
/**
*
* @format int64
*/
"runAsGroup": z.number().optional(),
"runAsNonRoot": z.boolean().optional(),
/**
*
* @format int64
*/
"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.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"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.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().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()
}).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.number().optional(),
"grpc": z.object({
/**
*
* @format int32
*/
"port": z.number(),
"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.number().optional(),
/**
*
* @format int32
*/
"periodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"successThreshold": z.number().optional(),
"tcpSocket": z.object({
"host": z.string().optional(),
"port": z.union([z.number(), z.string()])
}).optional(),
/**
*
* @format int64
*/
"terminationGracePeriodSeconds": z.number().optional(),
/**
*
* @format int32
*/
"timeoutSeconds": z.number().optional()
}).optional(),
"name": z.string(),
"ports": z.array(z.object({
/**
*
* @format int32
*/
"containerPort": z.number(),
"hostIP": z.string().optional(),
/**
*
* @format int32
*/
"hostPort": z.number().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(),
/**
*