Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0393139
CSPL-3558 Adding extra validation for integraion test
kasiakoziol Oct 2, 2025
4d3865c
CSPL-3558 Refactoring
kasiakoziol Oct 2, 2025
c354062
CSPL-3558 Adding scenario for update and delete
kasiakoziol Oct 3, 2025
c204d52
CSPL-3558 Adding helm test
kasiakoziol Oct 3, 2025
027c039
CSPL-3558 Update of k8s version
kasiakoziol Oct 3, 2025
c5a97dc
CSPL-3558 Fix metrics-server installation issues after k8s version up…
kasiakoziol Oct 6, 2025
fc28db0
CSPL-3558 Adding additional tests
kasiakoziol Oct 7, 2025
a7ae40f
CSPL-3558 Fixing helm tests
kasiakoziol Oct 9, 2025
13b8f4f
Merge branch 'feature/CSPL-3551-ingestion-cr-todos' into feature/CSPL…
kasiakoziol Oct 13, 2025
4622102
CSPL-3558 Fix tests after merge
kasiakoziol Oct 13, 2025
9fbcb4a
CSPL-3558 Fix helm tests
kasiakoziol Oct 16, 2025
7480ed8
CSPL-4022 Remove pipeline config from inputs
kasiakoziol Oct 17, 2025
d21a9a3
CSPL-4022 Remove bus inputs
kasiakoziol Oct 20, 2025
7edb81b
CSPL-4022 Introduce BusConfiguration CR
kasiakoziol Oct 22, 2025
a5b2db3
CSPL-4022 Update docs and tests
kasiakoziol Oct 22, 2025
9f57abc
CSPL-4022 Update ns reference for BusConfiguration
kasiakoziol Oct 23, 2025
10a4fc0
CSPL-4022 Fixing tests and adding bus config to ingestor controller
kasiakoziol Oct 23, 2025
db02bfd
CSPL-4022 Fix update behaviour
kasiakoziol Oct 23, 2025
ceb2c71
CSPL-4022 Docs update
kasiakoziol Oct 27, 2025
6618a3f
Merge pull request #1600 from splunk/feature/CSPL-4022-move-inputs-to-cr
kasiakoziol Oct 28, 2025
d7f367b
CSPL-4022 Fix failing tests
kasiakoziol Oct 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
appframeworksS1,
managersecret,
managermc,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/arm-AL2023-int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
managercrcrud,
licensemanager,
managerdeletecr,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image-arm-al2023
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/arm-RHEL-build-test-push-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
managercrcrud,
licensemanager,
managerdeletecr,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image-arm-rhel
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/arm-RHEL-int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
managercrcrud,
licensemanager,
managerdeletecr,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image-arm-rhel
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/arm-Ubuntu-build-test-push-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ jobs:
appframeworksS1,
managersecret,
managermc,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/arm-Ubuntu-int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
managercrcrud,
licensemanager,
managerdeletecr,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image-arm-ubuntu
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-test-push-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ jobs:
managerappframeworkm4,
managersecret,
managermc,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/distroless-build-test-push-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ jobs:
managerappframeworkm4,
managersecret,
managermc,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/distroless-int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
managercrcrud,
licensemanager,
managerdeletecr,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image-distroless
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/helm-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ jobs:
version: ${{ steps.dotenv.outputs.KUBECTL_VERSION }}
- name: Install kuttl
run: |
sudo curl -LO https://github.com/kudobuilder/kuttl/releases/download/v0.12.0/kuttl_0.12.0_linux_x86_64.tar.gz
sudo tar -xvzf kuttl_0.12.0_linux_x86_64.tar.gz
sudo curl -LO https://github.com/kudobuilder/kuttl/releases/download/v0.22.0/kuttl_0.22.0_linux_x86_64.tar.gz
sudo tar -xvzf kuttl_0.22.0_linux_x86_64.tar.gz
sudo chmod +x kubectl-kuttl
sudo mv kubectl-kuttl /usr/local/bin/kubectl-kuttl
- name: Install Python
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
managercrcrud,
licensemanager,
managerdeletecr,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/manual-int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
managerscaling,
managercrcrud,
licensemanager,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/namespace-scope-int-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
managerscaling,
managercrcrud,
licensemanager,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly-int-test-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
managerscaling,
managercrcrud,
licensemanager,
indexingestseparation,
indingsep,
]
runs-on: ubuntu-latest
needs: build-operator-image
Expand Down
9 changes: 9 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,13 @@ resources:
kind: IngestorCluster
path: github.com/splunk/splunk-operator/api/v4
version: v4
- api:
crdVersion: v1
namespaced: true
controller: true
domain: splunk.com
group: enterprise
kind: BusConfiguration
path: github.com/splunk/splunk-operator/api/v4
version: v4
version: "3"
137 changes: 137 additions & 0 deletions api/v4/busconfiguration_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
/*
Copyright 2025.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v4

import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
)

// 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.

const (
// BusConfigurationPausedAnnotation is the annotation that pauses the reconciliation (triggers
// an immediate requeue)
BusConfigurationPausedAnnotation = "busconfiguration.enterprise.splunk.com/paused"
)

// BusConfigurationSpec defines the desired state of BusConfiguration
type BusConfigurationSpec struct {
Type string `json:"type"`

SQS SQSSpec `json:"sqs"`
}

type SQSSpec struct {
QueueName string `json:"queueName"`

AuthRegion string `json:"authRegion"`

Endpoint string `json:"endpoint"`

LargeMessageStoreEndpoint string `json:"largeMessageStoreEndpoint"`

LargeMessageStorePath string `json:"largeMessageStorePath"`

DeadLetterQueueName string `json:"deadLetterQueueName"`
}

// BusConfigurationStatus defines the observed state of BusConfiguration.
type BusConfigurationStatus struct {
// Phase of the bus configuration
Phase Phase `json:"phase"`

// Resource revision tracker
ResourceRevMap map[string]string `json:"resourceRevMap"`

// Auxillary message describing CR status
Message string `json:"message"`
}

// +kubebuilder:object:root=true
// +kubebuilder:subresource:status

// BusConfiguration is the Schema for a Splunk Enterprise bus configuration
// +k8s:openapi-gen=true
// +kubebuilder:subresource:status
// +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas,selectorpath=.status.selector
// +kubebuilder:resource:path=busconfigurations,scope=Namespaced,shortName=bus
// +kubebuilder:printcolumn:name="Phase",type="string",JSONPath=".status.phase",description="Status of bus configuration"
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Age of bus configuration resource"
// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.message",description="Auxillary message describing CR status"
// +kubebuilder:storageversion

// BusConfiguration is the Schema for the busconfigurations API
type BusConfiguration struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`

Spec BusConfigurationSpec `json:"spec"`
Status BusConfigurationStatus `json:"status,omitempty,omitzero"`
}

// DeepCopyObject implements runtime.Object
func (in *BusConfiguration) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
return nil
}

// +kubebuilder:object:root=true

// BusConfigurationList contains a list of BusConfiguration
type BusConfigurationList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []BusConfiguration `json:"items"`
}

func init() {
SchemeBuilder.Register(&BusConfiguration{}, &BusConfigurationList{})
}

// NewEvent creates a new event associated with the object and ready
// to be published to Kubernetes API
func (bc *BusConfiguration) NewEvent(eventType, reason, message string) corev1.Event {
t := metav1.Now()
return corev1.Event{
ObjectMeta: metav1.ObjectMeta{
GenerateName: reason + "-",
Namespace: bc.ObjectMeta.Namespace,
},
InvolvedObject: corev1.ObjectReference{
Kind: "BusConfiguration",
Namespace: bc.Namespace,
Name: bc.Name,
UID: bc.UID,
APIVersion: GroupVersion.String(),
},
Reason: reason,
Message: message,
Source: corev1.EventSource{
Component: "splunk-busconfiguration-controller",
},
FirstTimestamp: t,
LastTimestamp: t,
Count: 1,
Type: eventType,
ReportingController: "enterprise.splunk.com/busconfiguration-controller",
}
}
14 changes: 5 additions & 9 deletions api/v4/indexercluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,8 @@ const (
type IndexerClusterSpec struct {
CommonSplunkSpec `json:",inline"`

PipelineConfig PipelineConfigSpec `json:"pipelineConfig,omitempty"`

PullBus PushBusSpec `json:"pullBus,omitempty"`
// Bus configuration reference
BusConfigurationRef corev1.ObjectReference `json:"busConfigurationRef,omitempty"`

// Number of search head pods; a search head cluster will be created if > 1
Replicas int32 `json:"replicas"`
Expand Down Expand Up @@ -113,14 +112,11 @@ type IndexerClusterStatus struct {
// status of each indexer cluster peer
Peers []IndexerClusterMemberStatus `json:"peers"`

// Pipeline configuration status
PipelineConfig PipelineConfigSpec `json:"pipelineConfig,omitempty"`

// Pull Bus status
PullBus PushBusSpec `json:"pullBus,omitempty"`

// Auxillary message describing CR status
Message string `json:"message"`

// Bus configuration
BusConfiguration BusConfigurationSpec `json:"busConfiguration,omitempty"`
}

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
Expand Down
74 changes: 4 additions & 70 deletions api/v4/ingestorcluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,71 +42,8 @@ type IngestorClusterSpec struct {
// Splunk Enterprise app repository that specifies remote app location and scope for Splunk app management
AppFrameworkConfig AppFrameworkSpec `json:"appRepo,omitempty"`

// Push Bus spec
PushBus PushBusSpec `json:"pushBus"`

// Pipeline configuration
PipelineConfig PipelineConfigSpec `json:"pipelineConfig"`
}

// Helper types
// Only SQS as of now
type PushBusSpec struct {
// +kubebuilder:validation:Enum=sqs_smartbus
// +kubebuilder:default=sqs_smartbus
Type string `json:"type"`

SQS SQSSpec `json:"sqs"`
}

type SQSSpec struct {
QueueName string `json:"queueName"`

AuthRegion string `json:"authRegion"`

// +kubebuilder:validation:Pattern=`^https://`
Endpoint string `json:"endpoint"`

// +kubebuilder:validation:Pattern=`^https://`
LargeMessageStoreEndpoint string `json:"largeMessageStoreEndpoint"`

// +kubebuilder:validation:Pattern=`^s3://`
LargeMessageStorePath string `json:"largeMessageStorePath"`

DeadLetterQueueName string `json:"deadLetterQueueName"`

// +kubebuilder:validation:Minimum=0
// +kubebuilder:default=3
MaxRetriesPerPart int `json:"maxRetriesPerPart"`

// +kubebuilder:validation:Enum=max_count
// +kubebuilder:default=max_count
RetryPolicy string `json:"retryPolicy"`

// +kubebuilder:validation:Pattern=`^[0-9]+s$`
// +kubebuilder:default="5s"
SendInterval string `json:"sendInterval"`

EncodingFormat string `json:"encodingFormat"`
}

type PipelineConfigSpec struct {
// +kubebuilder:default=false
RemoteQueueRuleset bool `json:"remoteQueueRuleset"`

// +kubebuilder:default=true
RuleSet bool `json:"ruleSet"`

// +kubebuilder:default=false
RemoteQueueTyping bool `json:"remoteQueueTyping"`

// +kubebuilder:default=false
RemoteQueueOutput bool `json:"remoteQueueOutput"`

// +kubebuilder:default=true
Typing bool `json:"typing"`

IndexerPipe bool `json:"indexerPipe"`
// Bus configuration reference
BusConfigurationRef corev1.ObjectReference `json:"busConfigurationRef"`
}

// IngestorClusterStatus defines the observed state of Ingestor Cluster
Expand Down Expand Up @@ -135,11 +72,8 @@ type IngestorClusterStatus struct {
// Auxillary message describing CR status
Message string `json:"message"`

// Pipeline configuration status
PipelineConfig PipelineConfigSpec `json:"pipelineConfig"`

// Push Bus status
PushBus PushBusSpec `json:"pushBus"`
// Bus configuration
BusConfiguration BusConfigurationSpec `json:"busConfiguration,omitempty"`
}

// +kubebuilder:object:root=true
Expand Down
Loading
Loading