diff --git a/go.mod b/go.mod index f3fe4ae25..2090457e4 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/openshift/api v0.0.0-20250311085700-14a17c7009c4 github.com/openshift/client-go v0.0.0-20250131180035-f7ec47e2d87a github.com/operator-framework/api v0.32.0 - github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.84.0 github.com/prometheus/client_golang v1.22.0 github.com/regclient/regclient v0.8.3 github.com/sirupsen/logrus v1.9.3 @@ -150,10 +150,10 @@ require ( golang.org/x/crypto v0.39.0 // indirect golang.org/x/net v0.41.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 // indirect + golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/text v0.27.0 // indirect golang.org/x/time v0.12.0 // indirect golang.org/x/tools v0.34.0 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index f305e0e58..03c5e6b98 100644 --- a/go.sum +++ b/go.sum @@ -303,8 +303,8 @@ github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 h1:mSii7z+TihzdeULnGjLnNikgtDbeViY/wW8s3430rhE= -github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0/go.mod h1:YfnEQzw7tUQa0Sjiz8V6QFc6JUGE+i5wybsjc3EOKn8= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.84.0 h1:V/HLst0rSw4BZp8nIqhaTnnW4/EGxEoYbgjcDqzPJ5U= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.84.0/go.mod h1:MruMqbSS9aYrKhBImrO9X9g52hwz3I0B+tcoeAwkmuM= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= @@ -435,8 +435,8 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -453,8 +453,8 @@ golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/alertmanager_types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/alertmanager_types.go index 7f16918a8..94a94c633 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/alertmanager_types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/alertmanager_types.go @@ -103,7 +103,7 @@ type AlertmanagerSpec struct { BaseImage string `json:"baseImage,omitempty"` // An optional list of references to secrets in the same namespace // to use for pulling prometheus and alertmanager images from registries - // see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod + // see https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ImagePullSecrets []v1.LocalObjectReference `json:"imagePullSecrets,omitempty"` // Secrets is a list of Secrets in the same namespace as the Alertmanager // object, which shall be mounted into the Alertmanager Pods. @@ -276,6 +276,8 @@ type AlertmanagerSpec struct { HostAliases []HostAlias `json:"hostAliases,omitempty"` // Defines the web command line flags when starting Alertmanager. Web *AlertmanagerWebSpec `json:"web,omitempty"` + // Defines the limits command line flags when starting Alertmanager. + Limits *AlertmanagerLimitsSpec `json:"limits,omitempty"` // Configures the mutual TLS configuration for the Alertmanager cluster's gossip protocol. // // It requires Alertmanager >= 0.24.0. @@ -302,6 +304,23 @@ type AlertmanagerSpec struct { // It requires Alertmanager >= 0.27.0. // +optional EnableFeatures []string `json:"enableFeatures,omitempty"` + // AdditionalArgs allows setting additional arguments for the 'Alertmanager' container. + // It is intended for e.g. activating hidden flags which are not supported by + // the dedicated configuration options yet. The arguments are passed as-is to the + // Alertmanager container which may cause issues if they are invalid or not supported + // by the given Alertmanager version. + // +optional + AdditionalArgs []Argument `json:"additionalArgs,omitempty"` + + // Optional duration in seconds the pod needs to terminate gracefully. + // Value must be non-negative integer. The value zero indicates stop immediately via + // the kill signal (no opportunity to shut down) which may lead to data corruption. + // + // Defaults to 120 seconds. + // + // +kubebuilder:validation:Minimum:=0 + // +optional + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` } type AlertmanagerConfigMatcherStrategy struct { @@ -311,7 +330,7 @@ type AlertmanagerConfigMatcherStrategy struct { // // The default value is `OnNamespace`. // - // +kubebuilder:validation:Enum="OnNamespace";"None" + // +kubebuilder:validation:Enum="OnNamespace";"OnNamespaceExceptForAlertmanagerNamespace";"None" // +kubebuilder:default:="OnNamespace" Type AlertmanagerConfigMatcherStrategyType `json:"type,omitempty"` } @@ -324,6 +343,12 @@ const ( // label equal to the namespace of the object. OnNamespaceConfigMatcherStrategyType AlertmanagerConfigMatcherStrategyType = "OnNamespace" + // With `OnNamespaceExceptForAlertmanagerNamespace`, the route and inhibition rules of an + // AlertmanagerConfig object only process alerts that have a `namespace` + // label equal to the namespace of the object, unless the AlertmanagerConfig object + // is in the same namespace as the Alertmanager object, where it will process all alerts. + OnNamespaceExceptForAlertmanagerNamespaceConfigMatcherStrategyType AlertmanagerConfigMatcherStrategyType = "OnNamespaceExceptForAlertmanagerNamespace" + // With `None`, the route and inhbition rules of an AlertmanagerConfig // object process all incoming alerts. NoneConfigMatcherStrategyType AlertmanagerConfigMatcherStrategyType = "None" @@ -371,6 +396,25 @@ type AlertmanagerGlobalConfig struct { // The default Pagerduty URL. PagerdutyURL *string `json:"pagerdutyUrl,omitempty"` + + // The default Telegram config + TelegramConfig *GlobalTelegramConfig `json:"telegram,omitempty"` + + // The default configuration for Jira. + JiraConfig *GlobalJiraConfig `json:"jira,omitempty"` + + // The default configuration for VictorOps. + VictorOpsConfig *GlobalVictorOpsConfig `json:"victorops,omitempty"` + + // The default configuration for Rocket Chat. + RocketChatConfig *GlobalRocketChatConfig `json:"rocketChat,omitempty"` + + // The default configuration for Jira. + WebexConfig *GlobalWebexConfig `json:"webex,omitempty"` + + // The default WeChat Config + // +optional + WeChatConfig *GlobalWeChatConfig `json:"wechat,omitempty"` } // AlertmanagerStatus is the most recent observed status of the Alertmanager cluster. Read-only. @@ -427,6 +471,24 @@ type AlertmanagerWebSpec struct { Timeout *uint32 `json:"timeout,omitempty"` } +// AlertmanagerLimitsSpec defines the limits command line flags when starting Alertmanager. +// +k8s:openapi-gen=true +type AlertmanagerLimitsSpec struct { + // The maximum number active and pending silences. This corresponds to the + // Alertmanager's `--silences.max-silences` flag. + // It requires Alertmanager >= v0.28.0. + // + // +kubebuilder:validation:Minimum:=0 + // +optional + MaxSilences *int32 `json:"maxSilences,omitempty"` + // The maximum size of an individual silence as stored on disk. This corresponds to the Alertmanager's + // `--silences.max-per-silence-bytes` flag. + // It requires Alertmanager >= v0.28.0. + // + // +optional + MaxPerSilenceBytes *ByteSize `json:"maxPerSilenceBytes,omitempty"` +} + // GlobalSMTPConfig configures global SMTP parameters. // See https://prometheus.io/docs/alerting/latest/configuration/#configuration-file type GlobalSMTPConfig struct { @@ -462,6 +524,92 @@ type GlobalSMTPConfig struct { // Note that Go does not support unencrypted connections to remote SMTP endpoints. // +optional RequireTLS *bool `json:"requireTLS,omitempty"` + + // The default TLS configuration for SMTP receivers + // +optional + TLSConfig *SafeTLSConfig `json:"tlsConfig,omitempty"` +} + +// GlobalTelegramConfig configures global Telegram parameters. +type GlobalTelegramConfig struct { + // The default Telegram API URL. + // + // It requires Alertmanager >= v0.24.0. + // +optional + APIURL *URL `json:"apiURL,omitempty"` +} + +// GlobalJiraConfig configures global Jira parameters. +type GlobalJiraConfig struct { + // The default Jira API URL. + // + // It requires Alertmanager >= v0.28.0. + // + // +optional + APIURL *URL `json:"apiURL,omitempty"` +} + +// GlobalRocketChatConfig configures global Rocket Chat parameters. +type GlobalRocketChatConfig struct { + // The default Rocket Chat API URL. + // + // It requires Alertmanager >= v0.28.0. + // + // +optional + APIURL *URL `json:"apiURL,omitempty"` + + // The default Rocket Chat token. + // + // It requires Alertmanager >= v0.28.0. + // + // +optional + Token *v1.SecretKeySelector `json:"token,omitempty"` + + // The default Rocket Chat Token ID. + // + // It requires Alertmanager >= v0.28.0. + // + // +optional + TokenID *v1.SecretKeySelector `json:"tokenID,omitempty"` +} + +// GlobalWebexConfig configures global Webex parameters. +// See https://prometheus.io/docs/alerting/latest/configuration/#configuration-file +type GlobalWebexConfig struct { + // The default Webex API URL. + // + // It requires Alertmanager >= v0.25.0. + // + // +optional + APIURL *URL `json:"apiURL,omitempty"` +} + +type GlobalWeChatConfig struct { + // The default WeChat API URL. + // The default value is "https://qyapi.weixin.qq.com/cgi-bin/" + // +optional + APIURL *URL `json:"apiURL,omitempty"` + + // The default WeChat API Secret. + // +optional + APISecret *v1.SecretKeySelector `json:"apiSecret,omitempty"` + + // The default WeChat API Corporate ID. + // +optional + // +kubebuilder:validation:MinLength=1 + APICorpID *string `json:"apiCorpID,omitempty"` +} + +// GlobalVictorOpsConfig configures global VictorOps parameters. +type GlobalVictorOpsConfig struct { + // The default VictorOps API URL. + // + // +optional + APIURL *URL `json:"apiURL,omitempty"` + // The default VictorOps API Key. + // + // +optional + APIKey *v1.SecretKeySelector `json:"apiKey,omitempty"` } // HostPort represents a "host:port" network address. @@ -531,3 +679,7 @@ type ClusterTLSConfig struct { // +required ClientTLS SafeTLSConfig `json:"client"` } + +// URL represents a valid URL +// +kubebuilder:validation:Pattern:="^(http|https)://.+$" +type URL string diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/podmonitor_types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/podmonitor_types.go index 17ee448fb..ee0f25086 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/podmonitor_types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/podmonitor_types.go @@ -318,11 +318,8 @@ type PodMetricsEndpoint struct { // +optional RelabelConfigs []RelabelConfig `json:"relabelings,omitempty"` - // `proxyURL` configures the HTTP Proxy URL (e.g. - // "http://proxyserver:2195") to go through when scraping the target. - // // +optional - ProxyURL *string `json:"proxyUrl,omitempty"` + ProxyConfig `json:",inline"` // `followRedirects` defines whether the scrape requests should follow HTTP // 3xx redirects. diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/probe_types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/probe_types.go index 208de742f..c565b7d9b 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/probe_types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/probe_types.go @@ -215,8 +215,9 @@ type ProberSpec struct { // Defaults to `/probe`. // +kubebuilder:default:="/probe" Path string `json:"path,omitempty"` - // Optional ProxyURL. - ProxyURL string `json:"proxyUrl,omitempty"` + + // +optional + ProxyConfig `json:",inline"` } // ProbeList is a list of Probes. diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/prometheus_types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/prometheus_types.go index dc570c461..d4a6b79a5 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/prometheus_types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/prometheus_types.go @@ -265,7 +265,9 @@ type CommonPrometheusFields struct { // `__tmp_hash` label during the target discovery with relabeling // configuration (either in the monitoring resources or via scrape class). // - // +optional + // You can also disable sharding on a specific target by setting the + // `__tmp_disable_sharding` label with relabeling configuration. When + // the label value isn't empty, all Prometheus shards will scrape the target. Shards *int32 `json:"shards,omitempty"` // Name of Prometheus external label used to denote the replica name. @@ -691,9 +693,35 @@ type CommonPrometheusFields struct { EnforcedBodySizeLimit ByteSize `json:"enforcedBodySizeLimit,omitempty"` // Specifies the validation scheme for metric and label names. + // + // It requires Prometheus >= v2.55.0. + // // +optional NameValidationScheme *NameValidationSchemeOptions `json:"nameValidationScheme,omitempty"` + // Specifies the character escaping scheme that will be requested when scraping + // for metric and label names that do not conform to the legacy Prometheus + // character set. + // + // It requires Prometheus >= v3.4.0. + // + // +optional + NameEscapingScheme *NameEscapingSchemeOptions `json:"nameEscapingScheme,omitempty"` + + // Whether to convert all scraped classic histograms into a native + // histogram with custom buckets. + // + // It requires Prometheus >= v3.4.0. + // + // +optional + ConvertClassicHistogramsToNHCB *bool `json:"convertClassicHistogramsToNHCB,omitempty"` + + // Whether to scrape a classic histogram that is also exposed as a native histogram. + // It requires Prometheus >= v3.5.0. + // + // +optional + ScrapeClassicHistograms *bool `json:"scrapeClassicHistograms,omitempty"` + // Minimum number of seconds for which a newly created Pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) @@ -746,7 +774,7 @@ type CommonPrometheusFields struct { // Use the host's network namespace if true. // // Make sure to understand the security implications if you want to enable - // it (https://kubernetes.io/docs/concepts/configuration/overview/). + // it (https://kubernetes.io/docs/concepts/configuration/overview/ ). // // When hostNetwork is enabled, this will set the DNS policy to // `ClusterFirstWithHostNet` automatically (unless `.spec.DNSPolicy` is set @@ -887,14 +915,28 @@ type CommonPrometheusFields struct { // RuntimeConfig configures the values for the Prometheus process behavior // +optional Runtime *RuntimeConfig `json:"runtime,omitempty"` + + // Optional duration in seconds the pod needs to terminate gracefully. + // Value must be non-negative integer. The value zero indicates stop immediately via + // the kill signal (no opportunity to shut down) which may lead to data corruption. + // + // Defaults to 600 seconds. + // + // +kubebuilder:validation:Minimum:=0 + // +optional + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` } // Specifies the validation scheme for metric and label names. +// // Supported values are: -// * `UTF8NameValidationScheme` for UTF-8 support. -// * `LegacyNameValidationScheme` for letters, numbers, colons, and underscores. +// - `UTF8NameValidationScheme` for UTF-8 support. +// - `LegacyNameValidationScheme` for letters, numbers, colons, and underscores. +// +// Note that `LegacyNameValidationScheme` cannot be used along with the +// OpenTelemetry `NoUTF8EscapingWithSuffixes` translation strategy (if +// enabled). // -// Note that `LegacyNameValidationScheme` cannot be used along with the OpenTelemetry `NoUTF8EscapingWithSuffixes` translation strategy (if enabled). // +kubebuilder:validation:Enum=UTF8;Legacy type NameValidationSchemeOptions string @@ -903,6 +945,29 @@ const ( LegacyNameValidationScheme NameValidationSchemeOptions = "Legacy" ) +// Specifies the character escaping scheme that will be applied when scraping +// for metric and label names that do not conform to the legacy Prometheus +// character set. +// +// Supported values are: +// +// - `AllowUTF8`, full UTF-8 support, no escaping needed. +// - `Underscores`, legacy-invalid characters are escaped to underscores. +// - `Dots`, dot characters are escaped to `_dot_`, underscores to `__`, and +// all other legacy-invalid characters to underscores. +// - `Values`, the string is prefixed by `U__` and all invalid characters are +// escaped to their unicode value, surrounded by underscores. +// +// +kubebuilder:validation:Enum=AllowUTF8;Underscores;Dots;Values +type NameEscapingSchemeOptions string + +const ( + AllowUTF8NameEscapingScheme NameEscapingSchemeOptions = "AllowUTF8" + UnderscoresNameEscapingScheme NameEscapingSchemeOptions = "Underscores" + DotsNameEscapingScheme NameEscapingSchemeOptions = "Dots" + ValuesNameEscapingScheme NameEscapingSchemeOptions = "Values" +) + // +kubebuilder:validation:Enum=HTTP;ProcessSignal type ReloadStrategyType string @@ -1149,6 +1214,11 @@ var ( DeleteWhenScaledRetentionType WhenScaledRetentionType = "Delete" ) +type RetainConfig struct { + // +required + RetentionPeriod Duration `json:"retentionPeriod"` +} + type ShardRetentionPolicy struct { // Defines the retention policy when the Prometheus shards are scaled down. // * `Delete`, the operator will delete the pods from the scaled-down shard(s). @@ -1158,6 +1228,10 @@ type ShardRetentionPolicy struct { // +kubebuilder:validation:Enum=Retain;Delete // +optional WhenScaled *WhenScaledRetentionType `json:"whenScaled,omitempty"` + // Defines the config for retention when the retention policy is set to `Retain`. + // This field is ineffective as of now. + // +optional + Retain *RetainConfig `json:"retain,omitempty"` } type PrometheusTracingConfig struct { @@ -1461,7 +1535,7 @@ type RemoteWriteSpec struct { // The name of the remote write queue, it must be unique if specified. The // name is used in metrics and logging in order to differentiate queues. // - // It requires Prometheus >= v2.15.0. + // It requires Prometheus >= v2.15.0 or Thanos >= 0.24.0. // //+optional Name *string `json:"name,omitempty"` @@ -1477,7 +1551,7 @@ type RemoteWriteSpec struct { // Before setting this field, consult with your remote storage provider // what message version it supports. // - // It requires Prometheus >= v2.54.0. + // It requires Prometheus >= v2.54.0 or Thanos >= v0.37.0. // // +optional MessageVersion *RemoteWriteMessageVersion `json:"messageVersion,omitempty"` @@ -1486,7 +1560,7 @@ type RemoteWriteSpec struct { // exemplar-storage itself must be enabled using the `spec.enableFeatures` // option for exemplars to be scraped in the first place. // - // It requires Prometheus >= v2.27.0. + // It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0. // // +optional SendExemplars *bool `json:"sendExemplars,omitempty"` @@ -1494,7 +1568,7 @@ type RemoteWriteSpec struct { // Enables sending of native histograms, also known as sparse histograms // over remote write. // - // It requires Prometheus >= v2.40.0. + // It requires Prometheus >= v2.40.0 or Thanos >= v0.30.0. // // +optional SendNativeHistograms *bool `json:"sendNativeHistograms,omitempty"` @@ -1506,7 +1580,7 @@ type RemoteWriteSpec struct { // Custom HTTP headers to be sent along with each remote write request. // Be aware that headers that are set by Prometheus itself can't be overwritten. // - // It requires Prometheus >= v2.25.0. + // It requires Prometheus >= v2.25.0 or Thanos >= v0.24.0. // // +optional Headers map[string]string `json:"headers,omitempty"` @@ -1517,7 +1591,7 @@ type RemoteWriteSpec struct { // OAuth2 configuration for the URL. // - // It requires Prometheus >= v2.27.0. + // It requires Prometheus >= v2.27.0 or Thanos >= v0.24.0. // // Cannot be set at the same time as `sigv4`, `authorization`, `basicAuth`, or `azureAd`. // +optional @@ -1537,7 +1611,7 @@ type RemoteWriteSpec struct { // Authorization section for the URL. // - // It requires Prometheus >= v2.26.0. + // It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0. // // Cannot be set at the same time as `sigv4`, `basicAuth`, `oauth2`, or `azureAd`. // @@ -1546,7 +1620,7 @@ type RemoteWriteSpec struct { // Sigv4 allows to configures AWS's Signature Verification 4 for the URL. // - // It requires Prometheus >= v2.26.0. + // It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0. // // Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `azureAd`. // @@ -1555,7 +1629,7 @@ type RemoteWriteSpec struct { // AzureAD for the URL. // - // It requires Prometheus >= v2.45.0. + // It requires Prometheus >= v2.45.0 or Thanos >= v0.31.0. // // Cannot be set at the same time as `authorization`, `basicAuth`, `oauth2`, or `sigv4`. // @@ -1578,7 +1652,7 @@ type RemoteWriteSpec struct { // Configure whether HTTP requests follow HTTP 3xx redirects. // - // It requires Prometheus >= v2.26.0. + // It requires Prometheus >= v2.26.0 or Thanos >= v0.24.0. // // +optional FollowRedirects *bool `json:"followRedirects,omitempty"` @@ -1606,7 +1680,7 @@ type RemoteWriteSpec struct { // Note: The connection timeout applies to the entire resolution and connection process. // If disabled, the timeout is distributed across all connection attempts. // - // It requires Prometheus >= v3.1.0. + // It requires Prometheus >= v3.1.0 or Thanos >= v0.38.0. // // +optional RoundRobinDNS *bool `json:"roundRobinDNS,omitempty"` @@ -1652,7 +1726,7 @@ type QueueConfig struct { // in a breaking way. RetryOnRateLimit bool `json:"retryOnRateLimit,omitempty"` // SampleAgeLimit drops samples older than the limit. - // It requires Prometheus >= v2.50.0. + // It requires Prometheus >= v2.50.0 or Thanos >= v0.32.0. // // +optional SampleAgeLimit *Duration `json:"sampleAgeLimit,omitempty"` @@ -1692,7 +1766,7 @@ type AzureAD struct { // OAuth defines the oauth config that is being used to authenticate. // Cannot be set at the same time as `managedIdentity` or `sdk`. // - // It requires Prometheus >= v2.48.0. + // It requires Prometheus >= v2.48.0 or Thanos >= v0.31.0. // // +optional OAuth *AzureOAuth `json:"oauth,omitempty"` @@ -1700,7 +1774,7 @@ type AzureAD struct { // See https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication // Cannot be set at the same time as `oauth` or `managedIdentity`. // - // It requires Prometheus >= 2.52.0. + // It requires Prometheus >= v2.52.0 or Thanos >= v0.36.0. // +optional SDK *AzureSDK `json:"sdk,omitempty"` } @@ -1924,6 +1998,10 @@ type APIServerConfig struct { // // Deprecated: this will be removed in a future release. BearerToken string `json:"bearerToken,omitempty"` + + // Optional ProxyConfig. + // +optional + ProxyConfig `json:",inline"` } // +kubebuilder:validation:Enum=v1;V1;v2;V2 @@ -2063,6 +2141,14 @@ type MetadataConfig struct { // Defines how frequently metric metadata is sent to the remote storage. SendInterval Duration `json:"sendInterval,omitempty"` + + // MaxSamplesPerSend is the maximum number of metadata samples per send. + // + // It requires Prometheus >= v2.29.0. + // + // +optional + // +kubebuilder:validation:Minimum=-1 + MaxSamplesPerSend *int32 `json:"maxSamplesPerSend,omitempty"` } type ShardStatus struct { @@ -2249,12 +2335,15 @@ type ScrapeClass struct { // Supported values are: // * `NoUTF8EscapingWithSuffixes` // * `UnderscoreEscapingWithSuffixes` -// +kubebuilder:validation:Enum=NoUTF8EscapingWithSuffixes;UnderscoreEscapingWithSuffixes +// * `NoTranslation` +// +kubebuilder:validation:Enum=NoUTF8EscapingWithSuffixes;UnderscoreEscapingWithSuffixes;NoTranslation type TranslationStrategyOption string const ( NoUTF8EscapingWithSuffixes TranslationStrategyOption = "NoUTF8EscapingWithSuffixes" UnderscoreEscapingWithSuffixes TranslationStrategyOption = "UnderscoreEscapingWithSuffixes" + // It requires Prometheus >= v3.4.0. + NoTranslation TranslationStrategyOption = "NoTranslation" ) // OTLPConfig is the configuration for writing to the OTLP endpoint. @@ -2281,4 +2370,9 @@ type OTLPConfig struct { // It requires Prometheus >= v3.1.0. // +optional KeepIdentifyingResourceAttributes *bool `json:"keepIdentifyingResourceAttributes,omitempty"` + + // Configures optional translation of OTLP explicit bucket histograms into native histograms with custom buckets. + // It requires Prometheus >= v3.4.0. + // +optional + ConvertHistogramsToNHCB *bool `json:"convertHistogramsToNHCB,omitempty"` } diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/servicemonitor_types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/servicemonitor_types.go index 6c739ea3b..250c4cdde 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/servicemonitor_types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/servicemonitor_types.go @@ -28,6 +28,7 @@ const ( // +genclient // +k8s:openapi-gen=true // +kubebuilder:resource:categories="prometheus-operator",shortName="smon" +// +kubebuilder:subresource:status // The `ServiceMonitor` custom resource definition (CRD) defines how `Prometheus` and `PrometheusAgent` can scrape metrics from a group of services. // Among other things, it allows to specify: @@ -43,6 +44,14 @@ type ServiceMonitor struct { // Specification of desired Service selection for target discovery by // Prometheus. Spec ServiceMonitorSpec `json:"spec"` + // This Status subresource is under active development and is updated only when the + // "StatusForConfigurationResources" feature gate is enabled. + // + // Most recent observed status of the ServiceMonitor. Read-only. + // More info: + // https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + // +optional + Status ConfigResourceStatus `json:"status,omitempty"` } // DeepCopyObject implements the runtime.Object interface. diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/thanos_types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/thanos_types.go index f71e43882..e282fa9f9 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/thanos_types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/thanos_types.go @@ -87,10 +87,12 @@ type ThanosRulerSpec struct { // Thanos container image URL. Image string `json:"image,omitempty"` + // Image pull policy for the 'thanos', 'init-config-reloader' and 'config-reloader' containers. // See https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy for more details. // +kubebuilder:validation:Enum="";Always;Never;IfNotPresent ImagePullPolicy v1.PullPolicy `json:"imagePullPolicy,omitempty"` + // An optional list of references to secrets in the same namespace // to use for pulling thanos images from registries // see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod @@ -116,9 +118,11 @@ type ThanosRulerSpec struct { // If specified, the pod's scheduling constraints. // +optional Affinity *v1.Affinity `json:"affinity,omitempty"` + // If specified, the pod's tolerations. // +optional Tolerations []v1.Toleration `json:"tolerations,omitempty"` + // If specified, the pod's topology spread constraints. // +optional TopologySpreadConstraints []v1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"` @@ -160,6 +164,7 @@ type ThanosRulerSpec struct { // Storage spec to specify how storage shall be used. // +optional Storage *StorageSpec `json:"storage,omitempty"` + // Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will // be appended to other volumes that are generated as a result of StorageSpec objects. // +optional @@ -282,8 +287,30 @@ type ThanosRulerSpec struct { // +kubebuilder:default:="15s" EvaluationInterval Duration `json:"evaluationInterval,omitempty"` - // Time duration ThanosRuler shall retain data for. Default is '24h', - // and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). + // Max time to tolerate prometheus outage for restoring "for" state of alert. + // It requires Thanos >= v0.30.0. + // +optional + RuleOutageTolerance *Duration `json:"ruleOutageTolerance,omitempty"` + + // The default rule group's query offset duration to use. + // It requires Thanos >= v0.38.0. + // +optional + RuleQueryOffset *Duration `json:"ruleQueryOffset,omitempty"` + + // How many rules can be evaluated concurrently. + // It requires Thanos >= v0.37.0. + // +kubebuilder:validation:Minimum=1 + // + // +optional + RuleConcurrentEval *int32 `json:"ruleConcurrentEval,omitempty"` + + // Time duration ThanosRuler shall retain data for. Default is '24h', and + // must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds + // seconds minutes hours days weeks years). + // + // The field has no effect when remote-write is configured since the Ruler + // operates in stateless mode. + // // +kubebuilder:default:="24h" Retention Duration `json:"retention,omitempty"` @@ -419,6 +446,25 @@ type ThanosRulerSpec struct { // Defines the configuration of the ThanosRuler web server. // +optional Web *ThanosRulerWebSpec `json:"web,omitempty"` + + // Defines the list of remote write configurations. + // + // When the list isn't empty, the ruler is configured with stateless mode. + // + // It requires Thanos >= 0.24.0. + // + // +optional + RemoteWrite []RemoteWriteSpec `json:"remoteWrite,omitempty"` + + // Optional duration in seconds the pod needs to terminate gracefully. + // Value must be non-negative integer. The value zero indicates stop immediately via + // the kill signal (no opportunity to shut down) which may lead to data corruption. + // + // Defaults to 120 seconds. + // + // +kubebuilder:validation:Minimum:=0 + // +optional + TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` } // ThanosRulerWebSpec defines the configuration of the ThanosRuler web server. diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/types.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/types.go index 8c4fff067..7d98c5fac 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/types.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/types.go @@ -17,6 +17,7 @@ package v1 import ( "errors" "fmt" + "net/url" "reflect" "strings" @@ -38,12 +39,22 @@ const ( // +kubebuilder:validation:Pattern:="(^0|([0-9]*[.])?[0-9]+((K|M|G|T|E|P)i?)?B)$" type ByteSize string +func (bs *ByteSize) IsEmpty() bool { + return bs == nil || *bs == "" +} + // Duration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function. // Supported units: y, w, d, h, m, s, ms // Examples: `30s`, `1m`, `1h20m15s`, `15d` // +kubebuilder:validation:Pattern:="^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$" type Duration string +// DurationPointer is a helper function to parse a Duration string into a *Duration. +func DurationPointer(s string) *Duration { + d := Duration(s) + return &d +} + // NonEmptyDuration is a valid time duration that can be parsed by Prometheus model.ParseDuration() function. // Compared to Duration, NonEmptyDuration enforces a minimum length of 1. // Supported units: y, w, d, h, m, s, ms @@ -82,25 +93,25 @@ type PrometheusRuleExcludeConfig struct { type ProxyConfig struct { // `proxyURL` defines the HTTP proxy server to use. // - // +kubebuilder:validation:Pattern:="^http(s)?://.+$" + // +kubebuilder:validation:Pattern:="^(http|https|socks5)://.+$" // +optional ProxyURL *string `json:"proxyUrl,omitempty"` // `noProxy` is a comma-separated string that can contain IPs, CIDR notation, domain names // that should be excluded from proxying. IP and domain names can // contain port numbers. // - // It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. + // It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0. // +optional NoProxy *string `json:"noProxy,omitempty"` // Whether to use the proxy configuration defined by environment variables (HTTP_PROXY, HTTPS_PROXY, and NO_PROXY). // - // It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. + // It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0. // +optional ProxyFromEnvironment *bool `json:"proxyFromEnvironment,omitempty"` // ProxyConnectHeader optionally specifies headers to send to // proxies during CONNECT requests. // - // It requires Prometheus >= v2.43.0 or Alertmanager >= 0.25.0. + // It requires Prometheus >= v2.43.0, Alertmanager >= v0.25.0 or Thanos >= v0.32.0. // +optional // +mapType:=atomic ProxyConnectHeader map[string][]v1.SecretKeySelector `json:"proxyConnectHeader,omitempty"` @@ -147,6 +158,11 @@ func (pc *ProxyConfig) Validate() error { } } + if pc.ProxyURL != nil { + if _, err := url.Parse(*pc.ProxyURL); err != nil { + return err + } + } return nil } @@ -252,6 +268,13 @@ const ( // - False: the reconciliation failed. // - Unknown: the operator couldn't determine the condition status. Reconciled ConditionType = "Reconciled" + // Accepted indicates whether the workload controller has successfully accepted + // the configuration resource and updated the configuration of the workload accordingly. + // The possible status values for this condition type are: + // - True: the configuration resource was successfully accepted by the controller and written to the configuration secret. + // - False: the controller rejected the configuration due to an error. + // - Unknown: the operator couldn't determine the condition status. + Accepted ConditionType = "Accepted" ) // +kubebuilder:validation:MinLength=1 @@ -290,21 +313,21 @@ type EmbeddedObjectMetadata struct { // automatically. Name is primarily intended for creation idempotence and configuration // definition. // Cannot be updated. - // More info: http://kubernetes.io/docs/user-guide/identifiers#names + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/ // +optional Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` // Map of string keys and values that can be used to organize and categorize // (scope and select) objects. May match selectors of replication controllers // and services. - // More info: http://kubernetes.io/docs/user-guide/labels + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ // +optional Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"` // Annotations is an unstructured key value map stored with a resource that may be // set by external tools to store and retrieve arbitrary metadata. They are not // queryable and should be preserved when modifying objects. - // More info: http://kubernetes.io/docs/user-guide/annotations + // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ // +optional Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,12,rep,name=annotations"` } @@ -629,11 +652,8 @@ type Endpoint struct { // +optional RelabelConfigs []RelabelConfig `json:"relabelings,omitempty"` - // `proxyURL` configures the HTTP Proxy URL (e.g. - // "http://proxyserver:2195") to go through when scraping the target. - // // +optional - ProxyURL *string `json:"proxyUrl,omitempty"` + ProxyConfig `json:",inline"` // `followRedirects` defines whether the scrape requests should follow HTTP // 3xx redirects. @@ -822,13 +842,13 @@ type SafeTLSConfig struct { // Minimum acceptable TLS version. // - // It requires Prometheus >= v2.35.0. + // It requires Prometheus >= v2.35.0 or Thanos >= v0.28.0. // +optional MinVersion *TLSVersion `json:"minVersion,omitempty"` // Maximum acceptable TLS version. // - // It requires Prometheus >= v2.41.0. + // It requires Prometheus >= v2.41.0 or Thanos >= v0.31.0. // +optional MaxVersion *TLSVersion `json:"maxVersion,omitempty"` } @@ -984,6 +1004,12 @@ type NativeHistogramConfig struct { // // +optional NativeHistogramMinBucketFactor *resource.Quantity `json:"nativeHistogramMinBucketFactor,omitempty"` + + // Whether to convert all scraped classic histograms into a native histogram with custom buckets. + // It requires Prometheus >= v3.0.0. + // + // +optional + ConvertClassicHistogramsToNHCB *bool `json:"convertClassicHistogramsToNHCB,omitempty"` } // +kubebuilder:validation:Enum=RelabelConfig;RoleSelector @@ -993,3 +1019,66 @@ const ( SelectorMechanismRelabel SelectorMechanism = "RelabelConfig" SelectorMechanismRole SelectorMechanism = "RoleSelector" ) + +// ConfigResourceStatus is the most recent observed status of the Configuration Resource (ServiceMonitor, PodMonitor and Probes). Read-only. +// More info: +// https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +// +k8s:openapi-gen=true +type ConfigResourceStatus struct { + // The list of workload resources (Prometheus or PrometheusAgent) which select the configuration resource. + // +optional + Bindings []WorkloadBinding `json:"bindings,omitempty"` +} + +// WorkloadBinding is a link between a configuration resource and a workload resource. +// +k8s:openapi-gen=true +type WorkloadBinding struct { + // The group of the referenced resource. + // +kubebuilder:validation:Enum=monitoring.coreos.com + // +required + Group string `json:"group"` + // The type of resource being referenced (e.g. Prometheus or PrometheusAgent). + // +kubebuilder:validation:Enum=prometheuses;prometheusagents + // +required + Resource string `json:"resource"` + // The name of the referenced object. + // +kubebuilder:validation:MinLength=1 + // +required + Name string `json:"name"` + // The namespace of the referenced object. + // +kubebuilder:validation:MinLength=1 + // +required + Namespace string `json:"namespace"` + // The current state of the configuration resource when bound to the referenced Prometheus object. + // +listType=map + // +listMapKey=type + // +optional + Conditions []ConfigResourceCondition `json:"conditions,omitempty"` +} + +// ConfigResourceCondition describes the status of configuration resources linked to Prometheus, PrometheusAgent, Alertmanager, or ThanosRuler. +// +k8s:deepcopy-gen=true +type ConfigResourceCondition struct { + // Type of the condition being reported. + // Currently, only "Accepted" is supported. + // +kubebuilder:validation:Enum=Accepted + // +required + Type ConditionType `json:"type"` + // Status of the condition. + // +required + Status ConditionStatus `json:"status"` + // LastTransitionTime is the time of the last update to the current status property. + // +required + LastTransitionTime metav1.Time `json:"lastTransitionTime"` + // Reason for the condition's last transition. + // +optional + Reason string `json:"reason,omitempty"` + // Human-readable message indicating details for the condition's last transition. + // +optional + Message string `json:"message,omitempty"` + // ObservedGeneration represents the .metadata.generation that the + // condition was set based upon. For instance, if `.metadata.generation` is + // currently 12, but the `.status.conditions[].observedGeneration` is 9, the + // condition is out of date with respect to the current state of the object. + ObservedGeneration int64 `json:"observedGeneration,omitempty"` +} diff --git a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/zz_generated.deepcopy.go b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/zz_generated.deepcopy.go index 275016eab..af294d955 100644 --- a/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/zz_generated.deepcopy.go +++ b/vendor/github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1/zz_generated.deepcopy.go @@ -43,6 +43,7 @@ func (in *APIServerConfig) DeepCopyInto(out *APIServerConfig) { *out = new(Authorization) (*in).DeepCopyInto(*out) } + in.ProxyConfig.DeepCopyInto(&out.ProxyConfig) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIServerConfig. @@ -242,6 +243,36 @@ func (in *AlertmanagerGlobalConfig) DeepCopyInto(out *AlertmanagerGlobalConfig) *out = new(string) **out = **in } + if in.TelegramConfig != nil { + in, out := &in.TelegramConfig, &out.TelegramConfig + *out = new(GlobalTelegramConfig) + (*in).DeepCopyInto(*out) + } + if in.JiraConfig != nil { + in, out := &in.JiraConfig, &out.JiraConfig + *out = new(GlobalJiraConfig) + (*in).DeepCopyInto(*out) + } + if in.VictorOpsConfig != nil { + in, out := &in.VictorOpsConfig, &out.VictorOpsConfig + *out = new(GlobalVictorOpsConfig) + (*in).DeepCopyInto(*out) + } + if in.RocketChatConfig != nil { + in, out := &in.RocketChatConfig, &out.RocketChatConfig + *out = new(GlobalRocketChatConfig) + (*in).DeepCopyInto(*out) + } + if in.WebexConfig != nil { + in, out := &in.WebexConfig, &out.WebexConfig + *out = new(GlobalWebexConfig) + (*in).DeepCopyInto(*out) + } + if in.WeChatConfig != nil { + in, out := &in.WeChatConfig, &out.WeChatConfig + *out = new(GlobalWeChatConfig) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertmanagerGlobalConfig. @@ -254,6 +285,31 @@ func (in *AlertmanagerGlobalConfig) DeepCopy() *AlertmanagerGlobalConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AlertmanagerLimitsSpec) DeepCopyInto(out *AlertmanagerLimitsSpec) { + *out = *in + if in.MaxSilences != nil { + in, out := &in.MaxSilences, &out.MaxSilences + *out = new(int32) + **out = **in + } + if in.MaxPerSilenceBytes != nil { + in, out := &in.MaxPerSilenceBytes, &out.MaxPerSilenceBytes + *out = new(ByteSize) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertmanagerLimitsSpec. +func (in *AlertmanagerLimitsSpec) DeepCopy() *AlertmanagerLimitsSpec { + if in == nil { + return nil + } + out := new(AlertmanagerLimitsSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AlertmanagerList) DeepCopyInto(out *AlertmanagerList) { *out = *in @@ -439,6 +495,11 @@ func (in *AlertmanagerSpec) DeepCopyInto(out *AlertmanagerSpec) { *out = new(AlertmanagerWebSpec) (*in).DeepCopyInto(*out) } + if in.Limits != nil { + in, out := &in.Limits, &out.Limits + *out = new(AlertmanagerLimitsSpec) + (*in).DeepCopyInto(*out) + } if in.ClusterTLS != nil { in, out := &in.ClusterTLS, &out.ClusterTLS *out = new(ClusterTLSConfig) @@ -459,6 +520,16 @@ func (in *AlertmanagerSpec) DeepCopyInto(out *AlertmanagerSpec) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.AdditionalArgs != nil { + in, out := &in.AdditionalArgs, &out.AdditionalArgs + *out = make([]Argument, len(*in)) + copy(*out, *in) + } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertmanagerSpec. @@ -973,6 +1044,21 @@ func (in *CommonPrometheusFields) DeepCopyInto(out *CommonPrometheusFields) { *out = new(NameValidationSchemeOptions) **out = **in } + if in.NameEscapingScheme != nil { + in, out := &in.NameEscapingScheme, &out.NameEscapingScheme + *out = new(NameEscapingSchemeOptions) + **out = **in + } + if in.ConvertClassicHistogramsToNHCB != nil { + in, out := &in.ConvertClassicHistogramsToNHCB, &out.ConvertClassicHistogramsToNHCB + *out = new(bool) + **out = **in + } + if in.ScrapeClassicHistograms != nil { + in, out := &in.ScrapeClassicHistograms, &out.ScrapeClassicHistograms + *out = new(bool) + **out = **in + } if in.MinReadySeconds != nil { in, out := &in.MinReadySeconds, &out.MinReadySeconds *out = new(uint32) @@ -1087,6 +1173,11 @@ func (in *CommonPrometheusFields) DeepCopyInto(out *CommonPrometheusFields) { *out = new(RuntimeConfig) (*in).DeepCopyInto(*out) } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonPrometheusFields. @@ -1115,6 +1206,44 @@ func (in *Condition) DeepCopy() *Condition { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigResourceCondition) DeepCopyInto(out *ConfigResourceCondition) { + *out = *in + in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigResourceCondition. +func (in *ConfigResourceCondition) DeepCopy() *ConfigResourceCondition { + if in == nil { + return nil + } + out := new(ConfigResourceCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigResourceStatus) DeepCopyInto(out *ConfigResourceStatus) { + *out = *in + if in.Bindings != nil { + in, out := &in.Bindings, &out.Bindings + *out = make([]WorkloadBinding, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigResourceStatus. +func (in *ConfigResourceStatus) DeepCopy() *ConfigResourceStatus { + if in == nil { + return nil + } + out := new(ConfigResourceStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CoreV1TopologySpreadConstraint) DeepCopyInto(out *CoreV1TopologySpreadConstraint) { *out = *in @@ -1276,11 +1405,7 @@ func (in *Endpoint) DeepCopyInto(out *Endpoint) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.ProxyURL != nil { - in, out := &in.ProxyURL, &out.ProxyURL - *out = new(string) - **out = **in - } + in.ProxyConfig.DeepCopyInto(&out.ProxyConfig) if in.FollowRedirects != nil { in, out := &in.FollowRedirects, &out.FollowRedirects *out = new(bool) @@ -1328,6 +1453,56 @@ func (in *Exemplars) DeepCopy() *Exemplars { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalJiraConfig) DeepCopyInto(out *GlobalJiraConfig) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(URL) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalJiraConfig. +func (in *GlobalJiraConfig) DeepCopy() *GlobalJiraConfig { + if in == nil { + return nil + } + out := new(GlobalJiraConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalRocketChatConfig) DeepCopyInto(out *GlobalRocketChatConfig) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(URL) + **out = **in + } + if in.Token != nil { + in, out := &in.Token, &out.Token + *out = new(corev1.SecretKeySelector) + (*in).DeepCopyInto(*out) + } + if in.TokenID != nil { + in, out := &in.TokenID, &out.TokenID + *out = new(corev1.SecretKeySelector) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalRocketChatConfig. +func (in *GlobalRocketChatConfig) DeepCopy() *GlobalRocketChatConfig { + if in == nil { + return nil + } + out := new(GlobalRocketChatConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *GlobalSMTPConfig) DeepCopyInto(out *GlobalSMTPConfig) { *out = *in @@ -1371,6 +1546,11 @@ func (in *GlobalSMTPConfig) DeepCopyInto(out *GlobalSMTPConfig) { *out = new(bool) **out = **in } + if in.TLSConfig != nil { + in, out := &in.TLSConfig, &out.TLSConfig + *out = new(SafeTLSConfig) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalSMTPConfig. @@ -1383,6 +1563,101 @@ func (in *GlobalSMTPConfig) DeepCopy() *GlobalSMTPConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalTelegramConfig) DeepCopyInto(out *GlobalTelegramConfig) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(URL) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalTelegramConfig. +func (in *GlobalTelegramConfig) DeepCopy() *GlobalTelegramConfig { + if in == nil { + return nil + } + out := new(GlobalTelegramConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalVictorOpsConfig) DeepCopyInto(out *GlobalVictorOpsConfig) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(URL) + **out = **in + } + if in.APIKey != nil { + in, out := &in.APIKey, &out.APIKey + *out = new(corev1.SecretKeySelector) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalVictorOpsConfig. +func (in *GlobalVictorOpsConfig) DeepCopy() *GlobalVictorOpsConfig { + if in == nil { + return nil + } + out := new(GlobalVictorOpsConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalWeChatConfig) DeepCopyInto(out *GlobalWeChatConfig) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(URL) + **out = **in + } + if in.APISecret != nil { + in, out := &in.APISecret, &out.APISecret + *out = new(corev1.SecretKeySelector) + (*in).DeepCopyInto(*out) + } + if in.APICorpID != nil { + in, out := &in.APICorpID, &out.APICorpID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalWeChatConfig. +func (in *GlobalWeChatConfig) DeepCopy() *GlobalWeChatConfig { + if in == nil { + return nil + } + out := new(GlobalWeChatConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GlobalWebexConfig) DeepCopyInto(out *GlobalWebexConfig) { + *out = *in + if in.APIURL != nil { + in, out := &in.APIURL, &out.APIURL + *out = new(URL) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GlobalWebexConfig. +func (in *GlobalWebexConfig) DeepCopy() *GlobalWebexConfig { + if in == nil { + return nil + } + out := new(GlobalWebexConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HTTPConfig) DeepCopyInto(out *HTTPConfig) { *out = *in @@ -1482,6 +1757,11 @@ func (in *ManagedIdentity) DeepCopy() *ManagedIdentity { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MetadataConfig) DeepCopyInto(out *MetadataConfig) { *out = *in + if in.MaxSamplesPerSend != nil { + in, out := &in.MaxSamplesPerSend, &out.MaxSamplesPerSend + *out = new(int32) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataConfig. @@ -1532,6 +1812,11 @@ func (in *NativeHistogramConfig) DeepCopyInto(out *NativeHistogramConfig) { x := (*in).DeepCopy() *out = &x } + if in.ConvertClassicHistogramsToNHCB != nil { + in, out := &in.ConvertClassicHistogramsToNHCB, &out.ConvertClassicHistogramsToNHCB + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NativeHistogramConfig. @@ -1612,6 +1897,11 @@ func (in *OTLPConfig) DeepCopyInto(out *OTLPConfig) { *out = new(bool) **out = **in } + if in.ConvertHistogramsToNHCB != nil { + in, out := &in.ConvertHistogramsToNHCB, &out.ConvertHistogramsToNHCB + *out = new(bool) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OTLPConfig. @@ -1770,11 +2060,7 @@ func (in *PodMetricsEndpoint) DeepCopyInto(out *PodMetricsEndpoint) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - if in.ProxyURL != nil { - in, out := &in.ProxyURL, &out.ProxyURL - *out = new(string) - **out = **in - } + in.ProxyConfig.DeepCopyInto(&out.ProxyConfig) if in.FollowRedirects != nil { in, out := &in.FollowRedirects, &out.FollowRedirects *out = new(bool) @@ -1979,7 +2265,7 @@ func (in *ProbeList) DeepCopy() *ProbeList { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProbeSpec) DeepCopyInto(out *ProbeSpec) { *out = *in - out.ProberSpec = in.ProberSpec + in.ProberSpec.DeepCopyInto(&out.ProberSpec) in.Targets.DeepCopyInto(&out.Targets) if in.TLSConfig != nil { in, out := &in.TLSConfig, &out.TLSConfig @@ -2168,6 +2454,7 @@ func (in *ProbeTargetsValidationError) DeepCopy() *ProbeTargetsValidationError { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProberSpec) DeepCopyInto(out *ProberSpec) { *out = *in + in.ProxyConfig.DeepCopyInto(&out.ProxyConfig) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProberSpec. @@ -2785,7 +3072,7 @@ func (in *RemoteWriteSpec) DeepCopyInto(out *RemoteWriteSpec) { if in.MetadataConfig != nil { in, out := &in.MetadataConfig, &out.MetadataConfig *out = new(MetadataConfig) - **out = **in + (*in).DeepCopyInto(*out) } if in.EnableHttp2 != nil { in, out := &in.EnableHttp2, &out.EnableHttp2 @@ -2809,6 +3096,21 @@ func (in *RemoteWriteSpec) DeepCopy() *RemoteWriteSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetainConfig) DeepCopyInto(out *RetainConfig) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetainConfig. +func (in *RetainConfig) DeepCopy() *RetainConfig { + if in == nil { + return nil + } + out := new(RetainConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Rule) DeepCopyInto(out *Rule) { *out = *in @@ -3091,6 +3393,7 @@ func (in *ServiceMonitor) DeepCopyInto(out *ServiceMonitor) { out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceMonitor. @@ -3230,6 +3533,11 @@ func (in *ShardRetentionPolicy) DeepCopyInto(out *ShardRetentionPolicy) { *out = new(WhenScaledRetentionType) **out = **in } + if in.Retain != nil { + in, out := &in.Retain, &out.Retain + *out = new(RetainConfig) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ShardRetentionPolicy. @@ -3531,6 +3839,21 @@ func (in *ThanosRulerSpec) DeepCopyInto(out *ThanosRulerSpec) { *out = make([]PrometheusRuleExcludeConfig, len(*in)) copy(*out, *in) } + if in.RuleOutageTolerance != nil { + in, out := &in.RuleOutageTolerance, &out.RuleOutageTolerance + *out = new(Duration) + **out = **in + } + if in.RuleQueryOffset != nil { + in, out := &in.RuleQueryOffset, &out.RuleQueryOffset + *out = new(Duration) + **out = **in + } + if in.RuleConcurrentEval != nil { + in, out := &in.RuleConcurrentEval, &out.RuleConcurrentEval + *out = new(int32) + **out = **in + } if in.Containers != nil { in, out := &in.Containers, &out.Containers *out = make([]corev1.Container, len(*in)) @@ -3599,6 +3922,18 @@ func (in *ThanosRulerSpec) DeepCopyInto(out *ThanosRulerSpec) { *out = new(ThanosRulerWebSpec) (*in).DeepCopyInto(*out) } + if in.RemoteWrite != nil { + in, out := &in.RemoteWrite, &out.RemoteWrite + *out = make([]RemoteWriteSpec, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.TerminationGracePeriodSeconds != nil { + in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds + *out = new(int64) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThanosRulerSpec. @@ -3870,3 +4205,25 @@ func (in *WebTLSConfig) DeepCopy() *WebTLSConfig { in.DeepCopyInto(out) return out } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkloadBinding) DeepCopyInto(out *WorkloadBinding) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]ConfigResourceCondition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadBinding. +func (in *WorkloadBinding) DeepCopy() *WorkloadBinding { + if in == nil { + return nil + } + out := new(WorkloadBinding) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/golang.org/x/sync/errgroup/errgroup.go b/vendor/golang.org/x/sync/errgroup/errgroup.go index cb6bb9ad3..1d8cffae8 100644 --- a/vendor/golang.org/x/sync/errgroup/errgroup.go +++ b/vendor/golang.org/x/sync/errgroup/errgroup.go @@ -12,8 +12,6 @@ package errgroup import ( "context" "fmt" - "runtime" - "runtime/debug" "sync" ) @@ -33,10 +31,6 @@ type Group struct { errOnce sync.Once err error - - mu sync.Mutex - panicValue any // = PanicError | PanicValue; non-nil if some Group.Go goroutine panicked. - abnormal bool // some Group.Go goroutine terminated abnormally (panic or goexit). } func (g *Group) done() { @@ -56,22 +50,13 @@ func WithContext(ctx context.Context) (*Group, context.Context) { return &Group{cancel: cancel}, ctx } -// Wait blocks until all function calls from the Go method have returned -// normally, then returns the first non-nil error (if any) from them. -// -// If any of the calls panics, Wait panics with a [PanicValue]; -// and if any of them calls [runtime.Goexit], Wait calls runtime.Goexit. +// Wait blocks until all function calls from the Go method have returned, then +// returns the first non-nil error (if any) from them. func (g *Group) Wait() error { g.wg.Wait() if g.cancel != nil { g.cancel(g.err) } - if g.panicValue != nil { - panic(g.panicValue) - } - if g.abnormal { - runtime.Goexit() - } return g.err } @@ -81,53 +66,31 @@ func (g *Group) Wait() error { // It blocks until the new goroutine can be added without the number of // goroutines in the group exceeding the configured limit. // -// The first goroutine in the group that returns a non-nil error, panics, or -// invokes [runtime.Goexit] will cancel the associated Context, if any. +// The first goroutine in the group that returns a non-nil error will +// cancel the associated Context, if any. The error will be returned +// by Wait. func (g *Group) Go(f func() error) { if g.sem != nil { g.sem <- token{} } - g.add(f) -} - -func (g *Group) add(f func() error) { g.wg.Add(1) go func() { defer g.done() - normalReturn := false - defer func() { - if normalReturn { - return - } - v := recover() - g.mu.Lock() - defer g.mu.Unlock() - if !g.abnormal { - if g.cancel != nil { - g.cancel(g.err) - } - g.abnormal = true - } - if v != nil && g.panicValue == nil { - switch v := v.(type) { - case error: - g.panicValue = PanicError{ - Recovered: v, - Stack: debug.Stack(), - } - default: - g.panicValue = PanicValue{ - Recovered: v, - Stack: debug.Stack(), - } - } - } - }() - err := f() - normalReturn = true - if err != nil { + // It is tempting to propagate panics from f() + // up to the goroutine that calls Wait, but + // it creates more problems than it solves: + // - it delays panics arbitrarily, + // making bugs harder to detect; + // - it turns f's panic stack into a mere value, + // hiding it from crash-monitoring tools; + // - it risks deadlocks that hide the panic entirely, + // if f's panic leaves the program in a state + // that prevents the Wait call from being reached. + // See #53757, #74275, #74304, #74306. + + if err := f(); err != nil { g.errOnce.Do(func() { g.err = err if g.cancel != nil { @@ -152,7 +115,19 @@ func (g *Group) TryGo(f func() error) bool { } } - g.add(f) + g.wg.Add(1) + go func() { + defer g.done() + + if err := f(); err != nil { + g.errOnce.Do(func() { + g.err = err + if g.cancel != nil { + g.cancel(g.err) + } + }) + } + }() return true } @@ -174,34 +149,3 @@ func (g *Group) SetLimit(n int) { } g.sem = make(chan token, n) } - -// PanicError wraps an error recovered from an unhandled panic -// when calling a function passed to Go or TryGo. -type PanicError struct { - Recovered error - Stack []byte // result of call to [debug.Stack] -} - -func (p PanicError) Error() string { - if len(p.Stack) > 0 { - return fmt.Sprintf("recovered from errgroup.Group: %v\n%s", p.Recovered, p.Stack) - } - return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered) -} - -func (p PanicError) Unwrap() error { return p.Recovered } - -// PanicValue wraps a value that does not implement the error interface, -// recovered from an unhandled panic when calling a function passed to Go or -// TryGo. -type PanicValue struct { - Recovered any - Stack []byte // result of call to [debug.Stack] -} - -func (p PanicValue) String() string { - if len(p.Stack) > 0 { - return fmt.Sprintf("recovered from errgroup.Group: %v\n%s", p.Recovered, p.Stack) - } - return fmt.Sprintf("recovered from errgroup.Group: %v", p.Recovered) -} diff --git a/vendor/modules.txt b/vendor/modules.txt index e9daeb47e..db7bf64cb 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -434,8 +434,8 @@ github.com/pkg/errors # github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 ## explicit github.com/pmezard/go-difflib/difflib -# github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.81.0 -## explicit; go 1.23.0 +# github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.84.0 +## explicit; go 1.24.0 github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1 # github.com/prometheus/client_golang v1.22.0 @@ -650,7 +650,7 @@ golang.org/x/net/websocket ## explicit; go 1.23.0 golang.org/x/oauth2 golang.org/x/oauth2/internal -# golang.org/x/sync v0.15.0 +# golang.org/x/sync v0.16.0 ## explicit; go 1.23.0 golang.org/x/sync/errgroup golang.org/x/sync/semaphore @@ -662,7 +662,7 @@ golang.org/x/sys/windows # golang.org/x/term v0.32.0 ## explicit; go 1.23.0 golang.org/x/term -# golang.org/x/text v0.26.0 +# golang.org/x/text v0.27.0 ## explicit; go 1.23.0 golang.org/x/text/encoding golang.org/x/text/encoding/charmap