Skip to content

Commit ded8fc5

Browse files
vivekr-splunkclaude
andcommitted
Merge main branch into CSPL-4518
Resolved conflicts: - Accepted main's version for CRD YAMLs, docs, workflows, config files - Preserved our SDK changes in standalone_controller.go, standalone.go - Updated standalone_test.go to use main's inline JSON fixtures with our SDK function signatures (added nil sdkRuntime parameter) - Fixed searchheadcluster.go event publisher to use GetEventPublisher() - Fixed duplicate import in test/testenv/testenv.go - Restored our controller files that have SDK-specific parameters - All unit tests pass (enterprise + validation) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
2 parents 332794b + f924f7a commit ded8fc5

53 files changed

Lines changed: 2677 additions & 2604 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
OPERATOR_SDK_VERSION=v1.42.0
2-
REVIEWERS=vivekr-splunk,rlieberman-splunk,patrykw-splunk,Igor-splunk,kasiakoziol,kubabuczak,gabrielm-splunk,minjieqiu,qingw-splunk
3-
GO_VERSION=1.25.6
1+
OPERATOR_SDK_VERSION=v1.39.0
2+
REVIEWERS=vivekr-splunk,rlieberman-splunk,patrykw-splunk,Igor-splunk,kasiakoziol
3+
GO_VERSION=1.23.0
44
AWSCLI_URL=https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.8.6.zip
55
KUBECTL_VERSION=v1.29.1
6-
AZ_CLI_VERSION=2.79.0
7-
EKSCTL_VERSION=v0.215.0
8-
EKS_CLUSTER_K8_VERSION=1.34
6+
AZ_CLI_VERSION=2.30.0
7+
EKSCTL_VERSION=v0.191.0
8+
EKS_CLUSTER_K8_VERSION=1.31
99
EKS_INSTANCE_TYPE=m5.2xlarge
1010
EKS_INSTANCE_TYPE_ARM64=c6g.4xlarge
1111
SPLUNK_ENTERPRISE_RELEASE_IMAGE=splunk/splunk:10.0.0

