diff --git a/api/observability/v1alpha1/loki_limit_types.go b/api/observability/v1alpha1/loki_limit_types.go index b016cf0..05af5ed 100644 --- a/api/observability/v1alpha1/loki_limit_types.go +++ b/api/observability/v1alpha1/loki_limit_types.go @@ -177,6 +177,8 @@ type LokiLimits struct { IndexGatewayShardSize *int `yaml:"index_gateway_shard_size,omitempty" json:"index_gateway_shard_size,omitempty"` } +type LokiLimitsInput LokiLimits + type StreamRetention struct { Period metav1.Duration `yaml:"period" json:"period"` Priority *int `yaml:"priority" json:"priority"` diff --git a/api/observability/v1alpha1/mimir_limit_types.go b/api/observability/v1alpha1/mimir_limit_types.go index 156c61f..42c4f6d 100644 --- a/api/observability/v1alpha1/mimir_limit_types.go +++ b/api/observability/v1alpha1/mimir_limit_types.go @@ -239,11 +239,6 @@ type MimirLimits struct { type MimirLimitsInput MimirLimits -type ForwardingRule struct { - // Ingest defines whether a metric should still be pushed to the Ingesters despite it being forwarded. - Ingest *bool `yaml:"ingest,omitempty" json:"ingest,omitempty"` -} - const ( // TenantReadyCondition reports on current status of the Tenant. Ready indicates the tenant has been created and the limits have been applied. TenantReadyCondition crhelperTypes.ConditionType = "TenantReady" diff --git a/api/observability/v1alpha1/tempo_limit_types.go b/api/observability/v1alpha1/tempo_limit_types.go index 5719ff0..adcd5f0 100644 --- a/api/observability/v1alpha1/tempo_limit_types.go +++ b/api/observability/v1alpha1/tempo_limit_types.go @@ -107,6 +107,8 @@ type TempoLimits struct { MaxBytesPerTrace *int `yaml:"max_bytes_per_trace,omitempty" json:"max_bytes_per_trace,omitempty"` } +type TempoLimitsInput TempoLimits + type FilterPolicy struct { // +kubebuilder:validation:Optional Include *PolicyMatch `yaml:"include,omitempty" json:"include,omitempty"` diff --git a/api/observability/v1alpha1/zz_generated.deepcopy.go b/api/observability/v1alpha1/zz_generated.deepcopy.go index 78ec6b3..c44296c 100644 --- a/api/observability/v1alpha1/zz_generated.deepcopy.go +++ b/api/observability/v1alpha1/zz_generated.deepcopy.go @@ -238,26 +238,6 @@ func (in *FilterPolicy) DeepCopy() *FilterPolicy { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ForwardingRule) DeepCopyInto(out *ForwardingRule) { - *out = *in - if in.Ingest != nil { - in, out := &in.Ingest, &out.Ingest - *out = new(bool) - **out = **in - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ForwardingRule. -func (in *ForwardingRule) DeepCopy() *ForwardingRule { - if in == nil { - return nil - } - out := new(ForwardingRule) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HTTPClientConfig) DeepCopyInto(out *HTTPClientConfig) { *out = *in @@ -329,48 +309,363 @@ func (in *LimitSpec) DeepCopy() *LimitSpec { if in == nil { return nil } - out := new(LimitSpec) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LokiConfigSpec) DeepCopyInto(out *LokiConfigSpec) { - *out = *in - if in.Multi != nil { - in, out := &in.Multi, &out.Multi - *out = new(MultiRuntimeConfig) + out := new(LimitSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LokiConfigSpec) DeepCopyInto(out *LokiConfigSpec) { + *out = *in + if in.Multi != nil { + in, out := &in.Multi, &out.Multi + *out = new(MultiRuntimeConfig) + (*in).DeepCopyInto(*out) + } + if in.TenantConfig != nil { + in, out := &in.TenantConfig, &out.TenantConfig + *out = make(map[string]*LokiRuntimeConfig, len(*in)) + for key, val := range *in { + var outVal *LokiRuntimeConfig + if val == nil { + (*out)[key] = nil + } else { + in, out := &val, &outVal + *out = new(LokiRuntimeConfig) + (*in).DeepCopyInto(*out) + } + (*out)[key] = outVal + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LokiConfigSpec. +func (in *LokiConfigSpec) DeepCopy() *LokiConfigSpec { + if in == nil { + return nil + } + out := new(LokiConfigSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *LokiLimits) DeepCopyInto(out *LokiLimits) { + *out = *in + if in.IngestionRateStrategy != nil { + in, out := &in.IngestionRateStrategy, &out.IngestionRateStrategy + *out = new(string) + **out = **in + } + if in.IngestionRateMB != nil { + in, out := &in.IngestionRateMB, &out.IngestionRateMB + *out = new(float64) + **out = **in + } + if in.IngestionBurstSizeMB != nil { + in, out := &in.IngestionBurstSizeMB, &out.IngestionBurstSizeMB + *out = new(float64) + **out = **in + } + if in.MaxLabelNameLength != nil { + in, out := &in.MaxLabelNameLength, &out.MaxLabelNameLength + *out = new(int) + **out = **in + } + if in.MaxLabelValueLength != nil { + in, out := &in.MaxLabelValueLength, &out.MaxLabelValueLength + *out = new(int) + **out = **in + } + if in.MaxLabelNamesPerSeries != nil { + in, out := &in.MaxLabelNamesPerSeries, &out.MaxLabelNamesPerSeries + *out = new(int) + **out = **in + } + if in.RejectOldSamples != nil { + in, out := &in.RejectOldSamples, &out.RejectOldSamples + *out = new(bool) + **out = **in + } + if in.RejectOldSamplesMaxAge != nil { + in, out := &in.RejectOldSamplesMaxAge, &out.RejectOldSamplesMaxAge + *out = new(v1.Duration) + **out = **in + } + if in.CreationGracePeriod != nil { + in, out := &in.CreationGracePeriod, &out.CreationGracePeriod + *out = new(v1.Duration) + **out = **in + } + if in.EnforceMetricName != nil { + in, out := &in.EnforceMetricName, &out.EnforceMetricName + *out = new(bool) + **out = **in + } + if in.MaxLineSize != nil { + in, out := &in.MaxLineSize, &out.MaxLineSize + *out = new(uint64) + **out = **in + } + if in.MaxLineSizeTruncate != nil { + in, out := &in.MaxLineSizeTruncate, &out.MaxLineSizeTruncate + *out = new(bool) + **out = **in + } + if in.IncrementDuplicateTimestamp != nil { + in, out := &in.IncrementDuplicateTimestamp, &out.IncrementDuplicateTimestamp + *out = new(bool) + **out = **in + } + if in.MaxLocalStreamsPerUser != nil { + in, out := &in.MaxLocalStreamsPerUser, &out.MaxLocalStreamsPerUser + *out = new(int) + **out = **in + } + if in.MaxGlobalStreamsPerUser != nil { + in, out := &in.MaxGlobalStreamsPerUser, &out.MaxGlobalStreamsPerUser + *out = new(int) + **out = **in + } + if in.UnorderedWrites != nil { + in, out := &in.UnorderedWrites, &out.UnorderedWrites + *out = new(bool) + **out = **in + } + if in.PerStreamRateLimit != nil { + in, out := &in.PerStreamRateLimit, &out.PerStreamRateLimit + *out = new(uint64) + **out = **in + } + if in.PerStreamRateLimitBurst != nil { + in, out := &in.PerStreamRateLimitBurst, &out.PerStreamRateLimitBurst + *out = new(uint64) + **out = **in + } + if in.MaxChunksPerQuery != nil { + in, out := &in.MaxChunksPerQuery, &out.MaxChunksPerQuery + *out = new(int) + **out = **in + } + if in.MaxQuerySeries != nil { + in, out := &in.MaxQuerySeries, &out.MaxQuerySeries + *out = new(int) + **out = **in + } + if in.MaxQueryLookback != nil { + in, out := &in.MaxQueryLookback, &out.MaxQueryLookback + *out = new(v1.Duration) + **out = **in + } + if in.MaxQueryLength != nil { + in, out := &in.MaxQueryLength, &out.MaxQueryLength + *out = new(v1.Duration) + **out = **in + } + if in.MaxQueryRange != nil { + in, out := &in.MaxQueryRange, &out.MaxQueryRange + *out = new(v1.Duration) + **out = **in + } + if in.MaxQueryParallelism != nil { + in, out := &in.MaxQueryParallelism, &out.MaxQueryParallelism + *out = new(int) + **out = **in + } + if in.TSDBMaxQueryParallelism != nil { + in, out := &in.TSDBMaxQueryParallelism, &out.TSDBMaxQueryParallelism + *out = new(int) + **out = **in + } + if in.TSDBMaxBytesPerShard != nil { + in, out := &in.TSDBMaxBytesPerShard, &out.TSDBMaxBytesPerShard + *out = new(uint64) + **out = **in + } + if in.CardinalityLimit != nil { + in, out := &in.CardinalityLimit, &out.CardinalityLimit + *out = new(int) + **out = **in + } + if in.MaxStreamsMatchersPerQuery != nil { + in, out := &in.MaxStreamsMatchersPerQuery, &out.MaxStreamsMatchersPerQuery + *out = new(int) + **out = **in + } + if in.MaxConcurrentTailRequests != nil { + in, out := &in.MaxConcurrentTailRequests, &out.MaxConcurrentTailRequests + *out = new(int) + **out = **in + } + if in.MaxEntriesLimitPerQuery != nil { + in, out := &in.MaxEntriesLimitPerQuery, &out.MaxEntriesLimitPerQuery + *out = new(int) + **out = **in + } + if in.MaxCacheFreshness != nil { + in, out := &in.MaxCacheFreshness, &out.MaxCacheFreshness + *out = new(v1.Duration) + **out = **in + } + if in.MaxStatsCacheFreshness != nil { + in, out := &in.MaxStatsCacheFreshness, &out.MaxStatsCacheFreshness + *out = new(v1.Duration) + **out = **in + } + if in.MaxQueriersPerTenant != nil { + in, out := &in.MaxQueriersPerTenant, &out.MaxQueriersPerTenant + *out = new(int) + **out = **in + } + if in.QueryReadyIndexNumDays != nil { + in, out := &in.QueryReadyIndexNumDays, &out.QueryReadyIndexNumDays + *out = new(int) + **out = **in + } + if in.QueryTimeout != nil { + in, out := &in.QueryTimeout, &out.QueryTimeout + *out = new(v1.Duration) + **out = **in + } + if in.QuerySplitDuration != nil { + in, out := &in.QuerySplitDuration, &out.QuerySplitDuration + *out = new(v1.Duration) + **out = **in + } + if in.MinShardingLookback != nil { + in, out := &in.MinShardingLookback, &out.MinShardingLookback + *out = new(v1.Duration) + **out = **in + } + if in.MaxQueryBytesRead != nil { + in, out := &in.MaxQueryBytesRead, &out.MaxQueryBytesRead + *out = new(uint64) + **out = **in + } + if in.MaxQuerierBytesRead != nil { + in, out := &in.MaxQuerierBytesRead, &out.MaxQuerierBytesRead + *out = new(uint64) + **out = **in + } + if in.VolumeEnabled != nil { + in, out := &in.VolumeEnabled, &out.VolumeEnabled + *out = new(bool) + **out = **in + } + if in.VolumeMaxSeries != nil { + in, out := &in.VolumeMaxSeries, &out.VolumeMaxSeries + *out = new(int) + **out = **in + } + if in.RulerEvaluationDelay != nil { + in, out := &in.RulerEvaluationDelay, &out.RulerEvaluationDelay + *out = new(v1.Duration) + **out = **in + } + if in.RulerMaxRulesPerRuleGroup != nil { + in, out := &in.RulerMaxRulesPerRuleGroup, &out.RulerMaxRulesPerRuleGroup + *out = new(int) + **out = **in + } + if in.RulerMaxRuleGroupsPerTenant != nil { + in, out := &in.RulerMaxRuleGroupsPerTenant, &out.RulerMaxRuleGroupsPerTenant + *out = new(int) + **out = **in + } + if in.RulerAlertManagerConfig != nil { + in, out := &in.RulerAlertManagerConfig, &out.RulerAlertManagerConfig + *out = new(RulerAlertManagerConfig) + (*in).DeepCopyInto(*out) + } + if in.RulerTenantShardSize != nil { + in, out := &in.RulerTenantShardSize, &out.RulerTenantShardSize + *out = new(int) + **out = **in + } + if in.RulerRemoteWriteDisabled != nil { + in, out := &in.RulerRemoteWriteDisabled, &out.RulerRemoteWriteDisabled + *out = new(bool) + **out = **in + } + if in.RulerRemoteWriteConfig != nil { + in, out := &in.RulerRemoteWriteConfig, &out.RulerRemoteWriteConfig + *out = make(map[string]RemoteWriteSpec, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } + if in.RulerRemoteEvaluationTimeout != nil { + in, out := &in.RulerRemoteEvaluationTimeout, &out.RulerRemoteEvaluationTimeout + *out = new(v1.Duration) + **out = **in + } + if in.RulerRemoteEvaluationMaxResponseSize != nil { + in, out := &in.RulerRemoteEvaluationMaxResponseSize, &out.RulerRemoteEvaluationMaxResponseSize + *out = new(int64) + **out = **in + } + if in.DeletionMode != nil { + in, out := &in.DeletionMode, &out.DeletionMode + *out = new(string) + **out = **in + } + if in.RetentionPeriod != nil { + in, out := &in.RetentionPeriod, &out.RetentionPeriod + *out = new(v1.Duration) + **out = **in + } + if in.StreamRetention != nil { + in, out := &in.StreamRetention, &out.StreamRetention + *out = make([]StreamRetention, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ShardStreams != nil { + in, out := &in.ShardStreams, &out.ShardStreams + *out = new(ShardstreamsConfig) (*in).DeepCopyInto(*out) } - if in.TenantConfig != nil { - in, out := &in.TenantConfig, &out.TenantConfig - *out = make(map[string]*LokiRuntimeConfig, len(*in)) - for key, val := range *in { - var outVal *LokiRuntimeConfig - if val == nil { - (*out)[key] = nil - } else { - in, out := &val, &outVal - *out = new(LokiRuntimeConfig) + if in.BlockedQueries != nil { + in, out := &in.BlockedQueries, &out.BlockedQueries + *out = make([]*BlockedQuery, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(BlockedQuery) (*in).DeepCopyInto(*out) } - (*out)[key] = outVal } } + if in.RequiredLabels != nil { + in, out := &in.RequiredLabels, &out.RequiredLabels + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.RequiredNumberLabels != nil { + in, out := &in.RequiredNumberLabels, &out.RequiredNumberLabels + *out = new(int) + **out = **in + } + if in.IndexGatewayShardSize != nil { + in, out := &in.IndexGatewayShardSize, &out.IndexGatewayShardSize + *out = new(int) + **out = **in + } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LokiConfigSpec. -func (in *LokiConfigSpec) DeepCopy() *LokiConfigSpec { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LokiLimits. +func (in *LokiLimits) DeepCopy() *LokiLimits { if in == nil { return nil } - out := new(LokiConfigSpec) + out := new(LokiLimits) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *LokiLimits) DeepCopyInto(out *LokiLimits) { +func (in *LokiLimitsInput) DeepCopyInto(out *LokiLimitsInput) { *out = *in if in.IngestionRateStrategy != nil { in, out := &in.IngestionRateStrategy, &out.IngestionRateStrategy @@ -674,12 +969,12 @@ func (in *LokiLimits) DeepCopyInto(out *LokiLimits) { } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LokiLimits. -func (in *LokiLimits) DeepCopy() *LokiLimits { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LokiLimitsInput. +func (in *LokiLimitsInput) DeepCopy() *LokiLimitsInput { if in == nil { return nil } - out := new(LokiLimits) + out := new(LokiLimitsInput) in.DeepCopyInto(out) return out } @@ -2521,6 +2816,203 @@ func (in *TempoLimits) DeepCopy() *TempoLimits { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TempoLimitsInput) DeepCopyInto(out *TempoLimitsInput) { + *out = *in + if in.IngestionRateStrategy != nil { + in, out := &in.IngestionRateStrategy, &out.IngestionRateStrategy + *out = new(string) + **out = **in + } + if in.IngestionRateLimitBytes != nil { + in, out := &in.IngestionRateLimitBytes, &out.IngestionRateLimitBytes + *out = new(int) + **out = **in + } + if in.IngestionBurstSizeBytes != nil { + in, out := &in.IngestionBurstSizeBytes, &out.IngestionBurstSizeBytes + *out = new(int) + **out = **in + } + if in.MaxLocalTracesPerUser != nil { + in, out := &in.MaxLocalTracesPerUser, &out.MaxLocalTracesPerUser + *out = new(int) + **out = **in + } + if in.MaxGlobalTracesPerUser != nil { + in, out := &in.MaxGlobalTracesPerUser, &out.MaxGlobalTracesPerUser + *out = new(int) + **out = **in + } + if in.Forwarders != nil { + in, out := &in.Forwarders, &out.Forwarders + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.MetricsGeneratorRingSize != nil { + in, out := &in.MetricsGeneratorRingSize, &out.MetricsGeneratorRingSize + *out = new(int) + **out = **in + } + if in.MetricsGeneratorProcessors != nil { + in, out := &in.MetricsGeneratorProcessors, &out.MetricsGeneratorProcessors + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.MetricsGeneratorMaxActiveSeries != nil { + in, out := &in.MetricsGeneratorMaxActiveSeries, &out.MetricsGeneratorMaxActiveSeries + *out = new(uint32) + **out = **in + } + if in.MetricsGeneratorCollectionInterval != nil { + in, out := &in.MetricsGeneratorCollectionInterval, &out.MetricsGeneratorCollectionInterval + *out = new(v1.Duration) + **out = **in + } + if in.MetricsGeneratorDisableCollection != nil { + in, out := &in.MetricsGeneratorDisableCollection, &out.MetricsGeneratorDisableCollection + *out = new(bool) + **out = **in + } + if in.MetricsGeneratorForwarderQueueSize != nil { + in, out := &in.MetricsGeneratorForwarderQueueSize, &out.MetricsGeneratorForwarderQueueSize + *out = new(int) + **out = **in + } + if in.MetricsGeneratorForwarderWorkers != nil { + in, out := &in.MetricsGeneratorForwarderWorkers, &out.MetricsGeneratorForwarderWorkers + *out = new(int) + **out = **in + } + if in.MetricsGeneratorProcessorServiceGraphsHistogramBuckets != nil { + in, out := &in.MetricsGeneratorProcessorServiceGraphsHistogramBuckets, &out.MetricsGeneratorProcessorServiceGraphsHistogramBuckets + *out = make([]float64, len(*in)) + copy(*out, *in) + } + if in.MetricsGeneratorProcessorServiceGraphsDimensions != nil { + in, out := &in.MetricsGeneratorProcessorServiceGraphsDimensions, &out.MetricsGeneratorProcessorServiceGraphsDimensions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.MetricsGeneratorProcessorServiceGraphsPeerAttributes != nil { + in, out := &in.MetricsGeneratorProcessorServiceGraphsPeerAttributes, &out.MetricsGeneratorProcessorServiceGraphsPeerAttributes + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.MetricsGeneratorProcessorServiceGraphsEnableClientServerPrefix != nil { + in, out := &in.MetricsGeneratorProcessorServiceGraphsEnableClientServerPrefix, &out.MetricsGeneratorProcessorServiceGraphsEnableClientServerPrefix + *out = new(bool) + **out = **in + } + if in.MetricsGeneratorProcessorSpanMetricsHistogramBuckets != nil { + in, out := &in.MetricsGeneratorProcessorSpanMetricsHistogramBuckets, &out.MetricsGeneratorProcessorSpanMetricsHistogramBuckets + *out = make([]float64, len(*in)) + copy(*out, *in) + } + if in.MetricsGeneratorProcessorSpanMetricsDimensions != nil { + in, out := &in.MetricsGeneratorProcessorSpanMetricsDimensions, &out.MetricsGeneratorProcessorSpanMetricsDimensions + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.MetricsGeneratorProcessorSpanMetricsIntrinsicDimensions != nil { + in, out := &in.MetricsGeneratorProcessorSpanMetricsIntrinsicDimensions, &out.MetricsGeneratorProcessorSpanMetricsIntrinsicDimensions + *out = make(map[string]bool, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.MetricsGeneratorProcessorSpanMetricsFilterPolicies != nil { + in, out := &in.MetricsGeneratorProcessorSpanMetricsFilterPolicies, &out.MetricsGeneratorProcessorSpanMetricsFilterPolicies + *out = make([]FilterPolicy, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MetricsGeneratorProcessorSpanMetricsDimensionMappings != nil { + in, out := &in.MetricsGeneratorProcessorSpanMetricsDimensionMappings, &out.MetricsGeneratorProcessorSpanMetricsDimensionMappings + *out = make([]DimensionMappings, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.MetricsGeneratorProcessorSpanMetricsEnableTargetInfo != nil { + in, out := &in.MetricsGeneratorProcessorSpanMetricsEnableTargetInfo, &out.MetricsGeneratorProcessorSpanMetricsEnableTargetInfo + *out = new(bool) + **out = **in + } + if in.MetricsGeneratorProcessorLocalBlocksMaxLiveTraces != nil { + in, out := &in.MetricsGeneratorProcessorLocalBlocksMaxLiveTraces, &out.MetricsGeneratorProcessorLocalBlocksMaxLiveTraces + *out = new(uint64) + **out = **in + } + if in.MetricsGeneratorProcessorLocalBlocksMaxBlockDuration != nil { + in, out := &in.MetricsGeneratorProcessorLocalBlocksMaxBlockDuration, &out.MetricsGeneratorProcessorLocalBlocksMaxBlockDuration + *out = new(v1.Duration) + **out = **in + } + if in.MetricsGeneratorProcessorLocalBlocksMaxBlockBytes != nil { + in, out := &in.MetricsGeneratorProcessorLocalBlocksMaxBlockBytes, &out.MetricsGeneratorProcessorLocalBlocksMaxBlockBytes + *out = new(uint64) + **out = **in + } + if in.MetricsGeneratorProcessorLocalBlocksFlushCheckPeriod != nil { + in, out := &in.MetricsGeneratorProcessorLocalBlocksFlushCheckPeriod, &out.MetricsGeneratorProcessorLocalBlocksFlushCheckPeriod + *out = new(v1.Duration) + **out = **in + } + if in.MetricsGeneratorProcessorLocalBlocksTraceIdlePeriod != nil { + in, out := &in.MetricsGeneratorProcessorLocalBlocksTraceIdlePeriod, &out.MetricsGeneratorProcessorLocalBlocksTraceIdlePeriod + *out = new(v1.Duration) + **out = **in + } + if in.MetricsGeneratorProcessorLocalBlocksCompleteBlockTimeout != nil { + in, out := &in.MetricsGeneratorProcessorLocalBlocksCompleteBlockTimeout, &out.MetricsGeneratorProcessorLocalBlocksCompleteBlockTimeout + *out = new(v1.Duration) + **out = **in + } + if in.BlockRetention != nil { + in, out := &in.BlockRetention, &out.BlockRetention + *out = new(v1.Duration) + **out = **in + } + if in.MaxBytesPerTagValuesQuery != nil { + in, out := &in.MaxBytesPerTagValuesQuery, &out.MaxBytesPerTagValuesQuery + *out = new(int) + **out = **in + } + if in.MaxBlocksPerTagValuesQuery != nil { + in, out := &in.MaxBlocksPerTagValuesQuery, &out.MaxBlocksPerTagValuesQuery + *out = new(int) + **out = **in + } + if in.MaxSearchDuration != nil { + in, out := &in.MaxSearchDuration, &out.MaxSearchDuration + *out = new(v1.Duration) + **out = **in + } + if in.MaxBytesPerTrace != nil { + in, out := &in.MaxBytesPerTrace, &out.MaxBytesPerTrace + *out = new(int) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TempoLimitsInput. +func (in *TempoLimitsInput) DeepCopy() *TempoLimitsInput { + if in == nil { + return nil + } + out := new(TempoLimitsInput) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TempoSpec) DeepCopyInto(out *TempoSpec) { *out = *in