--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.18.0 name: techsupports.lib.projectsveltos.io spec: group: lib.projectsveltos.io names: kind: Techsupport listKind: TechsupportList plural: techsupports singular: techsupport scope: Cluster versions: - name: v1beta1 schema: openAPIV3Schema: description: Techsupport is the Schema for the techsupport 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: TechsupportSpec defines the desired state of Techsupport properties: deliveryMethods: description: Notification is a list of delivery mechanisms. items: properties: name: description: |- Name of the delivery mechanism. Must be a DNS_LABEL and unique within the TechsupportSpec. type: string secretRef: description: |- SecretRef is a reference to a delivery mechanism-specific Secret that holds the details for the delivery. properties: name: description: name is unique within a namespace to reference a secret resource. type: string namespace: description: namespace defines the space within which the secret name must be unique. type: string type: object x-kubernetes-map-type: atomic type: description: DeliveryType specifies the type of notification enum: - Slack - Webex - Discord - Telegram - SMTP - SFTP type: string required: - name - type type: object type: array fromManaged: description: |- FromManaged specifies which resources and logs to collect from matching managed cluster. properties: clusterRefs: description: ClusterRefs identifies clusters to collect techsupport from. items: description: ObjectReference contains enough information to let you inspect or modify the referred object. properties: apiVersion: description: API version of the referent. type: string fieldPath: description: |- If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. type: string kind: description: |- Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string name: description: |- Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string namespace: description: |- Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ type: string resourceVersion: description: |- Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency type: string uid: description: |- UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids type: string type: object x-kubernetes-map-type: atomic type: array clusterSelector: description: ClusterSelector identifies clusters to collect techsupport from. properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: description: |- operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: description: |- values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array x-kubernetes-list-type: atomic required: - key - operator type: object type: array x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string description: |- matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic events: description: Events indicates what events to collect items: properties: namespace: description: |- Namespace of the events. An empty string "" indicates all namespaces. type: string type: description: Type filters events based on the type of the events (Normal, Warning), enum: - Normal - Warning type: string type: object type: array logs: description: Logs indicates what pods' log to collect items: description: LogFilter allows to select which logs to collect properties: labelFilters: description: LabelFilters allows to filter pods based on current labels. items: properties: key: description: Key is the label key type: string operation: description: Operation is the comparison operation enum: - Equal - Different - Has - DoesNotHave type: string value: description: Value is the label value type: string required: - key - operation type: object type: array name: description: Name of the pods deployed in the Cluster. type: string namespace: description: |- Namespace of the pods deployed in the Cluster. An empty string "" indicates all namespaces. type: string sinceSeconds: description: |- A relative time in seconds before the current time from which to collect logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. format: int64 type: integer type: object type: array resources: description: Resources indicates what resorces to collect items: description: ResourceSelector defines what resources are a match properties: evaluate: description: |- Evaluate contains a function "evaluate" in lua language. The function will be passed one of the object selected based on above criteria. Must return struct with field "matching" representing whether object is a match and an optional "message" field. type: string evaluateCEL: description: |- EvaluateCEL contains a list of named CEL (Common Expression Language) rules. Each rule will be evaluated in order against each object selected based on the criteria defined above. Each rule's expression must return a boolean value indicating whether the object is a match. Evaluation stops at the first rule that returns true; subsequent rules will not be evaluated. items: description: CELRule defines a named CEL rule used in EvaluateCEL. properties: name: description: Name is a human-readable identifier for the rule. type: string rule: description: |- Rule is the CEL (Common Expression Language) expression to evaluate. It must return a bool type: string required: - name - rule type: object type: array group: description: Group of the resource deployed in the Cluster. type: string kind: description: Kind of the resource deployed in the Cluster. minLength: 1 type: string labelFilters: description: LabelFilters allows to filter resources based on current labels. items: properties: key: description: Key is the label key type: string operation: description: Operation is the comparison operation enum: - Equal - Different - Has - DoesNotHave type: string value: description: Value is the label value type: string required: - key - operation type: object type: array name: description: Name of the resource deployed in the Cluster. type: string namespace: description: |- Namespace of the resource deployed in the Cluster. Empty for resources scoped at cluster level. For namespaced resources, an empty string "" indicates all namespaces. type: string version: description: Version of the resource deployed in the Cluster. type: string required: - group - kind - version type: object type: array type: object fromManagement: description: |- FromManagement identifies which resources and logs to collect from the management cluster properties: events: description: Events indicates what events to collect items: properties: namespace: description: |- Namespace of the events. An empty string "" indicates all namespaces. type: string type: description: Type filters events based on the type of the events (Normal, Warning), enum: - Normal - Warning type: string type: object type: array logs: description: Logs indicates what pods' log to collect items: description: LogFilter allows to select which logs to collect properties: labelFilters: description: LabelFilters allows to filter pods based on current labels. items: properties: key: description: Key is the label key type: string operation: description: Operation is the comparison operation enum: - Equal - Different - Has - DoesNotHave type: string value: description: Value is the label value type: string required: - key - operation type: object type: array name: description: Name of the pods deployed in the Cluster. type: string namespace: description: |- Namespace of the pods deployed in the Cluster. An empty string "" indicates all namespaces. type: string sinceSeconds: description: |- A relative time in seconds before the current time from which to collect logs. If this value precedes the time a pod was started, only logs since the pod start will be returned. format: int64 type: integer type: object type: array resources: description: Resources indicates what resorces to collect items: description: ResourceSelector defines what resources are a match properties: evaluate: description: |- Evaluate contains a function "evaluate" in lua language. The function will be passed one of the object selected based on above criteria. Must return struct with field "matching" representing whether object is a match and an optional "message" field. type: string evaluateCEL: description: |- EvaluateCEL contains a list of named CEL (Common Expression Language) rules. Each rule will be evaluated in order against each object selected based on the criteria defined above. Each rule's expression must return a boolean value indicating whether the object is a match. Evaluation stops at the first rule that returns true; subsequent rules will not be evaluated. items: description: CELRule defines a named CEL rule used in EvaluateCEL. properties: name: description: Name is a human-readable identifier for the rule. type: string rule: description: |- Rule is the CEL (Common Expression Language) expression to evaluate. It must return a bool type: string required: - name - rule type: object type: array group: description: Group of the resource deployed in the Cluster. type: string kind: description: Kind of the resource deployed in the Cluster. minLength: 1 type: string labelFilters: description: LabelFilters allows to filter resources based on current labels. items: properties: key: description: Key is the label key type: string operation: description: Operation is the comparison operation enum: - Equal - Different - Has - DoesNotHave type: string value: description: Value is the label value type: string required: - key - operation type: object type: array name: description: Name of the resource deployed in the Cluster. type: string namespace: description: |- Namespace of the resource deployed in the Cluster. Empty for resources scoped at cluster level. For namespaced resources, an empty string "" indicates all namespaces. type: string version: description: Version of the resource deployed in the Cluster. type: string required: - group - kind - version type: object type: array type: object onDemand: description: OnDemand indicates if tech support should be collected immediately. type: boolean schedulingConfig: description: |- SchedulingConfig defines a schedule options for recurring tech support collections. properties: schedule: description: Schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. type: string startingDeadlineSeconds: description: |- Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones. format: int64 type: integer required: - schedule type: object required: - deliveryMethods type: object status: description: TechsupportStatus defines the observed state of Techsupport properties: failureMessage: description: |- FailureMessage provides more information about the error, if any occurred type: string hash: description: |- Hash represents of a unique value for techsupport Spec at a fixed point in time format: byte type: string lastRunStatus: description: Status indicates what happened to last techsupport collection. enum: - Collected - InProgress - Failed type: string lastRunTime: description: Information when was the last time a techsupport was successfully scheduled. format: date-time type: string nextScheduleTime: description: Information when next techsupport is scheduled format: date-time type: string type: object type: object served: true storage: true subresources: status: {}