.github/workflows/arm-RHEL-build-test-push-workflow.yml

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: ARM RHEL Smoke Test WorkFlow
1+
name: ARM RHEL Integration Test WorkFlow
22
permissions:
33
contents: read
44
packages: write
@@ -13,6 +13,7 @@ on:
1313
jobs:
1414
build-operator-image-arm-rhel:
1515
runs-on: ubuntu-latest
16+
timeout-minutes: 360
1617
env:
1718
SPLUNK_ENTERPRISE_IMAGE: ${{ secrets.ECR_PREFIX }}/${{ github.event.inputs.splunk_image_repository_tag }}
1819
SPLUNK_OPERATOR_IMAGE_NAME: splunk/splunk-operator
@@ -38,12 +39,11 @@ jobs:
3839
sudo chmod +x operator-sdk_${OS}_${ARCH}
3940
sudo mv operator-sdk_${OS}_${ARCH} /usr/local/bin/operator-sdk
4041
- name: Configure AWS credentials
41-
uses: aws-actions/configure-aws-credentials@v5
42+
uses: aws-actions/configure-aws-credentials@v1
4243
with:
43-
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
44-
role-session-name: github-${{ github.run_id }}
45-
aws-region: ${{ vars.AWS_REGION }}
46-
role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }}
44+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
45+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
46+
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
4747
- name: Login to Amazon ECR
4848
id: login-ecr
4949
uses: aws-actions/amazon-ecr-login@v1
@@ -54,8 +54,7 @@ jobs:
5454
export BASE_IMAGE_VERSION=9.5
5555
export IMG=${{ secrets.ECR_REPOSITORY }}/${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA
5656
make docker-buildx PLATFORMS=$PLATFORMS BASE_IMAGE=$BASE_IMAGE BASE_IMAGE_VERSION=$BASE_IMAGE_VERSION IMG=$IMG
57-
smoke-tests-arm-rhel:
58-
timeout-minutes: 240
57+
int-tests-arm-rhel:
5958
strategy:
6059
fail-fast: false
6160
matrix:
@@ -80,8 +79,8 @@ jobs:
8079
SPLUNK_OPERATOR_IMAGE_NAME: splunk/splunk-operator
8180
SPLUNK_OPERATOR_IMAGE_FILENAME: splunk-operator
8281
TEST_FOCUS: "${{ matrix.test }}"
83-
# This regex matches any string not containing smoke keyword
84-
TEST_TO_SKIP: "^(?:[^s]+|s(?:$|[^m]|m(?:$|[^o]|o(?:$|[^k]|k(?:$|[^e])))))*$"
82+
# This regex matches any string not containing integration keyword
83+
TEST_TO_SKIP: "^(?:[^i]+|i(?:$|[^n]|n(?:$|[^t]|t(?:$|[^e]|e(?:$|[^g]|g(?:$|[^r]|r(?:$|[^a]|a(?:$|[^t]|t(?:$|[^i]|i(?:$|[^o]|o(?:$|[^n])))))))))))*$"
8584
TEST_CLUSTER_PLATFORM: eks
8685
EKS_VPC_PRIVATE_SUBNET_STRING: ${{ secrets.EKS_VPC_PRIVATE_SUBNET_STRING }}
8786
EKS_VPC_PUBLIC_SUBNET_STRING: ${{ secrets.EKS_VPC_PUBLIC_SUBNET_STRING }}
@@ -95,6 +94,9 @@ jobs:
9594
ARM64: "true"
9695
GRAVITON_TESTING: "true"
9796
steps:
97+
- name: Set Test Cluster Name
98+
run: |
99+
echo "TEST_CLUSTER_NAME=eks-integration-test-cluster-${{ matrix.test }}-$GITHUB_RUN_ID" >> $GITHUB_ENV
98100
- name: Set Test Cluster Nodes and Parallel Runs
99101
run: >-
100102
if grep -q "appframework" <<< "${{ matrix.test }}"; then
@@ -103,17 +105,6 @@ jobs:
103105
fi
104106
- name: Checkcout code
105107
uses: actions/checkout@v2
106-
- name: Set Test Cluster Name
107-
id: set-cluster-name
108-
uses: ./.github/actions/set-cluster-name
109-
with:
110-
test-type: smoke
111-
platform: arm-rhel
112-
test-name: ${{ matrix.test }}
113-
run-id: ${{ github.run_id }}
114-
- name: Export cluster name to environment
115-
run: |
116-
echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV
117108
- name: Dotenv Action
118109
id: dotenv
119110
uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359
@@ -162,12 +153,11 @@ jobs:
162153
run: |
163154
echo "SPLUNK_OPERATOR_IMAGE=${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA" >> $GITHUB_ENV
164155
- name: Configure AWS credentials
165-
uses: aws-actions/configure-aws-credentials@v5
156+
uses: aws-actions/configure-aws-credentials@v1
166157
with:
167-
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
168-
role-session-name: github-${{ github.run_id }}
169-
aws-region: ${{ vars.AWS_REGION }}
170-
role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }}
158+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
159+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
160+
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
171161
- name: Login to Amazon ECR
172162
id: login-ecr
173163
uses: aws-actions/amazon-ecr-login@v1
@@ -180,8 +170,7 @@ jobs:
180170
make cluster-up
181171
- name: install metric server
182172
run: |
183-
curl -LO https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
184-
kubectl replace --force -f components.yaml || kubectl apply -f components.yaml
173+
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
185174
- name: install k8s dashboard
186175
run: |
187176
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
@@ -190,11 +179,7 @@ jobs:
190179
sudo snap install kustomize
191180
mkdir -p ./bin
192181
cp /snap/bin/kustomize ./bin/kustomize
193-
- name: Run smoke test
194-
timeout-minutes: 240
195-
env:
196-
TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }}
197-
TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }}
182+
- name: Run Integration test
198183
run: |
199184
make int-test
200185
- name: Collect Test Logs

