Skip to content

Enable and Refactor Single Group to Multi-Group API Support#1837

Open
naimulh247 wants to merge 9 commits intodevelopfrom
multi-group-enablement
Open

Enable and Refactor Single Group to Multi-Group API Support#1837
naimulh247 wants to merge 9 commits intodevelopfrom
multi-group-enablement

Conversation

@naimulh247
Copy link
Copy Markdown

@naimulh247 naimulh247 commented Apr 10, 2026

Description

Enable Kubebuilder / Operator SDK multi-group support by restructuring API and controller directories into group-specific paths. This lays the groundwork for supporting multiple API groups beyond enterprise

Key Changes

  • Enabled multigroup: true in the PROJECT file
  • Moved API types from api/v{1,2,3,4}/ to api/enterprise/v{1,2,3,4}/
  • Moved controllers from internal/controller/ to internal/controller/enterprise/
  • Updated import paths across to reference the new api/enterprise/ and internal/controller/enterprise/ paths
  • Updated PROJECT file resource entries with new api/enterprise paths
  • Updated .biased_lang_exclude paths to reflect new directory structure

Testing and Verification

  • make command passed without any errors
  • waiting for pipeline to finish running

Related Issues

Jira tickets, GitHub issues, Support tickets...

PR Checklist

  • Code changes adhere to the project's coding standards.
  • Relevant unit and integration tests are included.
  • Documentation has been updated accordingly.
  • All tests pass locally.
  • The PR description follows the project's guidelines.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 10, 2026

CLA Assistant Lite bot:
🎉 CLA signed — one more step to go!

Please also accept our Code of Conduct by posting a comment with the exact sentence copied from below. This helps us maintain a welcoming community.


I have read the Code of Conduct and I hereby sign the COC


You can retrigger this bot by commenting recheck in this Pull Request

@naimulh247 naimulh247 marked this pull request as ready for review April 10, 2026 18:32
@naimulh247
Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

@naimulh247
Copy link
Copy Markdown
Author

recheck

@kasiakoziol
Copy link
Copy Markdown
Collaborator

Hello @naimulh247
Do you want to merge it directly to develop or maybe first to the app framework revamp feature branch and then merge it all-together once ready to develop?

@naimulh247
Copy link
Copy Markdown
Author

@kasiakoziol Im okay with either, I opened this PR as @vivekr-splunk requested to see if we have bandwidth to support it. That said, its worth noting that if we merge both the app framework and multi-group work together, we might miss something in a larger PR. We could also hold off on merging this and land it separately once the app framework changes are ready. That way we can validate each PR independently and have a clean rollback if something slips through in the multi-group restructure :)

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Enables Kubebuilder/Operator SDK multi-group support by moving the existing Splunk Enterprise APIs and controllers into group-scoped directories (api/enterprise/..., internal/controller/enterprise/...) and updating references across the codebase.

Changes:

  • Enabled multigroup: true and updated PROJECT resource paths to point at api/enterprise/....
  • Updated imports throughout pkg/, internal/, and test/ to use github.com/splunk/splunk-operator/api/enterprise/v{3,4}.
  • Added an internal/controller/enterprise Telemetry controller + unit tests, and wired controllers via cmd/main.go.

Reviewed changes

