v1

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package v1 contains API Schema definitions for the adx-mon v1 API group +kubebuilder:object:generate=true +groupName=adx-mon.azure.com

Index

Constants

View Source
const (
	// ConditionCriteria reflects evaluation of Spec.Criteria / Spec.CriteriaExpression gating.
	// Status=True => execution permitted (criteria matched); False => execution skipped.
	ConditionCriteria = "Criteria"
	// ConditionCompleted indicates the controller has finished processing successfully (terminal success).
	ConditionCompleted = "Completed"
	// ConditionFailed indicates terminal failure (will not retry automatically without spec change or manual intervention).
	ConditionFailed = "Failed"
)

Shared condition type constants (mirroring LogFlowVerifier semantics where applicable) to ensure consistent signaling across SummaryRule, MetricsExporter, and Verifier style controllers. These complement the per-CRD owner conditions (e.g., SummaryRuleOwner, MetricsExporterOwner) and are optional; controllers set them when implementing richer gating / lifecycle semantics.

View Source
const (
	ReasonCriteriaNotMatched      = "CriteriaNotMatched"
	ReasonCriteriaExpressionError = "CriteriaExpressionError"
	ReasonCriteriaMatched         = "CriteriaMatched"
)

Standardized reasons for shared conditions (subset reused from verifier conditions file to avoid duplication). Controllers may introduce additional reasons; these are the common baseline.

View Source
const (
	// FunctionReconciled indicates whether the Function has been successfully processed by the ingestor.
	// True => the Function body has been executed in Kusto and is up to date; False => reconciliation failed or is pending retries.
	FunctionReconciled = "function.adx-mon.azure.com/Reconciled"
	// FunctionCriteriaMatch signals the evaluation outcome of CriteriaExpression against the ingestor's cluster labels.
	FunctionCriteriaMatch = "function.adx-mon.azure.com/CriteriaMatch"
)
View Source
const (
	// MetricsExporterOwner is the owner of the metrics exporter
	MetricsExporterOwner = "metricsexporter.adx-mon.azure.com"
	// MetricsExporterLastSuccessfulExecution tracks the end time of the last successful query execution
	MetricsExporterLastSuccessfulExecution = "metricsexporter.adx-mon.azure.com/LastSuccessfulExecution"
)
View Source
const (
	// SummaryRuleOwner is the owner of the summary rule
	SummaryRuleOwner = "summaryrule.adx-mon.azure.com"
	// SummaryRuleOperationIdOwner is the owner of the summary rule operation id
	SummaryRuleOperationIdOwner = "summaryrule.adx-mon.azure.com/OperationId"
	// SummaryRuleLastSuccessfulExecution tracks the end time of the last successful query execution
	SummaryRuleLastSuccessfulExecution = "summaryrule.adx-mon.azure.com/LastSuccessfulExecution"
	// SummaryRuleAsyncOperationPollInterval acts as a cooldown period between checking
	// the status of an async operation. This value is somewhat arbitrary, but the intent
	// is to not overwhelm the service with requests.
	SummaryRuleAsyncOperationPollInterval = 10 * time.Minute

	// SummaryRuleOwnerAnnotation is a per-CRD annotation that determines which component
	// should process the SummaryRule. Supported values are SummaryRuleOwnerIngestor and
	// SummaryRuleOwnerADXExporter. When empty or missing, the default behavior is for the
	// Ingestor to process the rule (backward compatibility).
	SummaryRuleOwnerAnnotation = "adx-mon.azure.com/owner"
	// SummaryRuleDesiredOwnerAnnotation is an optional per-CRD annotation used to request
	// a safe ownership transition. When set to SummaryRuleOwnerADXExporter, the ADX Exporter
	// will adopt ownership only when it is safe to do so (no inflight async ops and outside
	// a submission window), then it will set SummaryRuleOwnerAnnotation and clear this value.
	SummaryRuleDesiredOwnerAnnotation = "adx-mon.azure.com/desired-owner"
	// SummaryRuleOwnerIngestor specifies ownership by the Ingestor component
	SummaryRuleOwnerIngestor = "ingestor"
	// SummaryRuleOwnerADXExporter specifies ownership by the ADX Exporter component
	SummaryRuleOwnerADXExporter = "adx-exporter"
)

EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

View Source
const AlerterConditionOwner = "alerter.adx-mon.azure.com"
View Source
const AllDatabases = "*"

AllDatabases is a special value that indicates all databases +k8s:deepcopy-gen=false

View Source
const CollectorConditionOwner = "collector.adx-mon.azure.com"
View Source
const IngestorConditionOwner = "ingestor.adx-mon.azure.com"
View Source
const ManagementCommandConditionOwner = "managementcommand.adx-mon.azure.com"

EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "adx-mon.azure.com", Version: "v1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

func FormatClusterLabels added in v0.2.0

func FormatClusterLabels(labels map[string]string) string

FormatClusterLabels returns a stable, human-readable summary of cluster labels for status messages. Keys are sorted to make comparisons deterministic.

Types

type ADXCluster added in v0.2.0

type ADXCluster struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ADXClusterSpec   `json:"spec,omitempty"`
	Status ADXClusterStatus `json:"status,omitempty"`
}

ADXCluster is the Schema for the adxclusters API

func (*ADXCluster) DeepCopy added in v0.2.0

func (in *ADXCluster) DeepCopy() *ADXCluster

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXCluster.

func (*ADXCluster) DeepCopyInto added in v0.2.0

func (in *ADXCluster) DeepCopyInto(out *ADXCluster)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ADXCluster) DeepCopyObject added in v0.2.0

func (in *ADXCluster) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ADXClusterDatabaseSpec added in v0.2.0

type ADXClusterDatabaseSpec struct {
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:Pattern=^[a-zA-Z0-9_]+$
	//+kubebuilder:validation:MaxLength=64
	//+kubebuilder:validation:MinLength=1
	// ADX valid database name, required
	DatabaseName string `json:"databaseName"`
	//+kubebuilder:validation:Optional
	//+kubebuilder:default=30
	// default 30, optional
	RetentionInDays int `json:"retentionInDays,omitempty"`
	//+kubebuilder:validation:Optional
	// ADX retention policy, optional
	RetentionPolicy string `json:"retentionPolicy,omitempty"`
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:Enum=Metrics;Logs;Traces
	// TelemetryType: Required
	TelemetryType DatabaseTelemetryType `json:"telemetryType"`
}