.github/workflows/arm-RHEL-int-test-workflow.yml

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ on:
1313
jobs:
1414
build-operator-image-arm-rhel:
1515
runs-on: ubuntu-latest
16+
timeout-minutes: 360
1617
env:
1718
SPLUNK_ENTERPRISE_IMAGE: ${{ secrets.ECR_PREFIX }}/${{ github.event.inputs.splunk_image_repository_tag }}
1819
SPLUNK_OPERATOR_IMAGE_NAME: splunk/splunk-operator
@@ -38,12 +39,11 @@ jobs:
3839
sudo chmod +x operator-sdk_${OS}_${ARCH}
3940
sudo mv operator-sdk_${OS}_${ARCH} /usr/local/bin/operator-sdk
4041
- name: Configure AWS credentials
41-
uses: aws-actions/configure-aws-credentials@v5
42+
uses: aws-actions/configure-aws-credentials@v1
4243
with:
43-
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
44-
role-session-name: github-${{ github.run_id }}
45-
aws-region: ${{ vars.AWS_REGION }}
46-
role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }}
44+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
45+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
46+
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
4747
- name: Login to Amazon ECR
4848
id: login-ecr
4949
uses: aws-actions/amazon-ecr-login@v1
@@ -94,6 +94,9 @@ jobs:
9494
ARM64: "true"
9595
GRAVITON_TESTING: "true"
9696
steps:
97+
- name: Set Test Cluster Name
98+
run: |
99+
echo "TEST_CLUSTER_NAME=eks-integration-test-cluster-${{ matrix.test }}-$GITHUB_RUN_ID" >> $GITHUB_ENV
97100
- name: Set Test Cluster Nodes and Parallel Runs
98101
run: >-
99102
if grep -q "appframework" <<< "${{ matrix.test }}"; then
@@ -102,17 +105,6 @@ jobs:
102105
fi
103106
- name: Checkcout code
104107
uses: actions/checkout@v2
105-
- name: Set Test Cluster Name
106-
id: set-cluster-name
107-
uses: ./.github/actions/set-cluster-name
108-
with:
109-
test-type: integration
110-
platform: arm-rhel
111-
test-name: ${{ matrix.test }}
112-
run-id: ${{ github.run_id }}
113-
- name: Export cluster name to environment
114-
run: |
115-
echo "TEST_CLUSTER_NAME=${{ steps.set-cluster-name.outputs.cluster-name }}" >> $GITHUB_ENV
116108
- name: Dotenv Action
117109
id: dotenv
118110
uses: falti/dotenv-action@d4d12eaa0e1dd06d5bdc3d7af3bf4c8c93cb5359
@@ -161,12 +153,11 @@ jobs:
161153
run: |
162154
echo "SPLUNK_OPERATOR_IMAGE=${{ env.SPLUNK_OPERATOR_IMAGE_NAME }}:$GITHUB_SHA" >> $GITHUB_ENV
163155
- name: Configure AWS credentials
164-
uses: aws-actions/configure-aws-credentials@v5
156+
uses: aws-actions/configure-aws-credentials@v1
165157
with:
166-
role-to-assume: ${{ vars.AWS_ROLE_ARN }}
167-
role-session-name: github-${{ github.run_id }}
168-
aws-region: ${{ vars.AWS_REGION }}
169-
role-duration-seconds: ${{ vars.AWS_ROLE_DURATION_SECONDS }}
158+
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
159+
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
160+
aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
170161
- name: Login to Amazon ECR
171162
id: login-ecr
172163
uses: aws-actions/amazon-ecr-login@v1
@@ -179,8 +170,7 @@ jobs:
179170
make cluster-up
180171
- name: install metric server
181172
run: |
182-
curl -LO https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
183-
kubectl replace --force -f components.yaml || kubectl apply -f components.yaml
173+
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
184174
- name: install k8s dashboard
185175
run: |
186176
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.5/aio/deploy/recommended.yaml
@@ -190,10 +180,6 @@ jobs:
190180
mkdir -p ./bin
191181
cp /snap/bin/kustomize ./bin/kustomize
192182
- name: Run Integration test
193-
timeout-minutes: 240
194-
env:
195-
TEST_S3_ACCESS_KEY_ID: ${{ vars.TEST_S3_ACCESS_KEY_ID }}
196-
TEST_S3_SECRET_ACCESS_KEY: ${{ secrets.TEST_S3_SECRET_ACCESS_KEY }}
197183
run: |
198184
make int-test
199185
- name: Collect Test Logs