Copilot reviewed 144 out of 175 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
test/testenv/verificationutils.go Update imports to new api/enterprise/v{3,4} paths.
test/testenv/util.go Update imports to new api/enterprise/v{3,4} paths.
test/testenv/testenv.go Update imports to new api/enterprise/v{3,4} paths.
test/testenv/remote_index_utils.go Update imports to new api/enterprise/v4 path.
test/testenv/deployment.go Update imports to new api/enterprise/v{3,4} paths.
test/testenv/appframework_utils.go Update imports to new api/enterprise/v{3,4} paths.
test/smoke/smoke_test.go Update imports to new api/enterprise/v4 path.
test/smartstore/smartstore_test.go Update imports to new api/enterprise/v{3,4} paths.
test/smartstore/manager_smartstore_test.go Update imports to new api/enterprise/v4 path.
test/secret/secret_s1_test.go Update imports to new api/enterprise/v4 path.
test/secret/secret_m4_test.go Update imports to new api/enterprise/v4 path.
test/secret/secret_c3_test.go Update imports to new api/enterprise/v4 path.
test/secret/manager_secret_s1_test.go Update imports to new api/enterprise/v4 path.
test/secret/manager_secret_m4_test.go Update imports to new api/enterprise/v4 path.
test/secret/manager_secret_c3_test.go Update imports to new api/enterprise/v4 path.
test/monitoring_console/monitoring_console_test.go Update imports to new api/enterprise/v{3,4} paths.
test/monitoring_console/manager_monitoring_console_test.go Update imports to new api/enterprise/v4 path.
test/licensemaster/lm_c3_test.go Update imports to new api/enterprise/v{3,4} paths.
test/licensemanager/manager_lm_c3_test.go Update imports to new api/enterprise/v4 path.
test/ingest_search/ingest_search_test.go Update imports to new api/enterprise/v4 path.
test/index_and_ingestion_separation/index_and_ingestion_separation_test.go Update imports to new api/enterprise/v4 path.
test/index_and_ingestion_separation/index_and_ingestion_separation_suite_test.go Update imports to new api/enterprise/v4 path.
test/delete_cr/deletecr_test.go Update imports to new api/enterprise/v4 path.
test/custom_resource_crud/manager_custom_resource_crud_m4_test.go Update imports to new api/enterprise/v4 path.
test/custom_resource_crud/manager_custom_resource_crud_c3_test.go Update imports to new api/enterprise/v4 path.
test/custom_resource_crud/custom_resource_crud_s1_test.go Update imports to new api/enterprise/v4 path.
test/custom_resource_crud/custom_resource_crud_m4_test.go Update imports to new api/enterprise/v4 path.
test/custom_resource_crud/custom_resource_crud_c3_test.go Update imports to new api/enterprise/v{3,4} paths.
test/appframework_gcp/s1/appframework_gcs_test.go Update imports to new api/enterprise/v4 path.
test/appframework_gcp/m4/manager_appframework_test.go Update imports to new api/enterprise/v4 path.
test/appframework_gcp/m4/appframework_gcs_test.go Update imports to new api/enterprise/v{3,4} paths.
test/appframework_gcp/c3/manager_appframework_test.go Update imports to new api/enterprise/v4 path.
test/appframework_gcp/c3/appframework_gcs_test.go Update imports to new api/enterprise/v4 path (and commented v3 path).
test/appframework_az/s1/appframework_azure_test.go Update imports to new api/enterprise/v4 path.
test/appframework_az/m4/manager_appframework_azure_test.go Update imports to new api/enterprise/v4 path.
test/appframework_az/m4/appframework_azure_test.go Update imports to new api/enterprise/v{3,4} paths.
test/appframework_az/c3/manager_appframework_azure_test.go Update imports to new api/enterprise/v4 path.
test/appframework_az/c3/appframework_azure_test.go Update imports to new api/enterprise/v{3,4} paths.
test/appframework_aws/s1/appframework_aws_test.go Update imports to new api/enterprise/v4 path.
test/appframework_aws/m4/manager_appframework_test.go Update imports to new api/enterprise/v4 path.
test/appframework_aws/m4/appframework_aws_test.go Update imports to new api/enterprise/v{3,4} paths.
test/appframework_aws/c3/manager_appframework_test.go Update imports to new api/enterprise/v4 path.
test/appframework_aws/c3/appframework_aws_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/util/util_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/util/util.go Update imports to new api/enterprise/v4 path.
pkg/splunk/test/minioclient.go Update imports to new api/enterprise/v4 path.
pkg/splunk/test/controller.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/test/azureblobclient.go Update imports to new api/enterprise/v4 path.
pkg/splunk/test/awss3client.go Update imports to new api/enterprise/v4 path.
pkg/splunk/splkcontroller/statefulset_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/splkcontroller/statefulset.go Update imports to new api/enterprise/v4 path.
pkg/splunk/splkcontroller/deployment_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/splkcontroller/deployment.go Update imports to new api/enterprise/v4 path.
pkg/splunk/splkcontroller/configmap_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/validator_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/validate_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/validate.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/standalone_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/standalone_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/server_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/searchheadcluster_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/searchheadcluster_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/registry.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/monitoringconsole_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/monitoringconsole_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/licensemanager_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/licensemanager_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/indexercluster_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/indexercluster_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/common_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/common_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/clustermanager_validation_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/validation/clustermanager_validation.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/util_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/util.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/upgrade_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/upgrade.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/types.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/telemetry_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/telemetry.go Update imports ordering and new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/standalone_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/standalone.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/searchheadclusterpodmanager.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/searchheadcluster_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/searchheadcluster.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/queue_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/queue.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/objectstorage_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/objectstorage.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/monitoringconsole_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/monitoringconsole.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/licensemaster_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/licensemaster.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/licensemanager_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/licensemanager.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/ingestorcluster_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/ingestorcluster.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/indexercluster_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/indexercluster.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/finalizers_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/events_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/configuration_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/configuration.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/clustermaster_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/clustermaster.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/clustermanager_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/clustermanager.go Update imports to new api/enterprise/v4 path.
pkg/splunk/enterprise/afwscheduler_test.go Update imports to new api/enterprise/v{3,4} paths.
pkg/splunk/enterprise/afwscheduler.go Update imports to new api/enterprise/v4 path.
pkg/splunk/common/types.go Update imports to new api/enterprise/v4 path.
pkg/splunk/client/util_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/client/util.go Update imports to new api/enterprise/v4 path.
pkg/splunk/client/minioclient_test.go Update imports to new api/enterprise/v4 path.
pkg/splunk/client/awss3client_test.go Update imports to new api/enterprise/v4 path.
internal/controller/testutils/new.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/telemetry_controller_test.go New unit tests for Telemetry controller reconcile behavior.
internal/controller/enterprise/telemetry_controller.go New Telemetry controller for ConfigMap-driven telemetry dispatch.
internal/controller/enterprise/suite_test.go Update envtest CRD path for new controller directory depth; update API imports.
internal/controller/enterprise/standalone_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/standalone_controller.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/searchheadcluster_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/searchheadcluster_controller.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/monitoringconsole_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/monitoringconsole_controller.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/licensemaster_controller_test.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/licensemaster_controller.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/licensemanager_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/licensemanager_controller.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/ingestorcluster_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/ingestorcluster_controller.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/indexercluster_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/indexercluster_controller.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/clustermaster_controller_test.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/clustermaster_controller.go Update imports to new api/enterprise/v{3,4} paths.
internal/controller/enterprise/clustermanager_controller_test.go Update imports to new api/enterprise/v4 path.
internal/controller/enterprise/clustermanager_controller.go Update imports to new api/enterprise/v4 path.
internal/controller/common/predicate.go Update imports to new api/enterprise/v{3,4} paths.
cmd/main.go Wire controllers from internal/controller/enterprise and register new API paths.
api/enterprise/v4/standalone_types.go New group-scoped v4 API location under api/enterprise/v4.
api/enterprise/v4/searchheadcluster_types.go New group-scoped v4 API location under api/enterprise/v4.
api/enterprise/v4/queue_types.go New group-scoped v4 Queue API location under api/enterprise/v4.
api/enterprise/v4/objectstorage_types.go New group-scoped v4 ObjectStorage API location under api/enterprise/v4.
api/enterprise/v4/monitoringconsole_types.go New group-scoped v4 API location under api/enterprise/v4.
api/enterprise/v4/licensemanager_types.go New group-scoped v4 API location under api/enterprise/v4.
api/enterprise/v4/ingestorcluster_types.go New group-scoped v4 API location under api/enterprise/v4.
api/enterprise/v4/indexercluster_types.go New group-scoped v4 API location under api/enterprise/v4.
api/enterprise/v4/groupversion_info.go New group-scoped v4 group/version registration.
api/enterprise/v4/common_types.go New group-scoped v4 common type definitions.
api/enterprise/v4/clustermanager_types.go New group-scoped v4 ClusterManager API location under api/enterprise/v4.
api/enterprise/v3/zz_generated.deepcopy.go New group-scoped v3 generated deepcopy code under api/enterprise/v3.
api/enterprise/v3/standalone_types.go Update v3 types to reference new v4 API import path.
api/enterprise/v3/searchheadcluster_types.go Update v3 types to reference new v4 API import path.
api/enterprise/v3/monitoringconsole_types.go Update v3 types to reference new v4 API import path.
api/enterprise/v3/licensemaster_types.go Update v3 types to reference new v4 API import path.
api/enterprise/v3/indexercluster_types.go Update v3 types to reference new v4 API import path.
api/enterprise/v3/groupversion_info.go New group-scoped v3 group/version registration.
api/enterprise/v3/clustermaster_types.go Update v3 types to reference new v4 API import path.
api/enterprise/v2/zz_generated.deepcopy.go New group-scoped v2 generated deepcopy placeholder under api/enterprise/v2.
api/enterprise/v2/register.go New group-scoped v2 scheme registration under api/enterprise/v2.
api/enterprise/v2/doc.go New group-scoped v2 package docs under api/enterprise/v2.
api/enterprise/v1beta1/zz_generated.deepcopy.go New group-scoped v1beta1 generated deepcopy placeholder under api/enterprise/v1beta1.
api/enterprise/v1beta1/register.go New group-scoped v1beta1 scheme registration under api/enterprise/v1beta1.
api/enterprise/v1beta1/doc.go New group-scoped v1beta1 package docs under api/enterprise/v1beta1.
api/enterprise/v1alpha3/zz_generated.deepcopy.go New group-scoped v1alpha3 generated deepcopy placeholder under api/enterprise/v1alpha3.
api/enterprise/v1alpha3/register.go New group-scoped v1alpha3 scheme registration under api/enterprise/v1alpha3.
api/enterprise/v1alpha3/doc.go New group-scoped v1alpha3 package docs under api/enterprise/v1alpha3.
api/enterprise/v1alpha2/zz_generated.deepcopy.go New group-scoped v1alpha2 generated deepcopy placeholder under api/enterprise/v1alpha2.
api/enterprise/v1alpha2/register.go New group-scoped v1alpha2 scheme registration under api/enterprise/v1alpha2.
api/enterprise/v1alpha2/doc.go New group-scoped v1alpha2 package docs under api/enterprise/v1alpha2.
api/enterprise/v1/zz_generated.deepcopy.go New group-scoped v1 generated deepcopy placeholder under api/enterprise/v1.
api/enterprise/v1/register.go New group-scoped v1 scheme registration under api/enterprise/v1.
api/enterprise/v1/doc.go New group-scoped v1 package docs under api/enterprise/v1.
PROJECT Enable multigroup and update resource path: entries to api/enterprise/....
.biased_lang_exclude Update excluded file paths to new api/enterprise/... locations.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +53 to 56
enterpriseApiV3 "github.com/splunk/splunk-operator/api/enterprise/v3"
enterpriseApi "github.com/splunk/splunk-operator/api/enterprise/v4"
"github.com/splunk/splunk-operator/internal/controller/enterprise"
//+kubebuilder:scaffold:imports
Copy link

Copilot AI Apr 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

internal/controller/enterprise is imported twice (once as intController and once as the package name controller), which will cause a compile error for duplicate imports. Use a single import and update references (e.g., use intController.IngestorClusterReconciler instead of controller.IngestorClusterReconciler, or drop the alias).

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants