Repository navigation
MLE-27886: Merge back to develop after Operator 1.3.0 Release - #186
Merged
Merged
Conversation
…se (#177) Co-authored-by: Peng Zhou <peng.zhou@progress.com>
Co-authored-by: Peng Zhou <peng.zhou@progress.com>
…eases (#181) Co-authored-by: Peng Zhou <peng.zhou@progress.com>
Co-authored-by: Peng Zhou <peng.zhou@progress.com>
Co-authored-by: Peng Zhou <peng.zhou@progress.com>
MLE-29628: Release Operator 1.3.0
pengzhouml
requested review from
barkhachoithani,
Copilot,
sumanthravipati and
vitalykorolev
July 15, 2026 18:27
barkhachoithani
approved these changes
Jul 15, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR merges Operator 1.3.0 release changes back to develop, updating chart/app versions and test/CI automation, and enhancing operator/client functionality (notably digest auth + dynamic-host support).
Changes:
- Added an upgrade-focused e2e test runner and wired “upgrade mode” through
Makefile/Jenkinsfile, including reuse of existing operator installs for follow-on suites. - Updated default MarkLogic image versions and Helm chart version/appVersion to
1.3.0. - Improved management client behavior (digest auth SHA-256 support; stricter error propagation) and expanded CRD schemas/templates (securityContext/podSecurityContext additions).
Reviewed changes
Copilot reviewed 46 out of 48 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| test/upgrade_e2e_test.go | New upgrade validation runner for cluster- and namespace-scope upgrade scenarios plus cleanup. |
| test/e2e/main_test.go | Adds configurable operator namespace and “reuse existing operator” mode for e2e suite. |
| test/e2e/8_metrics_test.go | Makes metrics test discover the operator ServiceAccount from the deployment spec. |
| test/e2e/10_dynamic_host_test.go | Updates default MarkLogic image used in dynamic-host tests. |
| test/e2e/1_operator_ready_test.go | Copyright year bump. |
| test/e2e-helm/main_test.go | Adds env-configurable operator namespace/release/watch list and reuse-existing-operator mode. |
| README.md | Updates Helm install examples to --version=1.3.0. |
| pkg/mlmanage/client.go | Digest auth improvements (SHA-256 support) + better body-close/error handling. |
| pkg/mlmanage/client_test.go | Adds test coverage for SHA-256 / SHA-256-SESS digest auth and unsupported algorithms. |
| pkg/k8sutil/service.go | Copyright year bump. |
| pkg/k8sutil/secret.go | Reuses a shared suffix constant for dynamic credential secret name and username. |
| pkg/k8sutil/scripts/prestop-hook.sh | Copyright year bump. |
| pkg/k8sutil/scripts/copy-certs.sh | Copyright year bump. |
| pkg/k8sutil/haProxyHelper.go | Copyright year bump. |
| pkg/k8sutil/haProxy.go | Copyright year bump. |
| pkg/k8sutil/handler.go | Copyright year bump. |
| pkg/k8sutil/dynamic_reconcile.go | Replaces FNV hash with SHA-256-derived suffix; refactors candidate handling. |
| pkg/k8sutil/context.go | Copyright year bump. |
| pkg/k8sutil/common.go | Copyright year bump. |
| Makefile | Updates MarkLogic image, adds upgrade e2e targets/timeouts, changes docker-build behavior. |
| Jenkinsfile | Adds E2E_INSTALL_MODE and routes Minikube runs through fresh vs upgrade flows. |
| internal/controller/suite_test.go | Copyright year bump. |
| internal/controller/marklogicgroup_controller.go | Copyright year bump. |
| internal/controller/marklogicgroup_controller_test.go | Copyright bump + MarkLogic image update in tests. |
| internal/controller/marklogiccluster_controller_test.go | Copyright year bump. |
| go.sum | Dependency updates aligned with go.mod changes. |
| go.mod | Updates Go version directive and bumps key test/deps (ginkgo/gomega/gjson/pprof), drops automaxprocs. |
| Dockerfile | Updates builder image to match Go toolchain version. |
| config/samples/security-context-example.yaml | Updates sample MarkLogic image. |
| config/samples/quick-start.yaml | Updates sample MarkLogic image and changes persistence.enabled default. |
| config/samples/minimal-production.yaml | Updates sample MarkLogic image. |
| config/samples/dynamic-host.yaml | Adds a dynamic-host sample manifest. |
| config/samples/complete.yaml | Updates sample MarkLogic images (cluster + group). |
| config/rbac/role_binding_namespaced.yaml | Copyright year bump. |
| config/default/kustomization.yaml | Removes commented webhook/cert-manager scaffold blocks. |
| config/crd/bases/marklogic.progress.com_marklogicgroups.yaml | Updates CRD default image. |
| config/crd/bases/marklogic.progress.com_marklogicclusters.yaml | Updates CRD default image. |
| charts/marklogic-operator-kubernetes/templates/marklogicgroup-crd.yaml | Updates default image and extends schema (securityContext). |
| charts/marklogic-operator-kubernetes/templates/marklogiccluster-crd.yaml | Updates default image and extends schema (podSecurityContext/securityContext). |
| charts/marklogic-operator-kubernetes/templates/manager-rbac.yaml | Refactors RBAC rules (PVC + events split/ordering). |
| charts/marklogic-operator-kubernetes/Chart.yaml | Bumps chart version/appVersion to 1.3.0. |
| api/v1/zz_generated.deepcopy.go | Copyright year bump. |
| api/v1/marklogicgroup_types.go | Updates kubebuilder default image annotation. |
| api/v1/marklogiccluster_types.go | Updates kubebuilder default image annotation. |
| api/v1/common_types.go | Copyright year bump. |
| .github/workflows/asana-release-trigger.yaml | Adds branch-create-driven Asana checklist automation. |
| .github/workflows/asana-release-merged.yaml | Adds PR-merge-to-main-driven Asana checklist automation. |
| .github/scripts/asana_release_bot.py | New Asana helper script for checking subtasks and leaving audit comments. |
Files not reviewed (1)
- api/v1/zz_generated.deepcopy.go: Generated file
Comments suppressed due to low confidence (1)
test/e2e-helm/main_test.go:332
- The #nosec rationale is now incorrect: helmRelease and helmNS are vars derived from environment variables, not package constants. Update the suppression comment to accurately describe why this exec.Command usage is acceptable.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
500
to
+506
| envfuncs.DeleteNamespace(namespace), | ||
| func(ctx context.Context, cfg *envconf.Config) (context.Context, error) { | ||
| if useExistingOperator { | ||
| return ctx, nil | ||
| } | ||
| return envfuncs.DeleteNamespace(operatorNamespace)(ctx, cfg) | ||
| }, |
Comment on lines
+8
to
+23
| def get_task_gid_by_name(project_id, task_name, headers): | ||
| """Searches a project for a specific task name and returns its GID.""" | ||
| print(f"🔍 Searching project for main task: '{task_name}'...") | ||
| url = f"{BASE_URL}/projects/{project_id}/tasks" | ||
| params = {"opt_fields": "name,gid"} | ||
|
|
||
| response = requests.get(url, headers=headers, params=params) | ||
| response.raise_for_status() | ||
|
|
||
| for task in response.json().get("data", []): | ||
| if task.get("name") == task_name: | ||
| print(f"✅ Found main task: {task['name']} (GID: {task['gid']})") | ||
| return task["gid"] | ||
|
|
||
| print(f"❌ Error: Main task '{task_name}' not found.") | ||
| return None |
Comment on lines
+25
to
+40
| def get_subtask_gid_by_name(parent_task_id, subtask_name, headers): | ||
| """Fetches all subtasks for a given task and returns the GID of the matching name.""" | ||
| print(f"🔍 Searching for subtask: '{subtask_name}'...") | ||
| url = f"{BASE_URL}/tasks/{parent_task_id}/subtasks" | ||
| params = {"opt_fields": "name,gid"} | ||
|
|
||
| response = requests.get(url, headers=headers, params=params) | ||
| response.raise_for_status() | ||
|
|
||
| for subtask in response.json().get("data", []): | ||
| if subtask.get("name") == subtask_name: | ||
| print(f"✅ Found subtask: {subtask['name']} (GID: {subtask['gid']})") | ||
| return subtask["gid"] | ||
|
|
||
| print(f"❌ Error: Subtask '{subtask_name}' not found.") | ||
| return None |
Comment on lines
+3
to
+6
| on: | ||
| create: | ||
| # This ensures the workflow only triggers on branch creation, not tags | ||
|
|
Comment on lines
562
to
568
| # If you wish to build the manager image targeting other platforms you can use the --platform flag. | ||
| # (i.e. docker build --platform linux/arm64). However, you must enable docker buildKit for it. | ||
| # More info: https://docs.docker.com/develop/develop-images/build_enhancements/ | ||
| .PHONY: docker-build | ||
| docker-build: ## Build docker image with the manager. to build for linux, add --platform="linux/amd64" | ||
| $(CONTAINER_TOOL) buildx build --load -t ${IMG} . | ||
| $(CONTAINER_TOOL) buildx build --platform="linux/amd64" --load -t ${IMG} . | ||
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.