.github/workflows/cla-check.yml

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,33 +22,29 @@ jobs:
2222
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
2323
with:
2424
path-to-signatures: "signatures/version1/cla.json"
25-
path-to-document: "https://github.com/splunk/cla-agreement/blob/main/CLA.md"
25+
path-to-document: "https://github.com/splunk/cla-agreement/blob/main/CLA.md" # e.g. a CLA or a DCO document
2626
branch: "main"
2727
allowlist: dependabot[bot]
2828
remote-organization-name: splunk
2929
remote-repository-name: cla-agreement
30-
custom-notsigned-prcomment: "<br/>Thank you for your submission, we really appreciate it. Like many open-source projects, we ask that you sign our [Contribution License Agreement](${input.getPathToDocument()}) before we can accept your contribution. You can sign the CLA by just posting a Pull Request Comment with the exact sentence copied from below.<br/>"
31-
custom-allsigned-prcomment: "⏳ **CLA signed** — now checking Code of Conduct status..."
3230
CodeOfConduct:
3331
runs-on: ubuntu-latest
34-
# CLA and COC jobs both edit the same PR comment to show signing status.
35-
# Run sequentially to avoid race conditions when updating the comment.
36-
needs: ContributorLicenseAgreement
3732
steps:
3833
- name: "COC Assistant"
39-
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the Code of Conduct and I hereby sign the COC') || github.event_name == 'pull_request_target'
34+
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the Code of Conduct and I hereby accept the Terms') || github.event_name == 'pull_request_target'
4035
uses: cla-assistant/github-action@v2.1.3-beta
4136
env:
4237
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4338
PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
4439
with:
4540
path-to-signatures: "signatures/version1/coc.json"
46-
path-to-document: "https://github.com/splunk/cla-agreement/blob/main/CODE_OF_CONDUCT.md"
41+
path-to-document: "https://github.com/splunk/cla-agreement/blob/main/CODE_OF_CONDUCT.md" # e.g. a COC or a DCO document
4742
branch: "main"
4843
allowlist: dependabot[bot]
4944
remote-organization-name: splunk
5045
remote-repository-name: cla-agreement
51-
custom-pr-sign-comment: "I have read the Code of Conduct and I hereby sign the COC"
46+
custom-pr-sign-comment: "I have read the Code of Conduct and I hereby accept the Terms"
47+
create-file-commit-message: "For example: Creating file for storing COC Signatures"
5248
signed-commit-message: "$contributorName has signed the COC in #$pullRequestNo"
53-
custom-notsigned-prcomment: "<br/>🎉 **CLA signed — one more step to go!**<br/><br/>Please also accept our [Code of Conduct](${input.getPathToDocument()}) by posting a comment with the exact sentence copied from below. This helps us maintain a welcoming community.<br/>"
54-
custom-allsigned-prcomment: "All contributors have signed required documents ✍️ ✅"
49+
custom-notsigned-prcomment: "All contributors have NOT signed the COC Document"
50+
custom-allsigned-prcomment: "****CLA Assistant Lite bot**** All contributors have signed the COC ✍️ ✅"

Dockerfile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# Setup defaults for build arguments
22
ARG PLATFORMS=linux/amd64,linux/arm64
33

4+
# Use distroless as minimal base image to package the manager binary
5+
# Refer to https://github.com/GoogleContainerTools/distroless for more details
6+
# This sha relates to ubi minimal version 8.10-1755105495, which is tagged as 8.10 and latest as of Aug 17, 2025
47
ARG BASE_IMAGE=registry.access.redhat.com/ubi8/ubi-minimal
5-
ARG BASE_IMAGE_VERSION=8.10-1770223153
8+
ARG BASE_IMAGE_VERSION=8.10-1755105495
69

710
# Build the manager binary
8-
FROM golang:1.25.6 AS builder
11+
FROM golang:1.24.2 AS builder
912

1013
WORKDIR /workspace
1114

Dockerfile.distroless

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Build the manager binary
2-
FROM golang:1.25.6 AS builder
2+
FROM golang:1.24.2 AS builder
33

44
WORKDIR /workspace
55
# Copy the Go Modules manifests

0 commit comments

Comments
 (0)