func (*ADXClusterDatabaseSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterDatabaseSpec.

func (*ADXClusterDatabaseSpec) DeepCopyInto added in v0.2.0

func (in *ADXClusterDatabaseSpec) DeepCopyInto(out *ADXClusterDatabaseSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ADXClusterFederatedClusterSpec added in v0.2.0

type ADXClusterFederatedClusterSpec struct {
	//+kubebuilder:validation:Required
	// Endpoint is the URI of the federated ADX cluster. Example: "https://mycluster.kusto.windows.net"
	Endpoint string `json:"endpoint"`

	//+kubebuilder:validation:Required
	//+kubebuilder:validation:Pattern=^[a-zA-Z0-9_]+$
	HeartbeatDatabase string `json:"heartbeatDatabase"`

	//+kubebuilder:validation:Required
	//+kubebuilder:validation:Pattern=^[a-zA-Z0-9_]+$
	HeartbeatTable string `json:"heartbeatTable"`

	//+kubebuilder:validation:Required
	// Used for writing logs to the federated cluster.
	ManagedIdentityClientId string `json:"managedIdentityClientId"`
}

func (*ADXClusterFederatedClusterSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterFederatedClusterSpec.

func (*ADXClusterFederatedClusterSpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ADXClusterFederationSpec added in v0.2.0

type ADXClusterFederationSpec struct {

	//+kubebuilder:validation:Optional
	// If role is "Partition", specifies the Federated cluster(s) details for heartbeating.
	FederationTargets []ADXClusterFederatedClusterSpec `json:"federatedTargets,omitempty"`

	//+kubebuilder:validation:Optional
	// If role is "Partition", specifies the ADX cluster's partition details.  Open-ended map/object for partitioning metadata (geo, location, tenant, etc.).
	Partitioning *map[string]string `json:"partitioning,omitempty"`

	//+kubebuilder:validation:Optional
	// If role is "Federated", specifies the ADX cluster's heartbeat database.
	//+kubebuilder:validation:Pattern=^[a-zA-Z0-9_]+$
	HeartbeatDatabase *string `json:"heartbeatDatabase,omitempty"`

	//+kubebuilder:validation:Optional
	// If role is "Federated", specifies the ADX cluster's heartbeat table.
	//+kubebuilder:validation:Pattern=^[a-zA-Z0-9_]+$
	HeartbeatTable *string `json:"heartbeatTable,omitempty"`

	//+kubebuilder:validation:Optional
	//+kubebuilder:default="1h"
	//+kubebuilder:validation:Pattern=^(\d+h)?(\d+m)?(\d+s)?$
	// If role is "Federated", specifies the ADX cluster's heartbeat table TTL.
	HeartbeatTTL *string `json:"heartbeatTTL,omitempty"`
}

func (*ADXClusterFederationSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterFederationSpec.

func (*ADXClusterFederationSpec) DeepCopyInto added in v0.2.0

func (in *ADXClusterFederationSpec) DeepCopyInto(out *ADXClusterFederationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ADXClusterList added in v0.2.0

type ADXClusterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ADXCluster `json:"items"`
}

ADXClusterList contains a list of ADXCluster

func (*ADXClusterList) DeepCopy added in v0.2.0

func (in *ADXClusterList) DeepCopy() *ADXClusterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterList.

func (*ADXClusterList) DeepCopyInto added in v0.2.0

func (in *ADXClusterList) DeepCopyInto(out *ADXClusterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ADXClusterList) DeepCopyObject added in v0.2.0

func (in *ADXClusterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ADXClusterProvisionSpec added in v0.2.0

type ADXClusterProvisionSpec struct {
	//+kubebuilder:validation:Optional
	// SubscriptionId is the Azure subscription ID to use for provisioning. When the operator manages provisioning this value must be supplied explicitly; it is no longer auto-detected or defaulted by the controller.
	SubscriptionId string `json:"subscriptionId,omitempty"`
	//+kubebuilder:validation:Optional
	// ResourceGroup is the Azure resource group for the ADX cluster. This must be provided when provisioning is enabled; the operator no longer mutates the spec to fill this value.
	ResourceGroup string `json:"resourceGroup,omitempty"`
	//+kubebuilder:validation:Optional
	// Location is the Azure region for the ADX cluster (e.g., "eastus2"). Required when the operator provisions the cluster and must be set explicitly by the user.
	Location string `json:"location,omitempty"`
	//+kubebuilder:validation:Optional
	// SkuName is the Azure SKU for the ADX cluster (e.g., "Standard_L8as_v3"). Required when provisioning is enabled; defaults are not applied automatically by the controller.
	SkuName string `json:"skuName,omitempty"`
	//+kubebuilder:validation:Optional
	// Tier is the Azure ADX tier (e.g., "Standard"). Required when provisioning is enabled; the operator no longer assigns a default.
	Tier string `json:"tier,omitempty"`
	//+kubebuilder:validation:Optional
	// UserAssignedIdentities is a list of MSIs that can be attached to the cluster. They should be resource-ids of the form
	// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}
	UserAssignedIdentities []string `json:"userAssignedIdentities,omitempty"`
	//+kubebuilder:validation:Optional
	////+kubebuilder:default=false
	// AutoScale indicates whether to enable auto-scaling for the ADX cluster. Optional. Defaults to false if not specified.
	AutoScale bool `json:"autoScale,omitempty"`
	//+kubebuilder:validation:Optional
	//+kubebuilder:default=10
	// AutoScaleMax is the maximum number of nodes for auto-scaling. Optional. Defaults to 10 if not specified.
	AutoScaleMax int `json:"autoScaleMax,omitempty"`
	//+kubebuilder:validation:Optional
	//+kubebuilder:default=2
	// AutoScaleMin is the minimum number of nodes for auto-scaling. Optional. Defaults to 2 if not specified.
	AutoScaleMin int `json:"autoScaleMin,omitempty"`
}

func (*ADXClusterProvisionSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterProvisionSpec.

func (*ADXClusterProvisionSpec) DeepCopyInto added in v0.2.0

func (in *ADXClusterProvisionSpec) DeepCopyInto(out *ADXClusterProvisionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ADXClusterSpec added in v0.2.0

type ADXClusterSpec struct {
	//+kubebuilder:validation:Required
	//+kubebuilder:validation:Pattern=^[a-zA-Z0-9-]+$
	//+kubebuilder:validation:MaxLength=100
	// ClusterName is the unique, valid name for the ADX cluster. Must match ^[a-zA-Z0-9-]+$ and be at most 100 characters. Used for resource identification and naming in Azure.
	ClusterName string `json:"clusterName"`

	//+kubebuilder:validation:Format=uri
	// Endpoint is the URI of an existing ADX cluster. When set, the controller treats the cluster as bring-your-own (no Azure provisioning is attempted). Example: "https://mycluster.kusto.windows.net"
	Endpoint string `json:"endpoint,omitempty"`

	//+kubebuilder:validation:Optional
	// Databases is an array of ADXClusterDatabaseSpec objects. Each object defines a database to be created in the ADX cluster. If not specified, no databases will be created.
	Databases []ADXClusterDatabaseSpec `json:"databases,omitempty"`

	//+kubebuilder:validation:Optional
	// Provision contains Azure provisioning details for the ADX cluster. Reconciliation of Azure resources only occurs when this section is provided. If omitted, the operator skips provisioning and treats the cluster as bring-your-own.
	Provision *ADXClusterProvisionSpec `json:"provision,omitempty"`

	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:Enum=Partition;Federated
	// Role specifies the cluster's role: "Partition" (default, for data-holding clusters) or "Federated" (for the central federating cluster).
	Role *ClusterRole `json:"role,omitempty"`

	//+kubebuilder:validation:Optional
	// Supports cluster partitioning. Only relevant if Role is set.
	Federation *ADXClusterFederationSpec `json:"federation,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression evaluated against
	// operator cluster labels (region, environment, cloud, and any --cluster-labels key/value pairs).
	// Every label is exposed as a string variable that can be referenced directly, for example:
	//
	//   criteriaExpression: "region in ['eastus','westus'] && environment == 'prod'"
	//
	// Semantics:
	//   * Empty / omitted expression => the ADXCluster always reconciles.
	//   * When specified, the expression must evaluate to true for reconciliation; false skips quietly.
	//   * CEL parse, type-check, or evaluation errors are surfaced via status and block reconciliation
	//     until corrected.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

ADXClusterSpec defines the desired state of ADXCluster

func (*ADXClusterSpec) DeepCopy added in v0.2.0

func (in *ADXClusterSpec) DeepCopy() *ADXClusterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterSpec.

func (*ADXClusterSpec) DeepCopyInto added in v0.2.0

func (in *ADXClusterSpec) DeepCopyInto(out *ADXClusterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ADXClusterStatus added in v0.2.0

type ADXClusterStatus struct {
	//+kubebuilder:validation:Optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	//+kubebuilder:validation:Optional
	// Endpoint reflects the observed Kusto endpoint when the controller manages provisioning, or mirrors spec.endpoint when running in BYO mode.
	Endpoint string `json:"endpoint,omitempty"`
	//+kubebuilder:validation:Optional
	// AppliedProvisionState captures the last Azure provisioning state reconciled by the controller.
	AppliedProvisionState *AppliedProvisionState `json:"appliedProvisionState,omitempty"`
}

ADXClusterStatus defines the observed state of ADXCluster

func (*ADXClusterStatus) DeepCopy added in v0.2.0

func (in *ADXClusterStatus) DeepCopy() *ADXClusterStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ADXClusterStatus.

func (*ADXClusterStatus) DeepCopyInto added in v0.2.0

func (in *ADXClusterStatus) DeepCopyInto(out *ADXClusterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AlertRule

type AlertRule struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   AlertRuleSpec   `json:"spec,omitempty"`
	Status AlertRuleStatus `json:"status,omitempty"`
}

AlertRule is the Schema for the alertrules API

func (*AlertRule) DeepCopy

func (in *AlertRule) DeepCopy() *AlertRule

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertRule.

func (*AlertRule) DeepCopyInto

func (in *AlertRule) DeepCopyInto(out *AlertRule)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AlertRule) DeepCopyObject

func (in *AlertRule) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AlertRuleList

type AlertRuleList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []AlertRule `json:"items"`
}

AlertRuleList contains a list of AlertRule

func (*AlertRuleList) DeepCopy

func (in *AlertRuleList) DeepCopy() *AlertRuleList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertRuleList.

func (*AlertRuleList) DeepCopyInto

func (in *AlertRuleList) DeepCopyInto(out *AlertRuleList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AlertRuleList) DeepCopyObject

func (in *AlertRuleList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AlertRuleSpec

type AlertRuleSpec struct {
	Database string `json:"database,omitempty"`
	// +kubebuilder:validation:XValidation:rule="self == ” || duration(self) > duration('0s')",message="interval must be a valid positive duration"
	Interval metav1.Duration `json:"interval,omitempty"`
	Query    string          `json:"query,omitempty"`
	// +kubebuilder:validation:XValidation:rule="self == ” || duration(self) >= duration('0s')",message="autoMitigateAfter must be a valid duration"
	AutoMitigateAfter metav1.Duration `json:"autoMitigateAfter,omitempty"`
	Destination       string          `json:"destination,omitempty"`

	// Key/Value pairs used to determine when an alert can execute.  If empty, always execute.  Keys and values
	// are deployment specific and configured on alerter instances.  For example, an alerter instance may be
	// started with `--tag cloud=public`. If an AlertRule has `criteria: {cloud: public}`, then the rule will only
	// execute on that alerter. Any key/values pairs must match (case-insensitive) for the rule to execute.
	Criteria map[string][]string `json:"criteria,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression that provides a richer way
	// to determine if the alert should execute. The CEL environment is dynamically constructed from the alerter's
	// execution context (cloud, region, and any --tag key/value pairs). All variables are exposed as strings and
	// can be referenced directly by their tag name. For example:
	//
	//   criteriaExpression: "cloud == 'public' && region in ['eastus','westus'] && env == 'prod'"
	//
	// Execution semantics:
	//   * If neither criteria nor criteriaExpression are specified, the rule always executes.
	//   * If only criteriaExpression is specified, it must evaluate to true for the rule to execute.
	//   * If only criteria (map) is specified, existing matching behavior (any key/value match) applies.
	//   * If both are specified, the rule executes when BOTH the criteria map matches AND the expression evaluates to true.
	//
	// An invalid expression (parse or type check error) will treated as an error and prevent the rule from executing.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

AlertRuleSpec defines the desired state of AlertRule

func (*AlertRuleSpec) DeepCopy

func (in *AlertRuleSpec) DeepCopy() *AlertRuleSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertRuleSpec.

func (*AlertRuleSpec) DeepCopyInto

func (in *AlertRuleSpec) DeepCopyInto(out *AlertRuleSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AlertRuleSpec) UnmarshalJSON

func (a *AlertRuleSpec) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface for backward compatibility with and older version of the Criteria field. The older version was a map[string]string. This function will convert the older version to the new version.

type AlertRuleStatus

type AlertRuleStatus struct {
	Status        string      `json:"status,omitempty"`
	Message       string      `json:"message,omitempty"`
	LastQueryTime metav1.Time `json:"lastQueryTime,omitempty"`
	LastAlertTime metav1.Time `json:"lastAlertTime,omitempty"`
	// Conditions provide standardized status signaling. Controllers may
	// set shared conditions defined in conditions.go such as ConditionCriteria
	// to reflect evaluation of Spec.Criteria / Spec.CriteriaExpression.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

AlertRuleStatus defines the observed state of AlertRule

func (*AlertRuleStatus) DeepCopy

func (in *AlertRuleStatus) DeepCopy() *AlertRuleStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlertRuleStatus.

func (*AlertRuleStatus) DeepCopyInto

func (in *AlertRuleStatus) DeepCopyInto(out *AlertRuleStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Alerter added in v0.2.0

type Alerter struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   AlerterSpec   `json:"spec,omitempty"`
	Status AlerterStatus `json:"status,omitempty"`
}

Alerter is the Schema for the alerters API

func (*Alerter) DeepCopy added in v0.2.0

func (in *Alerter) DeepCopy() *Alerter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Alerter.

func (*Alerter) DeepCopyInto added in v0.2.0

func (in *Alerter) DeepCopyInto(out *Alerter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Alerter) DeepCopyObject added in v0.2.0

func (in *Alerter) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AlerterList added in v0.2.0

type AlerterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Alerter `json:"items"`
}

AlerterList contains a list of Alerter

func (*AlerterList) DeepCopy added in v0.2.0

func (in *AlerterList) DeepCopy() *AlerterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlerterList.

func (*AlerterList) DeepCopyInto added in v0.2.0

func (in *AlerterList) DeepCopyInto(out *AlerterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AlerterList) DeepCopyObject added in v0.2.0

func (in *AlerterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AlerterSpec added in v0.2.0

type AlerterSpec struct {
	//+kubebuilder:validation:Optional
	// Image is the container image to use for the alerter component. Optional; if omitted, a default image will be used.
	Image string `json:"image,omitempty"`

	//+kubebuilder:validation:Required
	//+kubebuilder:validation:Format=uri
	// NotificationEndpoint is the URI where alert notifications will be sent. This field is required.
	NotificationEndpoint string `json:"notificationEndpoint"`

	//+kubebuilder:validation:Required
	// ADXClusterSelector is a label selector used to select the ADXCluster CRDs this alerter should target. This field is required.
	ADXClusterSelector *metav1.LabelSelector `json:"adxClusterSelector"`

	// AppliedProvisionState is a JSON-serialized snapshot of the CRD
	// as last applied by the operator. This is set by the operator and is read-only for users.
	AppliedProvisionState string `json:"appliedProvisionState,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression evaluated against
	// operator cluster labels (region, environment, cloud, and any --cluster-labels key/value pairs).
	// All labels are exposed as string variables that can be referenced directly. Example:
	//
	//   criteriaExpression: "region == 'eastus' && environment == 'prod'"
	//
	// Semantics:
	//   * Empty / omitted expression => the Alerter always reconciles.
	//   * When specified, the expression must evaluate to true for reconciliation; false skips quietly.
	//   * CEL parse, type-check, or evaluation errors surface via status and block reconciliation until
	//     corrected.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

AlerterSpec defines the desired state of Alerter

func (*AlerterSpec) DeepCopy added in v0.2.0

func (in *AlerterSpec) DeepCopy() *AlerterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlerterSpec.

func (*AlerterSpec) DeepCopyInto added in v0.2.0

func (in *AlerterSpec) DeepCopyInto(out *AlerterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AlerterSpec) LoadAppliedProvisioningState added in v0.2.0

func (s *AlerterSpec) LoadAppliedProvisioningState() (*AlerterSpec, error)

func (*AlerterSpec) StoreAppliedProvisioningState added in v0.2.0

func (s *AlerterSpec) StoreAppliedProvisioningState() error

type AlerterStatus added in v0.2.0

type AlerterStatus struct {
	//+kubebuilder:validation:Optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

AlerterStatus defines the observed state of Alerter

func (*AlerterStatus) DeepCopy added in v0.2.0

func (in *AlerterStatus) DeepCopy() *AlerterStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlerterStatus.

func (*AlerterStatus) DeepCopyInto added in v0.2.0

func (in *AlerterStatus) DeepCopyInto(out *AlerterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AppliedProvisionState added in v0.2.0

type AppliedProvisionState struct {
	SkuName                string   `json:"skuName,omitempty"`
	Tier                   string   `json:"tier,omitempty"`
	UserAssignedIdentities []string `json:"userAssignedIdentities,omitempty"`
}

func (*AppliedProvisionState) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppliedProvisionState.

func (*AppliedProvisionState) DeepCopyInto added in v0.2.0

func (in *AppliedProvisionState) DeepCopyInto(out *AppliedProvisionState)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AsyncOperation added in v0.2.0

type AsyncOperation struct {
	OperationId string `json:"operationId"`
	StartTime   string `json:"startTime"`
	EndTime     string `json:"endTime"`
}

AsyncOperation represents a serialized async operation. We store AsyncOperations in a Condition's Message field. Each Message field has a max length of 32768. Our array of AsyncOperations, with a single entry: [{"operationId": "9028e8b7-7350-4870-a0e7-ab3538049876", "startTime": "2025-03-12T14:48:23.8612789Z", "endTime": "2025-03-12T14:48:23.8612789Z"}] So we can hold 236 entries. For safety, we'll limit it to 200. We only store incomplete AsyncOperations, so they're often pruned; however, if we reach the maximum capacity, we'll remove the oldest AsyncOperation.

func (*AsyncOperation) DeepCopy added in v0.2.0

func (in *AsyncOperation) DeepCopy() *AsyncOperation

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AsyncOperation.

func (*AsyncOperation) DeepCopyInto added in v0.2.0

func (in *AsyncOperation) DeepCopyInto(out *AsyncOperation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClusterRole added in v0.2.0

type ClusterRole string
const (
	ClusterRolePartition ClusterRole = "Partition"
	ClusterRoleFederated ClusterRole = "Federated"
)

type Collector added in v0.2.0

type Collector struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   CollectorSpec   `json:"spec,omitempty"`
	Status CollectorStatus `json:"status,omitempty"`
}

Collector is the Schema for the collectors API

func (*Collector) DeepCopy added in v0.2.0

func (in *Collector) DeepCopy() *Collector

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Collector.

func (*Collector) DeepCopyInto added in v0.2.0

func (in *Collector) DeepCopyInto(out *Collector)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Collector) DeepCopyObject added in v0.2.0

func (in *Collector) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CollectorList added in v0.2.0

type CollectorList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Collector `json:"items"`
}

CollectorList contains a list of Collector

func (*CollectorList) DeepCopy added in v0.2.0

func (in *CollectorList) DeepCopy() *CollectorList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorList.

func (*CollectorList) DeepCopyInto added in v0.2.0

func (in *CollectorList) DeepCopyInto(out *CollectorList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*CollectorList) DeepCopyObject added in v0.2.0

func (in *CollectorList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type CollectorSpec added in v0.2.0

type CollectorSpec struct {
	//+kubebuilder:validation:Optional
	// Image is the container image to use for the collector component. Optional; if omitted, a default image will be used.
	Image string `json:"image,omitempty"`

	//+kubebuilder:validation:Optional
	//+kubebuilder:validation:Format=uri
	// IngestorEndpoint is the URI endpoint for the ingestor service that this collector should send data to. Optional; if omitted, the operator will configure it automatically.
	IngestorEndpoint string `json:"ingestorEndpoint,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression evaluated against
	// operator cluster labels (region, environment, cloud, and any --cluster-labels key/value pairs).
	// All labels are exposed as string variables. Example:
	//
	//   criteriaExpression: "environment == 'prod' && region == 'eastus'"
	//
	// Semantics:
	//   * Empty / omitted expression => the Collector always reconciles.
	//   * When specified, the expression must evaluate to true for reconciliation; false skips quietly.
	//   * CEL parse, type-check, or evaluation errors surface via status and block reconciliation until
	//     corrected.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

CollectorSpec defines the desired state of Collector

func (*CollectorSpec) DeepCopy added in v0.2.0

func (in *CollectorSpec) DeepCopy() *CollectorSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorSpec.

func (*CollectorSpec) DeepCopyInto added in v0.2.0

func (in *CollectorSpec) DeepCopyInto(out *CollectorSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CollectorStatus added in v0.2.0

type CollectorStatus struct {
	//+kubebuilder:validation:Optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

CollectorStatus defines the observed state of Collector

func (*CollectorStatus) DeepCopy added in v0.2.0

func (in *CollectorStatus) DeepCopy() *CollectorStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CollectorStatus.

func (*CollectorStatus) DeepCopyInto added in v0.2.0

func (in *CollectorStatus) DeepCopyInto(out *CollectorStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConditionedObject added in v0.2.0

type ConditionedObject interface {
	GetCondition() *metav1.Condition
	SetCondition(condition metav1.Condition)
}

ConditionedObject defines interface for objects that can have conditions +k8s:deepcopy-gen=false

type DatabaseTelemetryType added in v0.2.0

type DatabaseTelemetryType string
const (
	DatabaseTelemetryMetrics DatabaseTelemetryType = "Metrics"
	DatabaseTelemetryLogs    DatabaseTelemetryType = "Logs"
	DatabaseTelemetryTraces  DatabaseTelemetryType = "Traces"

	ADXClusterConditionOwner = "adxcluster.adx-mon.azure.com"
)

type Function

type Function struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   FunctionSpec   `json:"spec,omitempty"`
	Status FunctionStatus `json:"status,omitempty"`
}

Function defines a KQL function to be maintained in the Kusto cluster

func (*Function) DeepCopy

func (in *Function) DeepCopy() *Function

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Function.

func (*Function) DeepCopyInto

func (in *Function) DeepCopyInto(out *Function)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Function) DeepCopyObject

func (in *Function) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*Function) GetCondition added in v0.2.0

func (f *Function) GetCondition() *metav1.Condition

GetCondition returns the FunctionReconciled condition, or nil if it has not been set.

func (*Function) SetCondition added in v0.2.0

func (f *Function) SetCondition(condition metav1.Condition)

SetCondition updates/creates a condition entry while ensuring mandatory fields are populated. This method satisfies the ConditionedObject interface and should generally be used via the higher level helpers (SetReconcileCondition, SetCriteriaMatchCondition) that provide semantic defaults.

func (*Function) SetCriteriaMatchCondition added in v0.2.0

func (f *Function) SetCriteriaMatchCondition(matched bool, expression string, err error, clusterLabels map[string]string)

SetCriteriaMatchCondition records the outcome of CriteriaExpression evaluation. An optional clusterLabels map may be provided to enrich messages for debugging. Passing nil is permitted and treated as "no labels".

func (*Function) SetReconcileCondition added in v0.2.0

func (f *Function) SetReconcileCondition(status metav1.ConditionStatus, reason, message string)

SetReconcileCondition updates the FunctionReconciled condition with status, reason, and message.

type FunctionList

type FunctionList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Function `json:"items"`
}

FunctionList contains a list of Function

func (*FunctionList) DeepCopy

func (in *FunctionList) DeepCopy() *FunctionList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FunctionList.

func (*FunctionList) DeepCopyInto

func (in *FunctionList) DeepCopyInto(out *FunctionList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*FunctionList) DeepCopyObject

func (in *FunctionList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type FunctionSpec

type FunctionSpec struct {
	//+kubebuilder:validation:Optional
	// This flag tells the controller to suspend subsequent executions, it does
	// not apply to already started executions.  Defaults to false.
	Suspend *bool `json:"suspend,omitempty"`

	//+kubebuilder:validation:Required
	// Database is the name of the database in which the function will be created
	Database string `json:"database"`

	//+kubebuilder:validation:Required
	// Body is the KQL body of the function
	Body string `json:"body"`

	//+kubebuilder:validation:Optional
	// AppliedEndpoint is a JSON-serialized of the endpoints that the function
	// is applied to. This is set by the operator and is read-only for users.
	AppliedEndpoint string `json:"appliedEndpoint,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression evaluated against
	// operator cluster labels (region, environment, cloud, and any --cluster-labels key/value pairs).
	// Every label is exposed as a string variable. Example:
	//
	//   criteriaExpression: "environment == 'prod' && region in ['eastus','westus']"
	//
	// Semantics:
	//   * Empty / omitted expression => the Function always reconciles.
	//   * When specified, the expression must evaluate to true for reconciliation; false skips quietly.
	//   * CEL parse, type-check, or evaluation errors surface via status and block reconciliation until
	//     corrected.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

FunctionSpec defines the desired state of Function

func (*FunctionSpec) DeepCopy

func (in *FunctionSpec) DeepCopy() *FunctionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FunctionSpec.

func (*FunctionSpec) DeepCopyInto

func (in *FunctionSpec) DeepCopyInto(out *FunctionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FunctionStatus

type FunctionStatus struct {
	// ObservedGeneration is the most recent generation observed for this Function
	ObservedGeneration int64 `json:"observedGeneration"`
	// LastTimeReconciled is the last time the Function was reconciled
	LastTimeReconciled metav1.Time `json:"lastTimeReconciled"`
	// Message is a human-readable message indicating details about the Function
	Message string `json:"message,omitempty"`
	// Reason is a string that communicates the reason for a transition
	Reason string `json:"reason,omitempty"`
	// Status is an enum that represents the status of the Function
	Status FunctionStatusEnum `json:"status"`
	// Error is a string that communicates any error message if one exists
	Error string `json:"error,omitempty"`
	// Conditions conveys detailed reconciliation state in a Kubernetes-native format.
	// Controllers set FunctionCriteriaMatch to surface criteria gating decisions and
	// FunctionReconciled to report the outcome of the most recent reconciliation attempt.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

FunctionStatus defines the observed state of Function

func (*FunctionStatus) DeepCopy

func (in *FunctionStatus) DeepCopy() *FunctionStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FunctionStatus.

func (*FunctionStatus) DeepCopyInto

func (in *FunctionStatus) DeepCopyInto(out *FunctionStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FunctionStatusEnum

type FunctionStatusEnum string

FunctionStatusEnum defines the possible status values for FunctionStatus

const (
	PermanentFailure FunctionStatusEnum = "PermanentFailure"
	Failed           FunctionStatusEnum = "Failed"
	Success          FunctionStatusEnum = "Success"
)

type Ingestor added in v0.2.0

type Ingestor struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   IngestorSpec   `json:"spec,omitempty"`
	Status IngestorStatus `json:"status,omitempty"`
}

Ingestor is the Schema for the ingestors API

func (*Ingestor) DeepCopy added in v0.2.0

func (in *Ingestor) DeepCopy() *Ingestor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Ingestor.

func (*Ingestor) DeepCopyInto added in v0.2.0

func (in *Ingestor) DeepCopyInto(out *Ingestor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Ingestor) DeepCopyObject added in v0.2.0

func (in *Ingestor) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngestorList added in v0.2.0

type IngestorList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Ingestor `json:"items"`
}

IngestorList contains a list of Ingestor

func (*IngestorList) DeepCopy added in v0.2.0

func (in *IngestorList) DeepCopy() *IngestorList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngestorList.

func (*IngestorList) DeepCopyInto added in v0.2.0

func (in *IngestorList) DeepCopyInto(out *IngestorList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngestorList) DeepCopyObject added in v0.2.0

func (in *IngestorList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngestorSpec added in v0.2.0

type IngestorSpec struct {
	//+kubebuilder:validation:Optional
	// Image is the container image to use for the ingestor component. Optional; if omitted, a default image will be used.
	Image string `json:"image,omitempty"`

	//+kubebuilder:validation:Optional
	//+kubebuilder:default=1
	// Replicas is the number of ingestor replicas to run. Optional; defaults to 1 if omitted.
	Replicas int32 `json:"replicas,omitempty"`

	//+kubebuilder:validation:Optional
	// Endpoint is the endpoint to use for the ingestor. If running in a cluster, this should be the service name; otherwise, the operator will generate an endpoint. Optional.
	Endpoint string `json:"endpoint,omitempty"`

	//+kubebuilder:validation:Optional
	//+kubebuilder:default=false
	// ExposeExternally indicates if the ingestor should be exposed externally as reflected in the Endpoint. Optional; defaults to false.
	ExposeExternally bool `json:"exposeExternally,omitempty"`

	//+kubebuilder:validation:Required
	// ADXClusterSelector is a label selector used to select the ADXCluster CRDs this ingestor should target. This field is required.
	ADXClusterSelector *metav1.LabelSelector `json:"adxClusterSelector"`

	// AppliedProvisionState is a JSON-serialized snapshot of the CRD
	// as last applied by the operator. This is set by the operator and is read-only for users.
	AppliedProvisionState string `json:"appliedProvisionState,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression evaluated against
	// operator cluster labels (region, environment, cloud, and any --cluster-labels key/value pairs).
	// All labels are exposed as string variables. Example:
	//
	//   criteriaExpression: "environment == 'prod' && region == 'eastus'"
	//
	// Semantics:
	//   * Empty / omitted expression => the Ingestor always reconciles.
	//   * When specified, the expression must evaluate to true for reconciliation; false skips quietly.
	//   * CEL parse, type-check, or evaluation errors surface via status and block reconciliation until
	//     corrected.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

IngestorSpec defines the desired state of Ingestor

func (*IngestorSpec) DeepCopy added in v0.2.0

func (in *IngestorSpec) DeepCopy() *IngestorSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngestorSpec.

func (*IngestorSpec) DeepCopyInto added in v0.2.0

func (in *IngestorSpec) DeepCopyInto(out *IngestorSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngestorSpec) LoadAppliedProvisioningState added in v0.2.0

func (s *IngestorSpec) LoadAppliedProvisioningState() (*IngestorSpec, error)

func (*IngestorSpec) StoreAppliedProvisioningState added in v0.2.0

func (s *IngestorSpec) StoreAppliedProvisioningState() error

type IngestorStatus added in v0.2.0

type IngestorStatus struct {
	//+kubebuilder:validation:Optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

IngestorStatus defines the observed state of Ingestor

func (*IngestorStatus) DeepCopy added in v0.2.0

func (in *IngestorStatus) DeepCopy() *IngestorStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngestorStatus.

func (*IngestorStatus) DeepCopyInto added in v0.2.0

func (in *IngestorStatus) DeepCopyInto(out *IngestorStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManagementCommand added in v0.2.0

type ManagementCommand struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ManagementCommandSpec   `json:"spec,omitempty"`
	Status ManagementCommandStatus `json:"status,omitempty"`
}

ManagementCommand is the Schema for the managementcommands API

func (*ManagementCommand) DeepCopy added in v0.2.0

func (in *ManagementCommand) DeepCopy() *ManagementCommand

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementCommand.

func (*ManagementCommand) DeepCopyInto added in v0.2.0

func (in *ManagementCommand) DeepCopyInto(out *ManagementCommand)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ManagementCommand) DeepCopyObject added in v0.2.0

func (in *ManagementCommand) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ManagementCommand) GetCondition added in v0.2.0

func (m *ManagementCommand) GetCondition() *metav1.Condition

func (*ManagementCommand) SetCondition added in v0.2.0

func (m *ManagementCommand) SetCondition(c metav1.Condition)

type ManagementCommandList added in v0.2.0

type ManagementCommandList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ManagementCommand `json:"items"`
}

ManagementCommandList contains a list of ManagementCommand

func (*ManagementCommandList) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementCommandList.

func (*ManagementCommandList) DeepCopyInto added in v0.2.0

func (in *ManagementCommandList) DeepCopyInto(out *ManagementCommandList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ManagementCommandList) DeepCopyObject added in v0.2.0

func (in *ManagementCommandList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ManagementCommandSpec added in v0.2.0

type ManagementCommandSpec struct {

	// Database is the target database for a management command. Not all management commands
	// are database specific.
	// +kubebuilder:validation:Optional
	Database string `json:"database,omitempty"`

	// Body is the management command to execute
	Body string `json:"body"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression evaluated against
	// operator / ingestor cluster labels (region, environment, cloud, and any --cluster-labels key/value
	// pairs). All labels are exposed as string variables. Example:
	//
	//   criteriaExpression: "environment == 'prod' && region == 'eastus'"
	//
	// Semantics:
	//   * Empty / omitted expression => the ManagementCommand always executes when selected.
	//   * When specified, the expression must evaluate to true; false skips execution.
	//   * CEL parse, type-check, or evaluation errors surface via status and block execution until
	//     corrected.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

ManagementCommandSpec defines the desired state of ManagementCommand

func (*ManagementCommandSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementCommandSpec.

func (*ManagementCommandSpec) DeepCopyInto added in v0.2.0

func (in *ManagementCommandSpec) DeepCopyInto(out *ManagementCommandSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ManagementCommandStatus added in v0.2.0

type ManagementCommandStatus struct {

	// Conditions is a list of conditions that apply to the Function
	// +kubebuilder:validation:Optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

ManagementCommandStatus defines the observed state of ManagementCommand

func (*ManagementCommandStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ManagementCommandStatus.

func (*ManagementCommandStatus) DeepCopyInto added in v0.2.0

func (in *ManagementCommandStatus) DeepCopyInto(out *ManagementCommandStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MetricsExporter added in v0.2.0

type MetricsExporter struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MetricsExporterSpec   `json:"spec,omitempty"`
	Status MetricsExporterStatus `json:"status,omitempty"`
}

MetricsExporter is the Schema for the metricsexporters API

func (*MetricsExporter) DeepCopy added in v0.2.0

func (in *MetricsExporter) DeepCopy() *MetricsExporter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsExporter.

func (*MetricsExporter) DeepCopyInto added in v0.2.0

func (in *MetricsExporter) DeepCopyInto(out *MetricsExporter)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MetricsExporter) DeepCopyObject added in v0.2.0

func (in *MetricsExporter) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*MetricsExporter) GetCondition added in v0.2.0

func (me *MetricsExporter) GetCondition() *metav1.Condition

GetCondition gets the main condition for the MetricsExporter

func (*MetricsExporter) GetLastExecutionTime added in v0.2.0

func (me *MetricsExporter) GetLastExecutionTime() *time.Time

GetLastExecutionTime extracts the last execution time from MetricsExporter status

func (*MetricsExporter) NextExecutionWindow added in v0.2.0

func (me *MetricsExporter) NextExecutionWindow(clk clock.Clock) (windowStartTime time.Time, windowEndTime time.Time)

NextExecutionWindow calculates the next execution window for a MetricsExporter This follows the same pattern as SummaryRule.NextExecutionWindow

func (*MetricsExporter) SetCondition added in v0.2.0

func (me *MetricsExporter) SetCondition(condition metav1.Condition)

SetCondition sets the main condition for the MetricsExporter

func (*MetricsExporter) SetLastExecutionTime added in v0.2.0

func (me *MetricsExporter) SetLastExecutionTime(endTime time.Time)

SetLastExecutionTime updates the last execution time in MetricsExporter status

func (*MetricsExporter) ShouldExecuteQuery added in v0.2.0

func (me *MetricsExporter) ShouldExecuteQuery(clk clock.Clock) bool

ShouldExecuteQuery determines if a query should be executed based on timing and interval This follows the same pattern as SummaryRule.ShouldSubmitRule

type MetricsExporterList added in v0.2.0

type MetricsExporterList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MetricsExporter `json:"items"`
}

MetricsExporterList contains a list of MetricsExporter

func (*MetricsExporterList) DeepCopy added in v0.2.0

func (in *MetricsExporterList) DeepCopy() *MetricsExporterList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsExporterList.

func (*MetricsExporterList) DeepCopyInto added in v0.2.0

func (in *MetricsExporterList) DeepCopyInto(out *MetricsExporterList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MetricsExporterList) DeepCopyObject added in v0.2.0

func (in *MetricsExporterList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MetricsExporterSpec added in v0.2.0

type MetricsExporterSpec struct {
	// Database is the name of the database to query
	Database string `json:"database"`

	// Body is the KQL query to execute
	Body string `json:"body"`

	// Interval defines how often to execute the query and refresh metrics
	Interval metav1.Duration `json:"interval"`

	// Transform defines how to convert query results to metrics
	Transform TransformConfig `json:"transform"`

	// Criteria for cluster-based execution selection (same pattern as SummaryRule)
	// Key/Value pairs used to determine when a metrics exporter can execute. If empty, always execute. Keys and values
	// are deployment specific and configured on adxexporter instances. For example, an adxexporter instance may be
	// started with `--cluster-labels=region=eastus,environment=production`. If a MetricsExporter has `criteria: {region: [eastus], environment: [production]}`, then the rule will only
	// execute on that adxexporter. Any key/values pairs must match (case-insensitive) for the rule to execute.
	Criteria map[string][]string `json:"criteria,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression that provides a richer way
	// to determine if the metrics exporter should execute. The CEL environment is dynamically constructed from the
	// exporter's cluster labels (e.g. region, cloud, environment, and any --cluster-labels key/value pairs). All variables
	// are exposed as strings and can be referenced directly by their label name. For example:
	//
	//   criteriaExpression: "region in ['eastus','westus'] && environment == 'prod'"
	//
	// Execution semantics mirror AlertRule:
	//   * If neither criteria nor criteriaExpression are specified, the exporter always executes.
	//   * If only criteriaExpression is specified, it must evaluate to true for execution.
	//   * If only criteria is specified, existing matching behavior (any key/value match) applies.
	//   * If both are specified, BOTH must match (criteria map match AND expression true).
	//
	// An invalid expression (parse or type check error) will be treated as an error and prevent execution.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

MetricsExporterSpec defines the desired state of MetricsExporter

func (*MetricsExporterSpec) DeepCopy added in v0.2.0

func (in *MetricsExporterSpec) DeepCopy() *MetricsExporterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsExporterSpec.

func (*MetricsExporterSpec) DeepCopyInto added in v0.2.0

func (in *MetricsExporterSpec) DeepCopyInto(out *MetricsExporterSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MetricsExporterStatus added in v0.2.0

type MetricsExporterStatus struct {
	// Conditions is an array of current observed MetricsExporter conditions.
	// Controllers set at minimum the owner condition (MetricsExporterOwner) and may also
	// use shared conditions defined in conditions.go: ConditionCriteria, ConditionCompleted, ConditionFailed.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MetricsExporterStatus defines the observed state of MetricsExporter

func (*MetricsExporterStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricsExporterStatus.

func (*MetricsExporterStatus) DeepCopyInto added in v0.2.0

func (in *MetricsExporterStatus) DeepCopyInto(out *MetricsExporterStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SummaryRule added in v0.2.0

type SummaryRule struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   SummaryRuleSpec   `json:"spec,omitempty"`
	Status SummaryRuleStatus `json:"status,omitempty"`
}

SummaryRule is the Schema for the summaryrules API

func (*SummaryRule) BackfillAsyncOperations added in v0.2.0

func (s *SummaryRule) BackfillAsyncOperations(clk clock.Clock)

func (*SummaryRule) DeepCopy added in v0.2.0

func (in *SummaryRule) DeepCopy() *SummaryRule

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SummaryRule.

func (*SummaryRule) DeepCopyInto added in v0.2.0

func (in *SummaryRule) DeepCopyInto(out *SummaryRule)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SummaryRule) DeepCopyObject added in v0.2.0

func (in *SummaryRule) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*SummaryRule) GetAsyncOperations added in v0.2.0

func (s *SummaryRule) GetAsyncOperations() []AsyncOperation

func (*SummaryRule) GetCondition added in v0.2.0

func (s *SummaryRule) GetCondition() *metav1.Condition

func (*SummaryRule) GetLastExecutionTime added in v0.2.0

func (s *SummaryRule) GetLastExecutionTime() *time.Time

func (*SummaryRule) NextExecutionWindow added in v0.2.0

func (s *SummaryRule) NextExecutionWindow(clk clock.Clock) (windowStartTime time.Time, windowEndTime time.Time)

func (*SummaryRule) RemoveAsyncOperation added in v0.2.0

func (s *SummaryRule) RemoveAsyncOperation(operationId string)

func (*SummaryRule) SetAsyncOperation added in v0.2.0

func (s *SummaryRule) SetAsyncOperation(operation AsyncOperation)

func (*SummaryRule) SetCondition added in v0.2.0

func (s *SummaryRule) SetCondition(c metav1.Condition)

func (*SummaryRule) SetLastExecutionTime added in v0.2.0

func (s *SummaryRule) SetLastExecutionTime(endTime time.Time)

func (*SummaryRule) ShouldSubmitRule added in v0.2.0

func (s *SummaryRule) ShouldSubmitRule(clk clock.Clock) bool

type SummaryRuleList added in v0.2.0

type SummaryRuleList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []SummaryRule `json:"items"`
}

SummaryRuleList contains a list of SummaryRule

func (*SummaryRuleList) DeepCopy added in v0.2.0

func (in *SummaryRuleList) DeepCopy() *SummaryRuleList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SummaryRuleList.

func (*SummaryRuleList) DeepCopyInto added in v0.2.0

func (in *SummaryRuleList) DeepCopyInto(out *SummaryRuleList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SummaryRuleList) DeepCopyObject added in v0.2.0

func (in *SummaryRuleList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SummaryRuleSpec added in v0.2.0

type SummaryRuleSpec struct {
	// Database is the name of the database in which the function will be created
	Database string `json:"database"`
	// Table is rule output destination
	Table string `json:"table"`
	// Name is the name of the rule (deprecated and not used - use `metadata.name` instead)
	Name string `json:"name,omitempty"`
	// Body is the KQL body of the function
	Body string `json:"body"`
	// Interval is the cadence at which the rule will be executed
	// +kubebuilder:validation:XValidation:rule="duration(self) > duration('0s')",message="interval must be a valid positive duration"
	Interval metav1.Duration `json:"interval"`
	// IngestionDelay is subtracted from the execution window start and end times to account
	// for data ingestion latency, ensuring the query only processes fully ingested data.
	// NOTE: Current implementation also subtracts this delay from the "now" used to decide
	// whether an interval has elapsed (i.e. scheduling readiness). This effectively lengthens
	// wall‑clock spacing between executions to Interval + IngestionDelay. If you intend only
	// to shift the processed window but keep wall‑clock cadence at Interval, this behavior
	// will be adjusted in a future release.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == ” || duration(self) >= duration('0s')",message="ingestionDelay must be a valid duration"
	IngestionDelay *metav1.Duration `json:"ingestionDelay,omitempty"`

	// Key/Value pairs used to determine when a summary rule can execute. If empty, always execute. Keys and values
	// are deployment specific and configured on ingestor instances. For example, an ingestor instance may be
	// started with `--cluster-labels=region=eastus`. If a SummaryRule has `criteria: {region: [eastus]}`, then the rule will only
	// execute on that ingestor. Any key/values pairs must match (case-insensitive) for the rule to execute.
	Criteria map[string][]string `json:"criteria,omitempty"`

	// CriteriaExpression is an optional CEL (Common Expression Language) expression that provides a richer way
	// to determine if the summary rule should execute. The CEL environment is dynamically constructed from the
	// ingestor's cluster labels (e.g. region, cloud, and any --cluster-labels key/value pairs). All variables are
	// exposed as strings and can be referenced directly by their label name. For example:
	//
	//   criteriaExpression: "region in ['eastus','westus'] && environment == 'prod'"
	//
	// Execution semantics:
	//   * If neither criteria nor criteriaExpression are specified, the rule always executes.
	//   * If only criteriaExpression is specified, it must evaluate to true for the rule to execute.
	//   * If only criteria (map) is specified, existing matching behavior (any key/value match) applies.
	//   * If both are specified, the rule executes when BOTH the criteria map matches AND the expression evaluates to true.
	//
	// An invalid expression (parse or type check error) will be treated as an error and prevent the rule from executing.
	CriteriaExpression string `json:"criteriaExpression,omitempty"`
}

SummaryRuleSpec defines the desired state of SummaryRule

func (*SummaryRuleSpec) DeepCopy added in v0.2.0

func (in *SummaryRuleSpec) DeepCopy() *SummaryRuleSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SummaryRuleSpec.

func (*SummaryRuleSpec) DeepCopyInto added in v0.2.0

func (in *SummaryRuleSpec) DeepCopyInto(out *SummaryRuleSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SummaryRuleStatus added in v0.2.0

type SummaryRuleStatus struct {
	// Conditions is an array of current observed SummaryRule conditions.
	// SummaryRule controllers set at minimum the owner condition (SummaryRuleOwner) and may also
	// use shared conditions defined in conditions.go: ConditionCriteria, ConditionCompleted, ConditionFailed.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

SummaryRuleStatus defines the observed state of Function

func (*SummaryRuleStatus) DeepCopy added in v0.2.0

func (in *SummaryRuleStatus) DeepCopy() *SummaryRuleStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SummaryRuleStatus.

func (*SummaryRuleStatus) DeepCopyInto added in v0.2.0

func (in *SummaryRuleStatus) DeepCopyInto(out *SummaryRuleStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TransformConfig added in v0.2.0

type TransformConfig struct {
	// MetricNameColumn specifies which column contains the metric name
	MetricNameColumn string `json:"metricNameColumn,omitempty"`

	// MetricNamePrefix provides optional team/project namespacing for all metrics
	MetricNamePrefix string `json:"metricNamePrefix,omitempty"`

	// ValueColumns specifies columns to use as metric values
	ValueColumns []string `json:"valueColumns"`

	// TimestampColumn specifies which column contains the timestamp
	TimestampColumn string `json:"timestampColumn"`

	// LabelColumns specifies columns to use as metric labels
	LabelColumns []string `json:"labelColumns,omitempty"`

	// DefaultMetricName provides a fallback if MetricNameColumn is not specified
	DefaultMetricName string `json:"defaultMetricName,omitempty"`
}

TransformConfig defines how to convert query results to metrics

func (*TransformConfig) DeepCopy added in v0.2.0

func (in *TransformConfig) DeepCopy() *TransformConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TransformConfig.

func (*TransformConfig) DeepCopyInto added in v0.2.0

func (in *TransformConfig) DeepCopyInto(out *TransformConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL