diff --git a/.reuse/dep5 b/.reuse/dep5 index 984846173..3f9d1fb46 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -307,6 +307,10 @@ Files: crd-catalog/Flagsmith/flagsmith-operator/* Copyright: The Flagsmith/flagsmith-operator Authors License: LicenseRef-Flagsmith +Files: crd-catalog/flanksource/canary-checker/* +Copyright: The flanksource/canary-checker Authors +License: Apache-2.0 + Files: crd-catalog/fluid-cloudnative/fluid/* Copyright: The fluid-cloudnative/fluid Authors License: Apache-2.0 diff --git a/code-generator/src/catalog.rs b/code-generator/src/catalog.rs index 80db1fb94..cc5910868 100644 --- a/code-generator/src/catalog.rs +++ b/code-generator/src/catalog.rs @@ -813,6 +813,13 @@ pub const CRD_V1_SOURCES: &'static [UpstreamSource] = &[ "https://github.com/Flagsmith/flagsmith-operator/blob/master/config/crd/bases/charts.flagsmith.com_flagsmiths.yaml", ], }, + UpstreamSource { + project_name: "flanksource/canary-checker", + license: APACHE_V2, + urls: &[ + "https://github.com/flanksource/canary-checker/blob/master/config/deploy/crd.yaml", + ], + }, UpstreamSource { project_name: "fluid-cloudnative/fluid", license: APACHE_V2, diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml new file mode 100644 index 000000000..7464b6a7d --- /dev/null +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml @@ -0,0 +1,5719 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + name: canaries.canaries.flanksource.com +spec: + group: canaries.flanksource.com + names: + kind: Canary + listKind: CanaryList + plural: canaries + singular: canary + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .spec.interval + name: Interval + type: string + - jsonPath: .status.status + name: Status + type: string + - jsonPath: .status.lastCheck + name: Last Check + type: date + - jsonPath: .status.uptime1h + name: Uptime 1H + type: string + - jsonPath: .status.latency1h + name: Latency 1H + type: string + - jsonPath: .status.lastTransitionedTime + name: Last Transitioned + type: date + - jsonPath: .status.message + name: Message + priority: 1 + type: string + - jsonPath: .status.errorMessage + name: Error + priority: 1 + type: string + name: v1 + schema: + openAPIV3Schema: + description: Canary is the Schema for the canaries API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: CanarySpec defines the desired state of Canary + properties: + alertmanager: + items: + properties: + alerts: + items: + type: string + type: array + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + exclude_filters: + additionalProperties: + type: string + type: object + filters: + additionalProperties: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + ignore: + items: + type: string + type: array + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + awsConfig: + items: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + aggregatorName: + type: string + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + query: + type: string + region: + type: string + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + required: + - name + - query + type: object + type: array + awsConfigRule: + items: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + complianceTypes: + description: Filters the results by compliance. The allowed values are INSUFFICIENT_DATA, NON_COMPLIANT, NOT_APPLICABLE, COMPLIANT + items: + type: string + type: array + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + ignoreRules: + description: List of rules which would be omitted from the fetch result + items: + type: string + type: array + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + region: + type: string + rules: + description: Specify one or more Config rule names to filter the results by rule. + items: + type: string + type: array + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + required: + - name + type: object + type: array + azureDevops: + items: + properties: + branch: + items: + type: string + type: array + connection: + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + organization: + type: string + personalAccessToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + pipeline: + type: string + project: + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + thresholdMillis: + description: ThresholdMillis the maximum duration of a Run. (Optional) + type: integer + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + variables: + additionalProperties: + type: string + type: object + required: + - branch + - name + - organization + - personalAccessToken + - pipeline + - project + - thresholdMillis + - variables + type: object + type: array + cloudwatch: + items: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + actionPrefix: + type: string + alarmPrefix: + type: string + alarms: + items: + type: string + type: array + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + region: + type: string + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + state: + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + required: + - name + type: object + type: array + configDB: + items: + properties: + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + query: + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + - query + type: object + type: array + containerd: + items: + properties: + auth: + properties: + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: object + description: + description: Description for the check + type: string + expectedDigest: + type: string + expectedSize: + format: int64 + type: integer + icon: + description: Icon for overwriting default icon on the dashboard + type: string + image: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - image + - name + type: object + type: array + containerdPush: + items: + properties: + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + image: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + type: string + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + username: + type: string + required: + - image + - name + type: object + type: array + databaseBackup: + items: + properties: + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + gcp: + properties: + gcpConnection: + properties: + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint and credentials. + type: string + credentials: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + endpoint: + type: string + type: object + instance: + type: string + project: + type: string + required: + - instance + - project + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + maxAge: + type: string + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + dns: + items: + properties: + description: + description: Description for the check + type: string + exactreply: + items: + type: string + type: array + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + minrecords: + type: integer + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + port: + type: integer + query: + type: string + querytype: + type: string + server: + type: string + thresholdMillis: + type: integer + timeout: + type: integer + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + docker: + items: + properties: + auth: + properties: + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: object + description: + description: Description for the check + type: string + expectedDigest: + type: string + expectedSize: + format: int64 + type: integer + icon: + description: Icon for overwriting default icon on the dashboard + type: string + image: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - image + - name + type: object + type: array + dockerPush: + items: + properties: + auth: + properties: + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: object + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + image: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - image + - name + type: object + type: array + dynatrace: + items: + properties: + apiKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + connection: + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + host: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + scheme: + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + ec2: + items: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + ami: + type: string + canaryRef: + items: + description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + type: array + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + description: + description: Description for the check + type: string + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + keepAlive: + type: boolean + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + region: + type: string + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + securityGroup: + type: string + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + timeOut: + type: integer + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + userData: + type: string + waitTime: + type: integer + required: + - name + type: object + type: array + elasticsearch: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + index: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + query: + type: string + results: + type: integer + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + env: + additionalProperties: + description: VarSource represents a source for a value + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + value: + type: string + type: object + type: object + exec: + items: + properties: + checkout: + description: Checkout details the git repository that should be mounted to the process + properties: + certificate: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + connection: + type: string + destination: + description: Destination is the full path to where the contents of the URL should be downloaded to. If left empty, the sha256 hash of the URL will be used as the dir name. + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + url: + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: object + connections: + properties: + aws: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + endpoint: + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + region: + type: string + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + type: object + azure: + properties: + clientID: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + clientSecret: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + connection: + type: string + tenantID: + type: string + type: object + gcp: + properties: + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint and credentials. + type: string + credentials: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + endpoint: + type: string + type: object + type: object + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + env: + description: EnvVars are the environment variables that are accessible to exec processes + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: array + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + script: + description: Script can be a inline script or a path to a script that needs to be executed On windows executed via powershell and in darwin and linux executed using bash + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + - script + type: object + type: array + folder: + items: + properties: + availableSize: + description: AvailableSize present on the filesystem + type: string + awsConnection: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + endpoint: + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + region: + type: string + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + type: object + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + filter: + properties: + maxAge: + type: string + maxSize: + type: string + minAge: + type: string + minSize: + type: string + regex: + type: string + since: + type: string + type: object + gcpConnection: + properties: + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint and credentials. + type: string + credentials: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + endpoint: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + maxAge: + description: MaxAge the latest object should be younger than defined age + type: string + maxCount: + description: MinCount the minimum number of files inside the searchPath + type: integer + maxSize: + description: MaxSize of the files inside the searchPath + type: string + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + minAge: + description: MinAge the latest object should be older than defined age + type: string + minCount: + description: MinCount the minimum number of files inside the searchPath + type: integer + minSize: + description: MinSize of the files inside the searchPath + type: string + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + path: + description: Path to folder or object storage, e.g. `s3://`, `gcs://`, `/path/tp/folder` + type: string + sftpConnection: + properties: + connection: + description: ConnectionName of the connection. It'll be used to populate the connection fields. + type: string + host: + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + port: + description: Port for the SSH server. Defaults to 22 + type: integer + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - host + type: object + smbConnection: + properties: + connection: + description: ConnectionName of the connection. It'll be used to populate the connection fields. + type: string + domain: + description: Domain... + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + port: + description: Port on which smb server is running. Defaults to 445 + type: integer + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: object + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + totalSize: + description: TotalSize present on the filesystem + type: string + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + - path + type: object + type: array + github: + items: + properties: + connection: + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + githubToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + query: + description: Query to be executed. Please see https://github.com/askgitdev/askgit for more details regarding syntax + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + - query + type: object + type: array + helm: + items: + properties: + auth: + properties: + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: object + cafile: + type: string + chartmuseum: + type: string + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + project: + type: string + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + http: + items: + properties: + body: + description: Request Body Contents + type: string + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + endpoint: + description: 'Deprecated: Use url instead' + type: string + env: + description: EnvVars are the environment variables that are accesible to templated body + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: array + headers: + description: Header fields to be used in the query + items: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + type: array + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + maxSSLExpiry: + description: Maximum number of days until the SSL Certificate expires. + type: integer + method: + description: Method to use - defaults to GET + type: string + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + ntlm: + description: NTLM when set to true will do authentication using NTLM v1 protocol + type: boolean + ntlmv2: + description: NTLM when set to true will do authentication using NTLM v2 protocol + type: boolean + oauth2: + description: Oauth2 Configuration. The client ID & Client secret should go to username & password respectively. + properties: + params: + additionalProperties: + type: string + type: object + scope: + items: + type: string + type: array + tokenURL: + type: string + type: object + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + responseCodes: + description: Expected response codes for the HTTP Request. + items: + type: integer + type: array + responseContent: + description: Exact response content expected to be returned by the endpoint. + type: string + responseJSONContent: + description: Deprecated, use expr and jsonpath function + properties: + path: + type: string + value: + type: string + required: + - path + - value + type: object + templateBody: + description: Template the request body + type: boolean + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + thresholdMillis: + description: Maximum duration in milliseconds for the HTTP request. It will fail the check if it takes longer. + type: integer + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + icmp: + items: + properties: + description: + description: Description for the check + type: string + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + packetCount: + type: integer + packetLossThreshold: + format: int64 + type: integer + thresholdMillis: + format: int64 + type: integer + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + icon: + type: string + interval: + description: interval (in seconds) to run checks on Deprecated in favor of Schedule + format: int64 + type: integer + jmeter: + items: + properties: + description: + description: Description for the check + type: string + host: + description: Host is the server against which test plan needs to be executed + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + jmx: + description: Jmx defines the ConfigMap or Secret reference to get the JMX test plan + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + port: + description: Port on which the server is running + format: int32 + type: integer + properties: + description: Properties defines the local Jmeter properties + items: + type: string + type: array + responseDuration: + description: ResponseDuration under which the all the test should pass + type: string + systemProperties: + description: SystemProperties defines the java system property + items: + type: string + type: array + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - jmx + - name + type: object + type: array + junit: + items: + properties: + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + testResults: + type: string + timeout: + description: Timeout in minutes to wait for specified container to finish its job. Defaults to 5 minutes + type: integer + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + - spec + - testResults + type: object + type: array + kubernetes: + items: + properties: + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + ignore: + description: Ignore the specified resources from the fetched resources. Can be a glob pattern. + items: + type: string + type: array + kind: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + properties: + fieldSelector: + type: string + labelSelector: + type: string + name: + type: string + type: string + ready: + type: boolean + resource: + properties: + fieldSelector: + type: string + labelSelector: + type: string + name: + type: string + type: object + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - kind + - name + type: object + type: array + ldap: + items: + properties: + bindDN: + type: string + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + type: boolean + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + userSearch: + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - bindDN + - name + type: object + type: array + mongodb: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + mssql: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + query: + type: string + results: + description: Number rows to check for + type: integer + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + mysql: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + query: + type: string + results: + description: Number rows to check for + type: integer + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + namespace: + items: + properties: + deadline: + format: int64 + type: integer + deleteTimeout: + format: int64 + type: integer + description: + description: Description for the check + type: string + expectedContent: + type: string + expectedHttpStatuses: + items: + format: int64 + type: integer + type: array + httpRetryInterval: + format: int64 + type: integer + httpTimeout: + format: int64 + type: integer + icon: + description: Icon for overwriting default icon on the dashboard + type: string + ingressHost: + type: string + ingressName: + type: string + ingressTimeout: + format: int64 + type: integer + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + namespaceAnnotations: + additionalProperties: + type: string + type: object + namespaceLabels: + additionalProperties: + type: string + type: object + namespaceNamePrefix: + type: string + path: + type: string + podSpec: + type: string + port: + format: int64 + type: integer + priorityClass: + type: string + readyTimeout: + format: int64 + type: integer + schedule_timeout: + format: int64 + type: integer + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + - podSpec + type: object + type: array + opensearch: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + index: + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + query: + type: string + results: + format: int64 + type: integer + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - index + - name + - query + type: object + type: array + owner: + type: string + pod: + items: + properties: + deadline: + format: int64 + type: integer + deleteTimeout: + format: int64 + type: integer + description: + description: Description for the check + type: string + expectedContent: + type: string + expectedHttpStatuses: + items: + type: integer + type: array + httpRetryInterval: + format: int64 + type: integer + httpTimeout: + format: int64 + type: integer + icon: + description: Icon for overwriting default icon on the dashboard + type: string + ingressClass: + type: string + ingressHost: + type: string + ingressName: + type: string + ingressTimeout: + format: int64 + type: integer + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + path: + type: string + port: + format: int64 + type: integer + priorityClass: + type: string + readyTimeout: + format: int64 + type: integer + roundRobinNodes: + type: boolean + scheduleTimeout: + format: int64 + type: integer + spec: + type: string + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + postgres: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + query: + type: string + results: + description: Number rows to check for + type: integer + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + prometheus: + items: + properties: + connection: + description: Connection name e.g. connection://http/google + type: string + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + host: + description: 'Deprecated: use `url` instead' + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + query: + description: PromQL query + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + - query + type: object + type: array + redis: + items: + properties: + addr: + description: 'Deprecated: Use url instead' + type: string + connection: + description: Connection name e.g. connection://http/google + type: string + db: + type: integer + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + url: + description: Connection url, interpolated with username,password + type: string + username: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + required: + - name + type: object + type: array + restic: + items: + properties: + accessKey: + description: AccessKey access key id for connection with aws s3, minio, wasabi, alibaba oss + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + awsConnectionName: + description: Name of the AWS connection used to derive the access key and secret key. + type: string + caCert: + description: CaCert path to the root cert. In case of self-signed certificates + type: string + checkIntegrity: + description: CheckIntegrity when enabled will check the Integrity and consistency of the restic reposiotry + type: boolean + connection: + description: Name of the connection used to derive restic password. + type: string + description: + description: Description for the check + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + maxAge: + description: MaxAge for backup freshness + type: string + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + password: + description: Password for the restic repository + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + repository: + description: 'Repository The restic repository path eg: rest:https://user:pass@host:8000/ or rest:https://host:8000/ or s3:s3.amazonaws.com/bucket_name' + type: string + secretKey: + description: SecretKey secret access key for connection with aws s3, minio, wasabi, alibaba oss + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - maxAge + - name + - password + - repository + type: object + type: array + resultMode: + type: string + s3: + items: + properties: + accessKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + bucketName: + type: string + connection: + description: ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + type: string + description: + description: Description for the check + type: string + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + objectPath: + description: glob path to restrict matches to a subset + type: string + region: + type: string + secretKey: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + sessionToken: + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + skipTLSVerify: + description: Skip TLS verify when connecting to aws + type: boolean + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + usePathStyle: + description: 'Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY' + type: boolean + required: + - name + type: object + type: array + schedule: + description: 'Schedule to run checks on. Supports all cron expression, example: ''30 3-6,20-23 * * *''. For more info about cron expression syntax see https://en.wikipedia.org/wiki/Cron Also supports golang duration, can be set as ''@every 1m30s'' which runs the check every 1 minute and 30 seconds.' + type: string + severity: + type: string + tcp: + items: + properties: + description: + description: Description for the check + type: string + endpoint: + type: string + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + thresholdMillis: + format: int64 + type: integer + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: array + webhook: + properties: + description: + description: Description for the check + type: string + display: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + icon: + description: Icon for overwriting default icon on the dashboard + type: string + labels: + additionalProperties: + type: string + description: Labels for the check + type: object + metrics: + description: Metrics to expose from check results + items: + properties: + labels: + items: + properties: + name: + type: string + value: + type: string + valueExpr: + type: string + required: + - name + type: object + type: array + name: + type: string + type: + type: string + value: + type: string + type: object + type: array + name: + description: Name of the check + type: string + namespace: + description: Namespace of the check + type: string + test: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + token: + description: Token is an optional authorization token to run this check + properties: + name: + type: string + value: + type: string + valueFrom: + properties: + configMapKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + secretKeyRef: + properties: + key: + type: string + name: + type: string + required: + - key + type: object + type: object + type: object + transform: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + transformDeleteStrategy: + description: Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + type: string + required: + - name + type: object + type: object + status: + description: CanaryStatus defines the observed state of Canary + properties: + checkStatus: + additionalProperties: + properties: + errorMessage: + type: string + lastCheck: + format: date-time + type: string + lastTransitionedTime: + format: date-time + type: string + latency1h: + description: Average latency to complete all checks + type: string + message: + type: string + uptime1h: + description: Availibility over a rolling 1h period + type: string + type: object + type: object + checks: + additionalProperties: + type: string + description: contains the name and id of the checks associated with the canary + type: object + errorMessage: + type: string + lastCheck: + format: date-time + type: string + lastTransitionedTime: + format: date-time + type: string + latency1h: + description: Average latency to complete all checks + type: string + message: + type: string + observedGeneration: + format: int64 + type: integer + persistedID: + type: string + status: + type: string + uptime1h: + description: Availibility over a rolling 1h period + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/components.ignore b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/components.ignore new file mode 100644 index 000000000..2fe8a45d8 --- /dev/null +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/components.ignore @@ -0,0 +1 @@ +cannot find type `ComponentSummaryIncidents` in this scope diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/components.yaml b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/components.yaml new file mode 100644 index 000000000..42cd47a74 --- /dev/null +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/components.yaml @@ -0,0 +1,276 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + name: components.canaries.flanksource.com +spec: + group: canaries.flanksource.com + names: + kind: Component + listKind: ComponentList + plural: components + singular: component + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + checks: + items: + type: object + type: array + components: + description: Create new child components + items: + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + configs: + description: Lookup and associate config items with this component + items: + properties: + id: + items: + type: string + type: array + name: + type: string + namespace: + type: string + tags: + additionalProperties: + type: string + type: object + type: + type: string + type: object + type: array + forEach: + description: Only applies when using lookup, when specified the components and properties specified under ForEach will be templated using the components returned by the lookup ${.properties} can be used to reference the properties of the component ${.component} can be used to reference the component itself + type: object + icon: + type: string + id: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + lifecycle: + description: The lifecycle state of the component e.g. production, staging, dev, etc. + type: string + logs: + description: Logs is a list of logs selector for apm-hub. + items: + properties: + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + type: object + type: array + lookup: + description: Lookup component definitions from an external source, use the forEach property to iterate over the results to further enrich each component. + type: object + x-kubernetes-preserve-unknown-fields: true + name: + type: string + order: + type: integer + owner: + type: string + properties: + items: + properties: + color: + type: string + configLookup: + properties: + config: + description: Lookup a config by it + properties: + id: + items: + type: string + type: array + name: + type: string + namespace: + type: string + tags: + additionalProperties: + type: string + type: object + type: + type: string + type: object + display: + description: Apply transformations to the value + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + field: + description: A JSONPath expression to lookup the value in the config + type: string + id: + type: string + type: object + headline: + type: boolean + icon: + type: string + label: + type: string + lastTransition: + type: string + links: + items: + properties: + icon: + type: string + label: + type: string + text: + type: string + tooltip: + type: string + type: + description: e.g. documentation, support, playbook + type: string + url: + type: string + type: object + type: array + lookup: + description: CanarySpec defines the desired state of Canary + type: object + x-kubernetes-preserve-unknown-fields: true + max: + format: int64 + type: integer + min: + format: int64 + type: integer + name: + type: string + order: + type: integer + status: + type: string + summary: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + text: + type: string + tooltip: + type: string + type: + type: string + unit: + description: e.g. milliseconds, bytes, millicores, epoch etc. + type: string + value: + format: int64 + type: integer + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + relationships: + items: + properties: + ref: + type: string + type: + description: The type of relationship, e.g. dependsOn, subcomponentOf, providesApis, consumesApis + type: string + type: object + type: array + selectors: + description: Lookup and associcate other components with this component + items: + properties: + fieldSelector: + type: string + labelSelector: + type: string + name: + type: string + type: object + type: array + summary: + properties: + healthy: + type: integer + incidents: + additionalProperties: + additionalProperties: + type: integer + type: object + type: object + info: + type: integer + insights: + additionalProperties: + additionalProperties: + type: integer + type: object + type: object + unhealthy: + type: integer + warning: + type: integer + type: object + tooltip: + type: string + type: + description: The type of component, e.g. service, API, website, library, database, etc. + type: string + type: object + status: + properties: + status: + type: string + type: object + type: object + served: true + storage: true diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/topologies.ignore b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/topologies.ignore new file mode 100644 index 000000000..81b5cf78f --- /dev/null +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/topologies.ignore @@ -0,0 +1 @@ +cannot find type `TopologyComponentsSummaryIncidents` in this scope diff --git a/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/topologies.yaml b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/topologies.yaml new file mode 100644 index 000000000..b6ca64d1b --- /dev/null +++ b/crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/topologies.yaml @@ -0,0 +1,458 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + name: topologies.canaries.flanksource.com +spec: + group: canaries.flanksource.com + names: + kind: Topology + listKind: TopologyList + plural: topologies + singular: topology + scope: Namespaced + versions: + - name: v1 + schema: + openAPIV3Schema: + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + properties: + components: + items: + properties: + checks: + items: + properties: + inline: + description: CanarySpec defines the desired state of Canary + type: object + x-kubernetes-preserve-unknown-fields: true + selector: + properties: + fieldSelector: + type: string + labelSelector: + type: string + name: + type: string + type: object + type: object + type: array + components: + description: Create new child components + items: + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + configs: + description: Lookup and associate config items with this component + items: + properties: + id: + items: + type: string + type: array + name: + type: string + namespace: + type: string + tags: + additionalProperties: + type: string + type: object + type: + type: string + type: object + type: array + forEach: + description: Only applies when using lookup, when specified the components and properties specified under ForEach will be templated using the components returned by the lookup ${.properties} can be used to reference the properties of the component ${.component} can be used to reference the component itself + type: object + icon: + type: string + id: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + labels: + additionalProperties: + type: string + type: object + lifecycle: + description: The lifecycle state of the component e.g. production, staging, dev, etc. + type: string + logs: + description: Logs is a list of logs selector for apm-hub. + items: + properties: + labels: + additionalProperties: + type: string + type: object + name: + type: string + type: + type: string + type: object + type: array + lookup: + description: Lookup component definitions from an external source, use the forEach property to iterate over the results to further enrich each component. + type: object + x-kubernetes-preserve-unknown-fields: true + name: + type: string + order: + type: integer + owner: + type: string + properties: + items: + properties: + color: + type: string + configLookup: + properties: + config: + description: Lookup a config by it + properties: + id: + items: + type: string + type: array + name: + type: string + namespace: + type: string + tags: + additionalProperties: + type: string + type: object + type: + type: string + type: object + display: + description: Apply transformations to the value + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + field: + description: A JSONPath expression to lookup the value in the config + type: string + id: + type: string + type: object + headline: + type: boolean + icon: + type: string + label: + type: string + lastTransition: + type: string + links: + items: + properties: + icon: + type: string + label: + type: string + text: + type: string + tooltip: + type: string + type: + description: e.g. documentation, support, playbook + type: string + url: + type: string + type: object + type: array + lookup: + description: CanarySpec defines the desired state of Canary + type: object + x-kubernetes-preserve-unknown-fields: true + max: + format: int64 + type: integer + min: + format: int64 + type: integer + name: + type: string + order: + type: integer + status: + type: string + summary: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + text: + type: string + tooltip: + type: string + type: + type: string + unit: + description: e.g. milliseconds, bytes, millicores, epoch etc. + type: string + value: + format: int64 + type: integer + type: object + type: array + x-kubernetes-preserve-unknown-fields: true + relationships: + items: + properties: + ref: + type: string + type: + description: The type of relationship, e.g. dependsOn, subcomponentOf, providesApis, consumesApis + type: string + type: object + type: array + selectors: + description: Lookup and associcate other components with this component + items: + properties: + fieldSelector: + type: string + labelSelector: + type: string + name: + type: string + type: object + type: array + summary: + properties: + healthy: + type: integer + incidents: + additionalProperties: + additionalProperties: + type: integer + type: object + type: object + info: + type: integer + insights: + additionalProperties: + additionalProperties: + type: integer + type: object + type: object + unhealthy: + type: integer + warning: + type: integer + type: object + tooltip: + type: string + type: + description: The type of component, e.g. service, API, website, library, database, etc. + type: string + type: object + type: array + configs: + description: Lookup and associate config items with this component + items: + properties: + id: + items: + type: string + type: array + name: + type: string + namespace: + type: string + tags: + additionalProperties: + type: string + type: object + type: + type: string + type: object + type: array + icon: + type: string + id: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + label: + type: string + owner: + type: string + properties: + description: Properties are created once the full component tree is created, property lookup functions can return a map of coomponent name => properties to allow for bulk property lookups being applied to multiple components in the tree + items: + properties: + color: + type: string + configLookup: + properties: + config: + description: Lookup a config by it + properties: + id: + items: + type: string + type: array + name: + type: string + namespace: + type: string + tags: + additionalProperties: + type: string + type: object + type: + type: string + type: object + display: + description: Apply transformations to the value + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + field: + description: A JSONPath expression to lookup the value in the config + type: string + id: + type: string + type: object + headline: + type: boolean + icon: + type: string + label: + type: string + lastTransition: + type: string + links: + items: + properties: + icon: + type: string + label: + type: string + text: + type: string + tooltip: + type: string + type: + description: e.g. documentation, support, playbook + type: string + url: + type: string + type: object + type: array + lookup: + description: CanarySpec defines the desired state of Canary + type: object + x-kubernetes-preserve-unknown-fields: true + max: + format: int64 + type: integer + min: + format: int64 + type: integer + name: + type: string + order: + type: integer + status: + type: string + summary: + properties: + expr: + type: string + javascript: + type: string + jsonPath: + type: string + template: + type: string + type: object + text: + type: string + tooltip: + type: string + type: + type: string + unit: + description: e.g. milliseconds, bytes, millicores, epoch etc. + type: string + value: + format: int64 + type: integer + type: object + type: array + schedule: + type: string + text: + type: string + tooltip: + type: string + type: + type: string + type: object + status: + properties: + observedGeneration: + format: int64 + type: integer + persistentID: + type: string + status: + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/kube-custom-resources-rs/Cargo.toml b/kube-custom-resources-rs/Cargo.toml index 2da9f1b10..83c0f19d0 100644 --- a/kube-custom-resources-rs/Cargo.toml +++ b/kube-custom-resources-rs/Cargo.toml @@ -71,6 +71,7 @@ bus_volcano_sh = [] cache_kubedl_io = [] caching_ibm_com = [] camel_apache_org = [] +canaries_flanksource_com = [] capsule_clastix_io = [] ceph_rook_io = [] cert_manager_io = [] diff --git a/kube-custom-resources-rs/src/canaries_flanksource_com/mod.rs b/kube-custom-resources-rs/src/canaries_flanksource_com/mod.rs new file mode 100644 index 000000000..a3a6d96c3 --- /dev/null +++ b/kube-custom-resources-rs/src/canaries_flanksource_com/mod.rs @@ -0,0 +1 @@ +pub mod v1; diff --git a/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs b/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs new file mode 100644 index 000000000..22038af92 --- /dev/null +++ b/kube-custom-resources-rs/src/canaries_flanksource_com/v1/canaries.rs @@ -0,0 +1,6034 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/flanksource/canary-checker/canaries.flanksource.com/v1/canaries.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; + +/// CanarySpec defines the desired state of Canary +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "canaries.flanksource.com", version = "v1", kind = "Canary", plural = "canaries")] +#[kube(namespaced)] +#[kube(status = "CanaryStatus")] +#[kube(schema = "disabled")] +pub struct CanarySpec { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub alertmanager: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsConfig")] + pub aws_config: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsConfigRule")] + pub aws_config_rule: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "azureDevops")] + pub azure_devops: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cloudwatch: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configDB")] + pub config_db: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub containerd: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerdPush")] + pub containerd_push: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "databaseBackup")] + pub database_backup: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub dns: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub docker: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "dockerPush")] + pub docker_push: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub dynatrace: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ec2: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub elasticsearch: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exec: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub folder: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub github: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub helm: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub http: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icmp: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// interval (in seconds) to run checks on Deprecated in favor of Schedule + #[serde(default, skip_serializing_if = "Option::is_none")] + pub interval: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub jmeter: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub junit: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kubernetes: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ldap: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mongodb: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mssql: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mysql: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub opensearch: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub owner: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pod: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub postgres: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub prometheus: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub redis: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub restic: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resultMode")] + pub result_mode: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub s3: Option>, + /// Schedule to run checks on. Supports all cron expression, example: '30 3-6,20-23 * * *'. For more info about cron expression syntax see https://en.wikipedia.org/wiki/Cron Also supports golang duration, can be set as '@every 1m30s' which runs the check every 1 minute and 30 seconds. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub schedule: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub severity: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub tcp: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub webhook: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanager { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub alerts: Option>, + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exclude_filters: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub filters: Option>, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ignore: Option>, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAlertmanagerUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfig { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "aggregatorName")] + pub aggregator_name: Option, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + pub query: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigAccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigAccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigAccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigAccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigSessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRule { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + /// Filters the results by compliance. The allowed values are INSUFFICIENT_DATA, NON_COMPLIANT, NOT_APPLICABLE, COMPLIANT + #[serde(default, skip_serializing_if = "Option::is_none", rename = "complianceTypes")] + pub compliance_types: Option>, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// List of rules which would be omitted from the fetch result + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ignoreRules")] + pub ignore_rules: Option>, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + /// Specify one or more Config rule names to filter the results by rule. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub rules: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleAccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleAccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleAccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleAccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleSessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAwsConfigRuleTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevops { + pub branch: Vec, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + pub organization: String, + #[serde(rename = "personalAccessToken")] + pub personal_access_token: CanaryAzureDevopsPersonalAccessToken, + pub pipeline: String, + pub project: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + /// ThresholdMillis the maximum duration of a Run. (Optional) + #[serde(rename = "thresholdMillis")] + pub threshold_millis: i64, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + pub variables: BTreeMap, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsPersonalAccessToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsPersonalAccessTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsPersonalAccessTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsPersonalAccessTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryAzureDevopsTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatch { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "actionPrefix")] + pub action_prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "alarmPrefix")] + pub alarm_prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub alarms: Option>, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub state: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchAccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchAccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchAccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchAccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchSessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryCloudwatchTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryConfigDb { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + pub query: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryConfigDbDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryConfigDbMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryConfigDbMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryConfigDbTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryConfigDbTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerd { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub auth: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedDigest")] + pub expected_digest: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedSize")] + pub expected_size: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + pub image: String, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuth { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdAuthUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdPush { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + pub image: String, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdPushMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryContainerdPushMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackup { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub gcp: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] + pub max_age: Option, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupGcp { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcpConnection")] + pub gcp_connection: Option, + pub instance: String, + pub project: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupGcpGcpConnection { + /// ConnectionName of the connection. It'll be used to populate the endpoint and credentials. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub credentials: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupGcpGcpConnectionCredentials { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupGcpGcpConnectionCredentialsValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupGcpGcpConnectionCredentialsValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupGcpGcpConnectionCredentialsValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDatabaseBackupTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDns { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub exactreply: Option>, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub minrecords: Option, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub query: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub querytype: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub server: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "thresholdMillis")] + pub threshold_millis: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timeout: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDnsMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDnsMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDocker { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub auth: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedDigest")] + pub expected_digest: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedSize")] + pub expected_size: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + pub image: String, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuth { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerAuthUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPush { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub auth: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + pub image: String, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuth { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushAuthUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDockerPushMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatrace { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiKey")] + pub api_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scheme: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceApiKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceApiKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceApiKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceApiKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryDynatraceTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2 { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ami: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "canaryRef")] + pub canary_ref: Option>, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "keepAlive")] + pub keep_alive: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityGroup")] + pub security_group: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeOut")] + pub time_out: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "userData")] + pub user_data: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "waitTime")] + pub wait_time: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2AccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2AccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2AccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2AccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +/// LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2CanaryRef { + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2Metrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2MetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEc2SessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearch { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub index: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub query: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub results: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryElasticsearchUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEnv { + /// Selects a key of a ConfigMap. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + /// Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +/// Selects a key of a ConfigMap. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEnvConfigMapKeyRef { + /// The key to select. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEnvFieldRef { + /// Version of the schema the FieldPath is written in terms of, defaults to "v1". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + /// Path of the field to select in the specified API version. + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryEnvSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExec { + /// Checkout details the git repository that should be mounted to the process + #[serde(default, skip_serializing_if = "Option::is_none")] + pub checkout: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connections: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// EnvVars are the environment variables that are accessible to exec processes + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Script can be a inline script or a path to a script that needs to be executed On windows executed via powershell and in darwin and linux executed using bash + pub script: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +/// Checkout details the git repository that should be mounted to the process +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckout { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub certificate: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Destination is the full path to where the contents of the URL should be downloaded to. If left empty, the sha256 hash of the URL will be used as the dir name. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub destination: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutCertificate { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutCertificateValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutCertificateValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutCertificateValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecCheckoutUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnections { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub aws: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub azure: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub gcp: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAws { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsAccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsAccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsAccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsAccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAwsSessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzure { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientID")] + pub client_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientSecret")] + pub client_secret: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tenantID")] + pub tenant_id: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientId { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientIdValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientIdValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientIdValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientSecret { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientSecretValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientSecretValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsAzureClientSecretValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsGcp { + /// ConnectionName of the connection. It'll be used to populate the endpoint and credentials. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub credentials: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsGcpCredentials { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsGcpCredentialsValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsGcpCredentialsValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecConnectionsGcpCredentialsValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecEnv { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryExecTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolder { + /// AvailableSize present on the filesystem + #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableSize")] + pub available_size: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsConnection")] + pub aws_connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub filter: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcpConnection")] + pub gcp_connection: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// MaxAge the latest object should be younger than defined age + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] + pub max_age: Option, + /// MinCount the minimum number of files inside the searchPath + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxCount")] + pub max_count: Option, + /// MaxSize of the files inside the searchPath + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxSize")] + pub max_size: Option, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// MinAge the latest object should be older than defined age + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minAge")] + pub min_age: Option, + /// MinCount the minimum number of files inside the searchPath + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minCount")] + pub min_count: Option, + /// MinSize of the files inside the searchPath + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minSize")] + pub min_size: Option, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Path to folder or object storage, e.g. `s3://`, `gcs://`, `/path/tp/folder` + pub path: String, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sftpConnection")] + pub sftp_connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "smbConnection")] + pub smb_connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + /// TotalSize present on the filesystem + #[serde(default, skip_serializing_if = "Option::is_none", rename = "totalSize")] + pub total_size: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnection { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionAccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionAccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionAccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionAccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderAwsConnectionSessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderFilter { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] + pub max_age: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxSize")] + pub max_size: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minAge")] + pub min_age: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "minSize")] + pub min_size: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub regex: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub since: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderGcpConnection { + /// ConnectionName of the connection. It'll be used to populate the endpoint and credentials. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub credentials: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderGcpConnectionCredentials { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderGcpConnectionCredentialsValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderGcpConnectionCredentialsValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderGcpConnectionCredentialsValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnection { + /// ConnectionName of the connection. It'll be used to populate the connection fields. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + pub host: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// Port for the SSH server. Defaults to 22 + #[serde(default, skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSftpConnectionUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnection { + /// ConnectionName of the connection. It'll be used to populate the connection fields. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Domain... + #[serde(default, skip_serializing_if = "Option::is_none")] + pub domain: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// Port on which smb server is running. Defaults to 445 + #[serde(default, skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderSmbConnectionUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryFolderTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithub { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "githubToken")] + pub github_token: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Query to be executed. Please see https://github.com/askgitdev/askgit for more details regarding syntax + pub query: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubGithubToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubGithubTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubGithubTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubGithubTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryGithubTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelm { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub auth: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cafile: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub chartmuseum: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub project: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuth { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmAuthUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHelmMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttp { + /// Request Body Contents + #[serde(default, skip_serializing_if = "Option::is_none")] + pub body: Option, + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Deprecated: Use url instead + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// EnvVars are the environment variables that are accesible to templated body + #[serde(default, skip_serializing_if = "Option::is_none")] + pub env: Option>, + /// Header fields to be used in the query + #[serde(default, skip_serializing_if = "Option::is_none")] + pub headers: Option>, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Maximum number of days until the SSL Certificate expires. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxSSLExpiry")] + pub max_ssl_expiry: Option, + /// Method to use - defaults to GET + #[serde(default, skip_serializing_if = "Option::is_none")] + pub method: Option, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// NTLM when set to true will do authentication using NTLM v1 protocol + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ntlm: Option, + /// NTLM when set to true will do authentication using NTLM v2 protocol + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ntlmv2: Option, + /// Oauth2 Configuration. The client ID & Client secret should go to username & password respectively. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub oauth2: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// Expected response codes for the HTTP Request. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "responseCodes")] + pub response_codes: Option>, + /// Exact response content expected to be returned by the endpoint. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "responseContent")] + pub response_content: Option, + /// Deprecated, use expr and jsonpath function + #[serde(default, skip_serializing_if = "Option::is_none", rename = "responseJSONContent")] + pub response_json_content: Option, + /// Template the request body + #[serde(default, skip_serializing_if = "Option::is_none", rename = "templateBody")] + pub template_body: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + /// Maximum duration in milliseconds for the HTTP request. It will fail the check if it takes longer. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "thresholdMillis")] + pub threshold_millis: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpEnv { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpEnvValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpEnvValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpEnvValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpHeaders { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpHeadersValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpHeadersValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpHeadersValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +/// Oauth2 Configuration. The client ID & Client secret should go to username & password respectively. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpOauth2 { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub params: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub scope: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "tokenURL")] + pub token_url: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +/// Deprecated, use expr and jsonpath function +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpResponseJsonContent { + pub path: String, + pub value: String, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryHttpUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryIcmp { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "packetCount")] + pub packet_count: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "packetLossThreshold")] + pub packet_loss_threshold: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "thresholdMillis")] + pub threshold_millis: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryIcmpMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryIcmpMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeter { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Host is the server against which test plan needs to be executed + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Jmx defines the ConfigMap or Secret reference to get the JMX test plan + pub jmx: CanaryJmeterJmx, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Port on which the server is running + #[serde(default, skip_serializing_if = "Option::is_none")] + pub port: Option, + /// Properties defines the local Jmeter properties + #[serde(default, skip_serializing_if = "Option::is_none")] + pub properties: Option>, + /// ResponseDuration under which the all the test should pass + #[serde(default, skip_serializing_if = "Option::is_none", rename = "responseDuration")] + pub response_duration: Option, + /// SystemProperties defines the java system property + #[serde(default, skip_serializing_if = "Option::is_none", rename = "systemProperties")] + pub system_properties: Option>, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +/// Jmx defines the ConfigMap or Secret reference to get the JMX test plan +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeterJmx { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeterJmxValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeterJmxValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeterJmxValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeterMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJmeterMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJunit { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + pub spec: BTreeMap, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(rename = "testResults")] + pub test_results: String, + /// Timeout in minutes to wait for specified container to finish its job. Defaults to 5 minutes + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timeout: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJunitDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJunitMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJunitMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJunitTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryJunitTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetes { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Ignore the specified resources from the fetched resources. Can be a glob pattern. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ignore: Option>, + pub kind: String, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ready: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resource: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesResource { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldSelector")] + pub field_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryKubernetesTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdap { + #[serde(rename = "bindDN")] + pub bind_dn: String, + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "userSearch")] + pub user_search: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryLdapUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodb { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMongodbUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssql { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub query: Option, + /// Number rows to check for + #[serde(default, skip_serializing_if = "Option::is_none")] + pub results: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMssqlUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysql { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub query: Option, + /// Number rows to check for + #[serde(default, skip_serializing_if = "Option::is_none")] + pub results: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryMysqlUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryNamespace { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub deadline: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "deleteTimeout")] + pub delete_timeout: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedContent")] + pub expected_content: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedHttpStatuses")] + pub expected_http_statuses: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpRetryInterval")] + pub http_retry_interval: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpTimeout")] + pub http_timeout: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressHost")] + pub ingress_host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressName")] + pub ingress_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressTimeout")] + pub ingress_timeout: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceAnnotations")] + pub namespace_annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceLabels")] + pub namespace_labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceNamePrefix")] + pub namespace_name_prefix: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(rename = "podSpec")] + pub pod_spec: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "priorityClass")] + pub priority_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyTimeout")] + pub ready_timeout: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub schedule_timeout: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryNamespaceMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryNamespaceMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearch { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + pub index: String, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + pub query: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub results: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryOpensearchUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPod { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub deadline: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "deleteTimeout")] + pub delete_timeout: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedContent")] + pub expected_content: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedHttpStatuses")] + pub expected_http_statuses: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpRetryInterval")] + pub http_retry_interval: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpTimeout")] + pub http_timeout: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressClass")] + pub ingress_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressHost")] + pub ingress_host: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressName")] + pub ingress_name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressTimeout")] + pub ingress_timeout: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub port: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "priorityClass")] + pub priority_class: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyTimeout")] + pub ready_timeout: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "roundRobinNodes")] + pub round_robin_nodes: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "scheduleTimeout")] + pub schedule_timeout: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub spec: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPodMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPodMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgres { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub query: Option, + /// Number rows to check for + #[serde(default, skip_serializing_if = "Option::is_none")] + pub results: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPostgresUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheus { + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Deprecated: use `url` instead + #[serde(default, skip_serializing_if = "Option::is_none")] + pub host: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// PromQL query + pub query: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryPrometheusUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedis { + /// Deprecated: Use url instead + #[serde(default, skip_serializing_if = "Option::is_none")] + pub addr: Option, + /// Connection name e.g. connection://http/google + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub db: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub password: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Connection url, interpolated with username,password + #[serde(default, skip_serializing_if = "Option::is_none")] + pub url: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub username: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisUsername { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisUsernameValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisUsernameValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRedisUsernameValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryRestic { + /// AccessKey access key id for connection with aws s3, minio, wasabi, alibaba oss + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + /// Name of the AWS connection used to derive the access key and secret key. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsConnectionName")] + pub aws_connection_name: Option, + /// CaCert path to the root cert. In case of self-signed certificates + #[serde(default, skip_serializing_if = "Option::is_none", rename = "caCert")] + pub ca_cert: Option, + /// CheckIntegrity when enabled will check the Integrity and consistency of the restic reposiotry + #[serde(default, skip_serializing_if = "Option::is_none", rename = "checkIntegrity")] + pub check_integrity: Option, + /// Name of the connection used to derive restic password. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// MaxAge for backup freshness + #[serde(rename = "maxAge")] + pub max_age: String, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Password for the restic repository + pub password: CanaryResticPassword, + /// Repository The restic repository path eg: rest:https://user:pass@host:8000/ or rest:https://host:8000/ or s3:s3.amazonaws.com/bucket_name + pub repository: String, + /// SecretKey secret access key for connection with aws s3, minio, wasabi, alibaba oss + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +/// AccessKey access key id for connection with aws s3, minio, wasabi, alibaba oss +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticAccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticAccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticAccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticAccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +/// Password for the restic repository +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticPassword { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticPasswordValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticPasswordValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticPasswordValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +/// SecretKey secret access key for connection with aws s3, minio, wasabi, alibaba oss +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticSecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticSecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticSecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryResticSecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3 { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessKey")] + pub access_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "bucketName")] + pub bucket_name: Option, + /// ConnectionName of the connection. It'll be used to populate the endpoint, accessKey and secretKey. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub connection: Option, + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// glob path to restrict matches to a subset + #[serde(default, skip_serializing_if = "Option::is_none", rename = "objectPath")] + pub object_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub region: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKey")] + pub secret_key: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionToken")] + pub session_token: Option, + /// Skip TLS verify when connecting to aws + #[serde(default, skip_serializing_if = "Option::is_none", rename = "skipTLSVerify")] + pub skip_tls_verify: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, + /// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY + #[serde(default, skip_serializing_if = "Option::is_none", rename = "usePathStyle")] + pub use_path_style: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3AccessKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3AccessKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3AccessKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3AccessKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3Metrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3MetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SecretKey { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SecretKeyValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SecretKeyValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SecretKeyValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SessionToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SessionTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SessionTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryS3SessionTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryTcp { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "thresholdMillis")] + pub threshold_millis: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryTcpMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryTcpMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhook { + /// Description for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub description: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub display: Option, + /// Icon for overwriting default icon on the dashboard + #[serde(default, skip_serializing_if = "Option::is_none")] + pub icon: Option, + /// Labels for the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + /// Metrics to expose from check results + #[serde(default, skip_serializing_if = "Option::is_none")] + pub metrics: Option>, + /// Name of the check + pub name: String, + /// Namespace of the check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub test: Option, + /// Token is an optional authorization token to run this check + #[serde(default, skip_serializing_if = "Option::is_none")] + pub token: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub transform: Option, + /// Transformed checks have a delete strategy on deletion they can either be marked healthy, unhealthy or left as is + #[serde(default, skip_serializing_if = "Option::is_none", rename = "transformDeleteStrategy")] + pub transform_delete_strategy: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookDisplay { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookMetrics { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] + pub r#type: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookMetricsLabels { + pub name: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueExpr")] + pub value_expr: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookTest { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +/// Token is an optional authorization token to run this check +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookToken { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookTokenValueFrom { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookTokenValueFromConfigMapKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookTokenValueFromSecretKeyRef { + pub key: String, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryWebhookTransform { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub expr: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub javascript: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "jsonPath")] + pub json_path: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +/// CanaryStatus defines the observed state of Canary +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "checkStatus")] + pub check_status: Option>, + /// contains the name and id of the checks associated with the canary + #[serde(default, skip_serializing_if = "Option::is_none")] + pub checks: Option>, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "errorMessage")] + pub error_message: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastCheck")] + pub last_check: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionedTime")] + pub last_transitioned_time: Option, + /// Average latency to complete all checks + #[serde(default, skip_serializing_if = "Option::is_none")] + pub latency1h: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistedID")] + pub persisted_id: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub status: Option, + /// Availibility over a rolling 1h period + #[serde(default, skip_serializing_if = "Option::is_none")] + pub uptime1h: Option, +} + +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CanaryStatusCheckStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "errorMessage")] + pub error_message: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastCheck")] + pub last_check: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastTransitionedTime")] + pub last_transitioned_time: Option, + /// Average latency to complete all checks + #[serde(default, skip_serializing_if = "Option::is_none")] + pub latency1h: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + /// Availibility over a rolling 1h period + #[serde(default, skip_serializing_if = "Option::is_none")] + pub uptime1h: Option, +} + diff --git a/kube-custom-resources-rs/src/canaries_flanksource_com/v1/mod.rs b/kube-custom-resources-rs/src/canaries_flanksource_com/v1/mod.rs new file mode 100644 index 000000000..c7ee02204 --- /dev/null +++ b/kube-custom-resources-rs/src/canaries_flanksource_com/v1/mod.rs @@ -0,0 +1 @@ +pub mod canaries; diff --git a/kube-custom-resources-rs/src/lib.rs b/kube-custom-resources-rs/src/lib.rs index 000926183..1ca0d87b2 100644 --- a/kube-custom-resources-rs/src/lib.rs +++ b/kube-custom-resources-rs/src/lib.rs @@ -467,6 +467,12 @@ Every group has its own feature in this crate. The available features are as fol - kinds: - `Kamelet` +## canaries_flanksource_com + +- apiVersion: `canaries.flanksource.com/v1` +- kinds: + - `Canary` + ## capsule_clastix_io - apiVersion: `capsule.clastix.io/v1alpha1` @@ -2716,6 +2722,8 @@ pub mod cache_kubedl_io; pub mod caching_ibm_com; #[cfg(feature = "camel_apache_org")] pub mod camel_apache_org; +#[cfg(feature = "canaries_flanksource_com")] +pub mod canaries_flanksource_com; #[cfg(feature = "capsule_clastix_io")] pub mod capsule_clastix_io; #[cfg(feature = "ceph_rook_io")]