diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 2b9bd6c39..0a208f2c9 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -110,6 +110,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: Build
shell: bash
diff --git a/.github/workflows/coherence-matrix.yaml b/.github/workflows/coherence-matrix.yaml
index b731c3b56..50e52cf5c 100644
--- a/.github/workflows/coherence-matrix.yaml
+++ b/.github/workflows/coherence-matrix.yaml
@@ -1,4 +1,4 @@
-# Copyright 2021, 2024, Oracle Corporation and/or its affiliates. All rights reserved.
+# Copyright 2021, 2025, Oracle Corporation and/or its affiliates. All rights reserved.
# Licensed under the Universal Permissive License v 1.0 as shown at
# http://oss.oracle.com/licenses/upl.
@@ -37,8 +37,9 @@ jobs:
- "15.1.1-0-SNAPSHOT-Graal"
- "24.09"
- "24.09-Graal"
- - "22.06"
+ - "14.1.2-0"
- "14.1.2-0-SNAPSHOT"
+ - "22.06"
- "14.1.1-2206-SNAPSHOT"
- "14.1.1-0-SNAPSHOT"
- "14.1.1-0"
@@ -70,27 +71,33 @@ jobs:
javaVersion: 17
baseImage: "gcr.io/distroless/java17-debian12"
+ - matrixName: "14.1.2-0-SNAPSHOT"
+ coherenceVersion: "14.1.2-0-1-SNAPSHOT"
+ coherenceImage: "iad.ocir.io/odx-stateservice/test/coherence:14.1.2-0-1-SNAPSHOT"
+ javaVersion: 17
+ baseImage: "gcr.io/distroless/java17-debian12"
+
+ - matrixName: "14.1.2-0"
+ coherenceVersion: "14.1.2-0-0"
+ javaVersion: 8
+ coherenceImage: "ghcr.io/oracle/coherence-ce:14.1.2-0-0"
+ baseImage: "gcr.io/distroless/java17-debian12"
+
- matrixName: "22.06"
coherenceVersion: "22.06.10"
coherenceImage: "ghcr.io/oracle/coherence-ce:22.06.10"
javaVersion: 11
baseImage: "gcr.io/distroless/java11-debian11"
- - matrixName: "14.1.2-0-SNAPSHOT"
- coherenceVersion: "14.1.2-0-0-SNAPSHOT"
- coherenceImage: "iad.ocir.io/odx-stateservice/test/coherence:14.1.2-0-0-SNAPSHOT"
- javaVersion: 17
- baseImage: "gcr.io/distroless/java17-debian12"
-
- matrixName: "14.1.1-2206-SNAPSHOT"
- coherenceVersion: "14.1.1-2206-10-SNAPSHOT"
- coherenceImage: "iad.ocir.io/odx-stateservice/test/coherence:14.1.1-2206-10-SNAPSHOT"
+ coherenceVersion: "14.1.1-2206-11-SNAPSHOT"
+ coherenceImage: "iad.ocir.io/odx-stateservice/test/coherence:14.1.1-2206-11-SNAPSHOT"
javaVersion: 11
baseImage: "gcr.io/distroless/java11-debian11"
- matrixName: "14.1.1-0-SNAPSHOT"
coherenceVersion: "14.1.1-0-20-SNAPSHOT"
- coherenceImage: "iad.ocir.io/odx-stateservice/test/coherence:14.1.1-0-19-SNAPSHOT"
+ coherenceImage: "iad.ocir.io/odx-stateservice/test/coherence:14.1.1-0-20-SNAPSHOT"
javaVersion: 8
baseImage: "gcr.io/distroless/java11-debian11"
@@ -189,6 +196,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
docker pull ${{ matrix.coherenceImage }}
- name: Coherence Certification Tests
diff --git a/.github/workflows/compatibility-tests.yaml b/.github/workflows/compatibility-tests.yaml
index 386339dab..185ad0ca0 100644
--- a/.github/workflows/compatibility-tests.yaml
+++ b/.github/workflows/compatibility-tests.yaml
@@ -170,6 +170,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
docker pull ${{ matrix.coherence-image }}
- name: Build
diff --git a/.github/workflows/doc-check.yaml b/.github/workflows/doc-check.yaml
index 8a4da668d..83ea533e3 100644
--- a/.github/workflows/doc-check.yaml
+++ b/.github/workflows/doc-check.yaml
@@ -72,6 +72,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: Documentation Link Check
shell: bash
diff --git a/.github/workflows/istio-tests.yaml b/.github/workflows/istio-tests.yaml
index b7fe53d3e..45a83695b 100644
--- a/.github/workflows/istio-tests.yaml
+++ b/.github/workflows/istio-tests.yaml
@@ -111,6 +111,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: Build
shell: bash
diff --git a/.github/workflows/k3d-tests.yaml b/.github/workflows/k3d-tests.yaml
index dcb2139c4..b083d04f1 100644
--- a/.github/workflows/k3d-tests.yaml
+++ b/.github/workflows/k3d-tests.yaml
@@ -105,6 +105,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: K3d Tests
shell: bash
diff --git a/.github/workflows/k8s-matrix.yaml b/.github/workflows/k8s-matrix.yaml
index f6f5ce7b0..63bc85e7d 100644
--- a/.github/workflows/k8s-matrix.yaml
+++ b/.github/workflows/k8s-matrix.yaml
@@ -40,24 +40,28 @@ jobs:
fail-fast: false
matrix:
matrixName:
+ - v1.32
- v1.31
- v1.30
- v1.29
- v1.28
- v1.27
- v1.26
- - v1.25
include:
+ - matrixName: v1.32
+ k8s: kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027
+ kindCommand: kind-calico
+ runNetTests: true
- matrixName: v1.31
- k8s: kindest/node:v1.31.0@sha256:53df588e04085fd41ae12de0c3fe4c72f7013bba32a20e7325357a1ac94ba865
+ k8s: kindest/node:v1.31.4@sha256:2cb39f7295fe7eafee0842b1052a599a4fb0f8bcf3f83d96c7f4864c357c6c30
kindCommand: kind-calico
runNetTests: true
- matrixName: v1.30
- k8s: kindest/node:v1.30.4@sha256:976ea815844d5fa93be213437e3ff5754cd599b040946b5cca43ca45c2047114
+ k8s: kindest/node:v1.30.8@sha256:17cd608b3971338d9180b00776cb766c50d0a0b6b904ab4ff52fd3fc5c6369bf
kindCommand: kind-calico
runNetTests: true
- matrixName: v1.29
- k8s: kindest/node:v1.29.8@sha256:d46b7aa29567e93b27f7531d258c372e829d7224b25e3fc6ffdefed12476d3aa
+ k8s: kindest/node:v1.29.12@sha256:62c0672ba99a4afd7396512848d6fc382906b8f33349ae68fb1dbfe549f70dec
kindCommand: kind-calico
runNetTests: true
- matrixName: v1.28
@@ -72,10 +76,6 @@ jobs:
k8s: kindest/node:v1.26.15@sha256:84333e26cae1d70361bb7339efb568df1871419f2019c80f9a12b7e2d485fe19
kindCommand: kind-calico
runNetTests: true
- - matrixName: v1.25
- k8s: kindest/node:v1.25.16@sha256:5da57dfc290ac3599e775e63b8b6c49c0c85d3fec771cd7d55b45fae14b38d3b
- kindCommand: kind-calico
- runNetTests: true
steps:
- uses: actions/checkout@v4
@@ -146,6 +146,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: Certification Tests
shell: bash
diff --git a/.github/workflows/minikube-matrix.yaml b/.github/workflows/minikube-matrix.yaml
index 4deb588c3..b8153d97f 100644
--- a/.github/workflows/minikube-matrix.yaml
+++ b/.github/workflows/minikube-matrix.yaml
@@ -40,22 +40,19 @@ jobs:
fail-fast: false
matrix:
matrixName:
+ - v1.32
+ - v1.31
+ - v1.30
- v1.29
- - v1.28
- - v1.27
- - v1.26
- - v1.25
include:
+ - matrixName: v1.32
+ k8s: v1.32.0
+ - matrixName: v1.31
+ k8s: v1.31.4
+ - matrixName: v1.30
+ k8s: v1.30.8
- matrixName: v1.29
- k8s: v1.29.2
- - matrixName: v1.28
- k8s: v1.28.6
- - matrixName: v1.27
- k8s: v1.27.11
- - matrixName: v1.26
- k8s: v1.26.14
- - matrixName: v1.25
- k8s: 1.25.16
+ k8s: v1.29.12
steps:
- uses: actions/checkout@v4
@@ -131,6 +128,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
./hack/k8s-certification.sh
- uses: actions/upload-artifact@v4
diff --git a/.github/workflows/prometheus-tests.yaml b/.github/workflows/prometheus-tests.yaml
index 603622627..39506354f 100644
--- a/.github/workflows/prometheus-tests.yaml
+++ b/.github/workflows/prometheus-tests.yaml
@@ -104,6 +104,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: E2E Prometheus Tests
shell: bash
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index f287cf49c..52eacce76 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -58,6 +58,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
make get-tanzu
- name: Release
diff --git a/.github/workflows/tanzu-tests.yaml b/.github/workflows/tanzu-tests.yaml
index 9683a4a68..0b00289e7 100644
--- a/.github/workflows/tanzu-tests.yaml
+++ b/.github/workflows/tanzu-tests.yaml
@@ -111,6 +111,7 @@ jobs:
docker pull gcr.io/distroless/java
docker pull gcr.io/distroless/java11-debian11
docker pull gcr.io/distroless/java17-debian11
+ docker pull gcr.io/distroless/java17-debian12
- name: Build
shell: bash
diff --git a/Makefile b/Makefile
index 14c3b6aa5..acd87aa35 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@ KUBERNETES_DOC_VERSION=v1.30
# ----------------------------------------------------------------------------------------------------------------------
# The Coherence version to build against - must be a Java 8 compatible version
COHERENCE_VERSION ?= 21.12.5
-COHERENCE_VERSION_LTS ?= 22.06.10
+COHERENCE_VERSION_LTS ?= 14.1.2-0-0
# The default Coherence image the Operator will run if no image is specified
COHERENCE_IMAGE_REGISTRY ?= ghcr.io/oracle
COHERENCE_IMAGE_NAME ?= coherence-ce
@@ -48,8 +48,8 @@ COHERENCE_IMAGE ?= $(COHERENCE_IMAGE_REGISTRY)/$(COHERENCE_IMAGE_NAME):
COHERENCE_GROUP_ID ?= com.oracle.coherence.ce
# The Java version that tests will be compiled to.
# This should match the version required by the COHERENCE_IMAGE version
-BUILD_JAVA_VERSION ?= 11
-COHERENCE_TEST_BASE_IMAGE ?= gcr.io/distroless/java11-debian11
+BUILD_JAVA_VERSION ?= 17
+COHERENCE_TEST_BASE_IMAGE ?= gcr.io/distroless/java17-debian12
# This is the Coherence image that will be used in tests.
# Changing this variable will allow test builds to be run against different Coherence versions
@@ -1639,7 +1639,7 @@ create-ssl-secrets: $(BUILD_OUTPUT)/certs
##@ KinD
KIND_CLUSTER ?= operator
-KIND_IMAGE ?= "kindest/node:v1.31.0@sha256:53df588e04085fd41ae12de0c3fe4c72f7013bba32a20e7325357a1ac94ba865"
+KIND_IMAGE ?= "kindest/node:v1.32.0@sha256:c48c62eac5da28cdadcf560d1d8616cfa6783b58f0d94cf63ad1bf49600cb027"
CALICO_TIMEOUT ?= 300s
# ----------------------------------------------------------------------------------------------------------------------
@@ -2000,7 +2000,7 @@ controller-gen: $(TOOLS_BIN)/controller-gen ## Download controller-gen locally i
$(TOOLS_BIN)/controller-gen:
@echo "Downloading controller-gen"
- test -s $(TOOLS_BIN)/controller-gen || GOBIN=$(TOOLS_BIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.16.2
+ test -s $(TOOLS_BIN)/controller-gen || GOBIN=$(TOOLS_BIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.17.0
ls -al $(TOOLS_BIN)
# ----------------------------------------------------------------------------------------------------------------------
@@ -2306,7 +2306,7 @@ get-istio: $(BUILD_PROPS)
# ----------------------------------------------------------------------------------------------------------------------
$(TOOLS_BIN)/golangci-lint:
@mkdir -p $(TOOLS_BIN)
- curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh --header $(GH_AUTH) | sh -s -- -b $(TOOLS_BIN) v1.55.2
+ curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh --header $(GH_AUTH) | sh -s -- -b $(TOOLS_BIN) v1.63.1
# ----------------------------------------------------------------------------------------------------------------------
# Display the full version string for the artifacts that would be built.
diff --git a/api/v1/coherence_types.go b/api/v1/coherence_types.go
index 873c90360..49d732022 100644
--- a/api/v1/coherence_types.go
+++ b/api/v1/coherence_types.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -244,7 +244,7 @@ func (in *ApplicationSpec) UpdateCoherenceContainer(c *corev1.Container) {
if in.WorkingDir != nil {
c.Env = append(c.Env, corev1.EnvVar{Name: EnvVarCohAppDir, Value: *in.WorkingDir})
}
- if in.Args != nil && len(in.Args) > 0 {
+ if len(in.Args) > 0 {
args := strings.Join(in.Args, " ")
c.Env = append(c.Env, corev1.EnvVar{Name: EnvVarAppMainArgs, Value: args})
}
@@ -692,14 +692,14 @@ func (in *JVMSpec) UpdatePodTemplate(podTemplate *corev1.PodTemplateSpec) {
in.Debug.UpdateCoherenceContainer(c)
// Add additional classpath items to the Coherence container
- if in.Classpath != nil && len(in.Classpath) > 0 {
+ if len(in.Classpath) > 0 {
// always use the linux/unix path separator as we only ever run on linux
cp := strings.Join(in.Classpath, ":")
c.Env = append(c.Env, corev1.EnvVar{Name: EnvVarJvmExtraClasspath, Value: cp})
}
// Add JVM args variables to the Coherence container
- if in.Args != nil && len(in.Args) > 0 {
+ if len(in.Args) > 0 {
args := strings.Join(in.Args, " ")
c.Env = append(c.Env, corev1.EnvVar{Name: EnvVarJvmArgs, Value: args})
}
@@ -1338,83 +1338,83 @@ type ServiceMonitorSpec struct {
// +optional
Labels map[string]string `json:"labels,omitempty"`
// The label to use to retrieve the job name from.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec
// +optional
JobLabel string `json:"jobLabel,omitempty"`
// TargetLabels transfers labels on the Kubernetes Service onto the target.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec
// +listType=atomic
// +optional
TargetLabels []string `json:"targetLabels,omitempty"`
// PodTargetLabels transfers labels on the Kubernetes Pod onto the target.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec
// +listType=atomic
// +optional
PodTargetLabels []string `json:"podTargetLabels,omitempty"`
// SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec
// +optional
SampleLimit *uint64 `json:"sampleLimit,omitempty"`
// HTTP path to scrape for metrics.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
Path string `json:"path,omitempty"`
// HTTP scheme to use for scraping.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
Scheme string `json:"scheme,omitempty"`
// Optional HTTP URL parameters
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
Params map[string][]string `json:"params,omitempty"`
// Interval at which metrics should be scraped
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
Interval monitoringv1.Duration `json:"interval,omitempty"`
// Timeout after which the scrape is ended
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
ScrapeTimeout monitoringv1.Duration `json:"scrapeTimeout,omitempty"`
// TLS configuration to use when scraping the endpoint
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
TLSConfig *monitoringv1.TLSConfig `json:"tlsConfig,omitempty"`
// File to read bearer token for scraping targets.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
BearerTokenFile string `json:"bearerTokenFile,omitempty"`
// Secret to mount to read bearer token for scraping targets. The secret
// needs to be in the same namespace as the service monitor and accessible by
// the Prometheus Operator.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
BearerTokenSecret *corev1.SecretKeySelector `json:"bearerTokenSecret,omitempty"`
// HonorLabels chooses the metric labels on collisions with target labels.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
HonorLabels bool `json:"honorLabels,omitempty"`
// HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
HonorTimestamps *bool `json:"honorTimestamps,omitempty"`
// BasicAuth allow an endpoint to authenticate over basic authentication
// More info: https://prometheus.io/docs/operating/configuration/#endpoints
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
BasicAuth *monitoringv1.BasicAuth `json:"basicAuth,omitempty"`
// MetricRelabelings to apply to samples before ingestion.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +listType=atomic
// +optional
MetricRelabelings []monitoringv1.RelabelConfig `json:"metricRelabelings,omitempty"`
// Relabelings to apply to samples before scraping.
// More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +listType=atomic
// +optional
Relabelings []monitoringv1.RelabelConfig `json:"relabelings,omitempty"`
// ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.
- // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint
+ // See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint
// +optional
ProxyURL *string `json:"proxyURL,omitempty"`
}
@@ -1979,7 +1979,7 @@ type ServiceSpec struct {
// "Cluster" obscures the client source IP and may cause a second hop to
// another node, but should have good overall load-spreading.
// +optional
- ExternalTrafficPolicy *corev1.ServiceExternalTrafficPolicyType `json:"externalTrafficPolicy,omitempty"`
+ ExternalTrafficPolicy *corev1.ServiceExternalTrafficPolicy `json:"externalTrafficPolicy,omitempty"`
// healthCheckNodePort specifies the healthcheck nodePort for the service.
// If not specified, HealthCheckNodePort is created by the service api
// backend with the allocated nodePort. Will use user-specified nodePort value
@@ -2028,7 +2028,7 @@ type ServiceSpec struct {
// clusterIPs fields depend on the value of this field. This field will be
// wiped when updating a service to type ExternalName.
// +optional
- IPFamilyPolicy *corev1.IPFamilyPolicyType `json:"ipFamilyPolicy,omitempty"`
+ IPFamilyPolicy *corev1.IPFamilyPolicy `json:"ipFamilyPolicy,omitempty"`
// allocateLoadBalancerNodePorts defines if NodePorts will be automatically
// allocated for services with type LoadBalancer. Default is "true". It may be
// set to "false" if the cluster load-balancer does not rely on NodePorts.
@@ -2349,17 +2349,17 @@ func (in *PodDNSConfig) UpdatePodTemplate(podTemplate *corev1.PodTemplateSpec) {
cfg := corev1.PodDNSConfig{}
- if in.Nameservers != nil && len(in.Nameservers) > 0 {
+ if len(in.Nameservers) > 0 {
cfg.Nameservers = in.Nameservers
podTemplate.Spec.DNSConfig = &cfg
}
- if in.Searches != nil && len(in.Searches) > 0 {
+ if len(in.Searches) > 0 {
cfg.Searches = in.Searches
podTemplate.Spec.DNSConfig = &cfg
}
- if in.Options != nil && len(in.Options) > 0 {
+ if len(in.Options) > 0 {
cfg.Options = in.Options
podTemplate.Spec.DNSConfig = &cfg
}
diff --git a/api/v1/coherencejobresource_types.go b/api/v1/coherencejobresource_types.go
index 2da6a1c62..1f39b96cc 100644
--- a/api/v1/coherencejobresource_types.go
+++ b/api/v1/coherencejobresource_types.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
diff --git a/api/v1/coherenceresource_types.go b/api/v1/coherenceresource_types.go
index 314eae1ca..638c0c98d 100644
--- a/api/v1/coherenceresource_types.go
+++ b/api/v1/coherenceresource_types.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
diff --git a/api/v1/common_test.go b/api/v1/common_test.go
index 83e1a8d14..bbd10700e 100644
--- a/api/v1/common_test.go
+++ b/api/v1/common_test.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -139,7 +139,7 @@ func assertStatefulSet(t *testing.T, res coh.Resource, stsExpected *appsv1.State
for _, diff := range diffs {
msg = msg + "\n" + diff
}
- t.Errorf(msg)
+ t.Error(msg)
}
}
@@ -194,7 +194,7 @@ func assertJob(t *testing.T, res coh.Resource, expected *batchv1.Job) {
for _, diff := range diffs {
msg = msg + "\n" + diff
}
- t.Errorf(msg)
+ t.Error(msg)
}
}
diff --git a/controllers/coherencejob_controller.go b/controllers/coherencejob_controller.go
index 0b8b35f56..4b6891cd3 100644
--- a/controllers/coherencejob_controller.go
+++ b/controllers/coherencejob_controller.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -242,10 +242,10 @@ func (in *CoherenceJobReconciler) SetupWithManager(mgr ctrl.Manager, cs clients.
// This is important to ensure, for example, that a ConfigMap is created before the
// StatefulSet that uses it.
reconcilers := []reconciler.SecondaryResourceReconciler{
- reconciler.NewConfigMapReconciler(mgr, cs),
- secret.NewSecretReconciler(mgr, cs),
- reconciler.NewServiceReconciler(mgr, cs),
- servicemonitor.NewServiceMonitorReconciler(mgr, cs),
+ reconciler.NewNamedConfigMapReconciler(mgr, cs, "controllers.JobConfigMap"),
+ secret.NewNamedSecretReconciler(mgr, cs, "controllers.JobSecret"),
+ reconciler.NewNamedServiceReconciler(mgr, cs, "controllers.JobService"),
+ servicemonitor.NewNamedServiceMonitorReconciler(mgr, cs, "controllers.JobServiceMonitor"),
job.NewJobReconciler(mgr, cs),
}
diff --git a/controllers/job/job_controller.go b/controllers/job/job_controller.go
index 95ad6937e..0a65d575b 100644
--- a/controllers/job/job_controller.go
+++ b/controllers/job/job_controller.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -252,7 +252,7 @@ func (in *ReconcileJob) patchJob(ctx context.Context, deployment coh.CoherenceRe
msg := fmt.Sprintf("upddates to the statefuleset would have been invalid, the update will not be re-queued: %v", errorList)
events := in.GetEventRecorder()
events.Event(deployment, corev1.EventTypeWarning, reconciler.EventReasonUpdated, msg)
- return reconcile.Result{Requeue: false}, fmt.Errorf(msg)
+ return reconcile.Result{Requeue: false}, errors.New(msg)
}
// copy the job, so we do not alter the passed in job
diff --git a/controllers/reconciler/base_controller.go b/controllers/reconciler/base_controller.go
index c643af143..8f19663f2 100644
--- a/controllers/reconciler/base_controller.go
+++ b/controllers/reconciler/base_controller.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -289,7 +289,7 @@ func (in *CommonReconciler) UpdateDeploymentStatusActionsState(ctx context.Conte
// CanCreate determines whether any specified start quorum has been met.
func (in *CommonReconciler) CanCreate(ctx context.Context, deployment coh.CoherenceResource) (bool, string) {
spec := deployment.GetSpec()
- if spec.StartQuorum == nil || len(spec.StartQuorum) == 0 {
+ if len(spec.StartQuorum) == 0 {
// there is no start quorum
return true, ""
}
diff --git a/controllers/reconciler/simple_reconciler.go b/controllers/reconciler/simple_reconciler.go
index 0b631249b..ac2f4efd3 100644
--- a/controllers/reconciler/simple_reconciler.go
+++ b/controllers/reconciler/simple_reconciler.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -21,11 +21,19 @@ import (
var _ reconcile.Reconciler = &SimpleReconciler{}
func NewConfigMapReconciler(mgr manager.Manager, cs clients.ClientSet) SecondaryResourceReconciler {
- return NewSimpleReconciler(mgr, cs, "controllers.ConfigMap", coh.ResourceTypeConfigMap, &corev1.ConfigMap{})
+ return NewNamedConfigMapReconciler(mgr, cs, "controllers.ConfigMap")
+}
+
+func NewNamedConfigMapReconciler(mgr manager.Manager, cs clients.ClientSet, name string) SecondaryResourceReconciler {
+ return NewSimpleReconciler(mgr, cs, name, coh.ResourceTypeConfigMap, &corev1.ConfigMap{})
}
func NewServiceReconciler(mgr manager.Manager, cs clients.ClientSet) SecondaryResourceReconciler {
- return NewSimpleReconciler(mgr, cs, "controllers.Service", coh.ResourceTypeService, &corev1.Service{})
+ return NewNamedServiceReconciler(mgr, cs, "controllers.Service")
+}
+
+func NewNamedServiceReconciler(mgr manager.Manager, cs clients.ClientSet, name string) SecondaryResourceReconciler {
+ return NewSimpleReconciler(mgr, cs, name, coh.ResourceTypeService, &corev1.Service{})
}
// NewSimpleReconciler returns a new SimpleReconciler.
diff --git a/controllers/secret/secret_controller.go b/controllers/secret/secret_controller.go
index aa371eea2..40bd36a7b 100644
--- a/controllers/secret/secret_controller.go
+++ b/controllers/secret/secret_controller.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -27,6 +27,11 @@ var _ reconcile.Reconciler = &ReconcileSecret{}
// NewSecretReconciler returns a new Secret reconciler.
func NewSecretReconciler(mgr manager.Manager, cs clients.ClientSet) reconciler.SecondaryResourceReconciler {
+ return NewNamedSecretReconciler(mgr, cs, controllerName)
+}
+
+// NewNamedSecretReconciler returns a new Secret reconciler.
+func NewNamedSecretReconciler(mgr manager.Manager, cs clients.ClientSet, name string) reconciler.SecondaryResourceReconciler {
r := &ReconcileSecret{
SimpleReconciler: reconciler.SimpleReconciler{
ReconcileSecondaryResource: reconciler.ReconcileSecondaryResource{
@@ -37,7 +42,7 @@ func NewSecretReconciler(mgr manager.Manager, cs clients.ClientSet) reconciler.S
},
}
- r.SetCommonReconciler(controllerName, mgr, cs)
+ r.SetCommonReconciler(name, mgr, cs)
return r
}
diff --git a/controllers/servicemonitor/servicemonitor_controller.go b/controllers/servicemonitor/servicemonitor_controller.go
index 1ace3d955..0c03c466e 100644
--- a/controllers/servicemonitor/servicemonitor_controller.go
+++ b/controllers/servicemonitor/servicemonitor_controller.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -35,6 +35,11 @@ var _ reconcile.Reconciler = &ReconcileServiceMonitor{}
// NewServiceMonitorReconciler returns a new ServiceMonitor reconciler.
func NewServiceMonitorReconciler(mgr manager.Manager, cs clients.ClientSet) reconciler.SecondaryResourceReconciler {
+ return NewNamedServiceMonitorReconciler(mgr, cs, controllerName)
+}
+
+// NewNamedServiceMonitorReconciler returns a new ServiceMonitor reconciler.
+func NewNamedServiceMonitorReconciler(mgr manager.Manager, cs clients.ClientSet, name string) reconciler.SecondaryResourceReconciler {
r := &ReconcileServiceMonitor{
ReconcileSecondaryResource: reconciler.ReconcileSecondaryResource{
Kind: coh.ResourceTypeServiceMonitor,
@@ -44,7 +49,7 @@ func NewServiceMonitorReconciler(mgr manager.Manager, cs clients.ClientSet) reco
monClient: client.NewForConfigOrDie(mgr.GetConfig()),
}
- r.SetCommonReconciler(controllerName, mgr, cs)
+ r.SetCommonReconciler(name, mgr, cs)
return r
}
diff --git a/controllers/statefulset/statefulset_controller.go b/controllers/statefulset/statefulset_controller.go
index d2015415d..45f9b595f 100644
--- a/controllers/statefulset/statefulset_controller.go
+++ b/controllers/statefulset/statefulset_controller.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -393,7 +393,7 @@ func (in *ReconcileStatefulSet) patchStatefulSet(ctx context.Context, deployment
msg := fmt.Sprintf("upddates to the statefuleset would have been invalid, the update will not be re-queued: %v", errorList)
events := in.GetEventRecorder()
events.Event(deployment, corev1.EventTypeWarning, reconciler.EventReasonUpdated, msg)
- return reconcile.Result{Requeue: false}, fmt.Errorf(msg)
+ return reconcile.Result{Requeue: false}, errors.New(msg)
}
// We NEVER change the replicas or Status in an update.
diff --git a/docs/about/04_coherence_spec.adoc b/docs/about/04_coherence_spec.adoc
index 1ae189a16..955b03b7d 100644
--- a/docs/about/04_coherence_spec.adoc
+++ b/docs/about/04_coherence_spec.adoc
@@ -1,6 +1,6 @@
///////////////////////////////////////////////////////////////////////////////
- Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ Copyright (c) 2020, 2025, Oracle and/or its affiliates.
Licensed under the Universal Permissive License v 1.0 as shown at
http://oss.oracle.com/licenses/upl.
@@ -753,24 +753,24 @@ ServiceMonitorSpec the ServiceMonitor spec for a port service.
| Field | Description | Type | Required
m| enabled | Enabled is a flag to enable or disable creation of a Prometheus ServiceMonitor for a port. If Prometheus ServiceMonitor CR is not installed no ServiceMonitor then even if this flag is true no ServiceMonitor will be created. m| *bool | false
m| labels | Additional labels to add to the ServiceMonitor. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ m| map[string]string | false
-m| jobLabel | The label to use to retrieve the job name from. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec m| string | false
-m| targetLabels | TargetLabels transfers labels on the Kubernetes Service onto the target. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec m| []string | false
-m| podTargetLabels | PodTargetLabels transfers labels on the Kubernetes Pod onto the target. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec m| []string | false
-m| sampleLimit | SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec m| *uint64 | false
-m| path | HTTP path to scrape for metrics. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| string | false
-m| scheme | HTTP scheme to use for scraping. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| string | false
-m| params | Optional HTTP URL parameters See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| map[string][]string | false
-m| interval | Interval at which metrics should be scraped See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| monitoringv1.Duration | false
-m| scrapeTimeout | Timeout after which the scrape is ended See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| monitoringv1.Duration | false
-m| tlsConfig | TLS configuration to use when scraping the endpoint See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| *monitoringv1.TLSConfig | false
-m| bearerTokenFile | File to read bearer token for scraping targets. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| string | false
-m| bearerTokenSecret | Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| *https://{k8s-doc-link}/#secretkeyselector-v1-core[corev1.SecretKeySelector] | false
-m| honorLabels | HonorLabels chooses the metric labels on collisions with target labels. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| bool | false
-m| honorTimestamps | HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| *bool | false
-m| basicAuth | BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| *monitoringv1.BasicAuth | false
-m| metricRelabelings | MetricRelabelings to apply to samples before ingestion. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| []monitoringv1.RelabelConfig | false
-m| relabelings | Relabelings to apply to samples before scraping. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| []monitoringv1.RelabelConfig | false
-m| proxyURL | ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint m| *string | false
+m| jobLabel | The label to use to retrieve the job name from. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec m| string | false
+m| targetLabels | TargetLabels transfers labels on the Kubernetes Service onto the target. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec m| []string | false
+m| podTargetLabels | PodTargetLabels transfers labels on the Kubernetes Pod onto the target. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec m| []string | false
+m| sampleLimit | SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec m| *uint64 | false
+m| path | HTTP path to scrape for metrics. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| string | false
+m| scheme | HTTP scheme to use for scraping. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| string | false
+m| params | Optional HTTP URL parameters See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| map[string][]string | false
+m| interval | Interval at which metrics should be scraped See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| monitoringv1.Duration | false
+m| scrapeTimeout | Timeout after which the scrape is ended See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| monitoringv1.Duration | false
+m| tlsConfig | TLS configuration to use when scraping the endpoint See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| *monitoringv1.TLSConfig | false
+m| bearerTokenFile | File to read bearer token for scraping targets. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| string | false
+m| bearerTokenSecret | Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| *https://{k8s-doc-link}/#secretkeyselector-v1-core[corev1.SecretKeySelector] | false
+m| honorLabels | HonorLabels chooses the metric labels on collisions with target labels. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| bool | false
+m| honorTimestamps | HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| *bool | false
+m| basicAuth | BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| *monitoringv1.BasicAuth | false
+m| metricRelabelings | MetricRelabelings to apply to samples before ingestion. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| []monitoringv1.RelabelConfig | false
+m| relabelings | Relabelings to apply to samples before scraping. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| []monitoringv1.RelabelConfig | false
+m| proxyURL | ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. See https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint m| *string | false
|===
<
>
@@ -798,14 +798,14 @@ m| annotations | Annotations is free form yaml that will be added to the service
m| sessionAffinity | Supports "ClientIP" and "None". Used to maintain session affinity. Enable client IP based session affinity. Must be ClientIP or None. Defaults to None. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies m| *https://pkg.go.dev/k8s.io/api/core/v1#ServiceAffinity | false
m| loadBalancerSourceRanges | If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature." m| []string | false
m| externalName | externalName is the external reference that kubedns or equivalent will return as a CNAME record for this service. No proxying will be involved. Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires Kind to be ExternalName. m| *string | false
-m| externalTrafficPolicy | externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading. m| *https://pkg.go.dev/k8s.io/api/core/v1#ServiceExternalTrafficPolicyType | false
+m| externalTrafficPolicy | externalTrafficPolicy denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints. "Local" preserves the client source IP and avoids a second hop for LoadBalancer and Nodeport type services, but risks potentially imbalanced traffic spreading. "Cluster" obscures the client source IP and may cause a second hop to another node, but should have good overall load-spreading. m| *https://{k8s-doc-link}/#serviceexternaltrafficpolicy-v1-core[corev1.ServiceExternalTrafficPolicy] | false
m| healthCheckNodePort | healthCheckNodePort specifies the healthcheck nodePort for the service. If not specified, HealthCheckNodePort is created by the service api backend with the allocated nodePort. Will use user-specified nodePort value if specified by the client. Only effects when Kind is set to LoadBalancer and ExternalTrafficPolicy is set to Local. m| *int32 | false
m| publishNotReadyAddresses | publishNotReadyAddresses, when set to true, indicates that DNS implementations must publish the notReadyAddresses of subsets for the Endpoints associated with the Service. The default value is false. The primary use case for setting this field is to use a StatefulSet's Headless Service to propagate SRV records for its Pods without respect to their readiness for purpose of peer discovery. m| *bool | false
m| sessionAffinityConfig | sessionAffinityConfig contains the configurations of session affinity. m| *https://{k8s-doc-link}/#sessionaffinityconfig-v1-core[corev1.SessionAffinityConfig] | false
m| ipFamilies | IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service, and is gated by the "IPv6DualStack" feature gate. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are "IPv4" and "IPv6". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to "headless" services. This field will be wiped when updating a Service to type ExternalName. +
+
This field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. m| []https://pkg.go.dev/k8s.io/api/core/v1#IPFamily | false
-m| ipFamilyPolicy | IPFamilyPolicy represents the dual-stack-ness requested or required by this Service, and is gated by the "IPv6DualStack" feature gate. If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. m| *https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicyType | false
+m| ipFamilyPolicy | IPFamilyPolicy represents the dual-stack-ness requested or required by this Service, and is gated by the "IPv6DualStack" feature gate. If there is no value provided, then this field will be set to SingleStack. Services can be "SingleStack" (a single IP family), "PreferDualStack" (two IP families on dual-stack configured clusters or a single IP family on single-stack clusters), or "RequireDualStack" (two IP families on dual-stack configured clusters, otherwise fail). The ipFamilies and clusterIPs fields depend on the value of this field. This field will be wiped when updating a service to type ExternalName. m| *https://{k8s-doc-link}/#ipfamilypolicy-v1-core[corev1.IPFamilyPolicy] | false
m| allocateLoadBalancerNodePorts | allocateLoadBalancerNodePorts defines if NodePorts will be automatically allocated for services with type LoadBalancer. Default is "true". It may be set to "false" if the cluster load-balancer does not rely on NodePorts. allocateLoadBalancerNodePorts may only be set for services with type LoadBalancer and will be cleared if the type is changed to any other type. This field is alpha-level and is only honored by servers that enable the ServiceLBNodePortControl feature. m| *bool | false
|===
diff --git a/docs/ports/040_servicemonitors.adoc b/docs/ports/040_servicemonitors.adoc
index 296f430e3..dd33ec5c9 100644
--- a/docs/ports/040_servicemonitors.adoc
+++ b/docs/ports/040_servicemonitors.adoc
@@ -68,8 +68,8 @@ spec:
The `Coherence` CRD <>
contains many of the fields from the
-https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#servicemonitorspec[Prometheus `ServiceMonitorSpec`]
-and https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#endpoint[Prometheus Endpoint]
+https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#servicemonitorspec[Prometheus `ServiceMonitorSpec`]
+and https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api-reference/api.md#endpoint[Prometheus Endpoint]
to allow the `ServiceMonitor` to be configured for most use-cases.
In situations where the `Coherence` CRD does not have the required fields, for example when a different version
diff --git a/go.mod b/go.mod
index ec1b84054..794c47566 100644
--- a/go.mod
+++ b/go.mod
@@ -1,8 +1,8 @@
module github.com/oracle/coherence-operator
-go 1.22.0
+go 1.23.0
-toolchain go1.22.7
+toolchain go1.23.4
require (
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
@@ -10,88 +10,86 @@ require (
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32
github.com/go-logr/logr v1.4.2
github.com/go-test/deep v1.1.1
- github.com/onsi/gomega v1.33.1
+ github.com/onsi/gomega v1.36.2
github.com/pkg/errors v0.9.1
- github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.75.0
- github.com/prometheus-operator/prometheus-operator/pkg/client v0.75.0
+ github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.79.2
+ github.com/prometheus-operator/prometheus-operator/pkg/client v0.79.2
github.com/spf13/cobra v1.8.1
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.19.0
- golang.org/x/mod v0.18.0
- golang.org/x/net v0.26.0
- k8s.io/api v0.30.2
- k8s.io/apiextensions-apiserver v0.30.2
- k8s.io/apimachinery v0.30.2
- k8s.io/client-go v0.30.2
- k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0
- sigs.k8s.io/controller-runtime v0.18.4
+ golang.org/x/mod v0.22.0
+ golang.org/x/net v0.33.0
+ k8s.io/api v0.32.0
+ k8s.io/apiextensions-apiserver v0.32.0
+ k8s.io/apimachinery v0.32.0
+ k8s.io/client-go v0.32.0
+ k8s.io/utils v0.0.0-20241210054802-24370beab758
+ sigs.k8s.io/controller-runtime v0.19.3
sigs.k8s.io/testing_frameworks v0.1.2
)
require (
github.com/beorn7/perks v1.0.1 // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
github.com/evanphx/json-patch v5.9.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-logr/zapr v1.3.0 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
- github.com/google/gnostic-models v0.6.8 // indirect
+ github.com/google/gnostic-models v0.6.9 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/hashicorp/hcl v1.0.0 // indirect
- github.com/imdario/mergo v0.3.6 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
- github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
- github.com/moby/spdystream v0.2.0 // indirect
+ github.com/moby/spdystream v0.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
- github.com/prometheus/client_golang v1.16.0 // indirect
- github.com/prometheus/client_model v0.4.0 // indirect
- github.com/prometheus/common v0.44.0 // indirect
- github.com/prometheus/procfs v0.12.0 // indirect
+ github.com/prometheus/client_golang v1.19.1 // indirect
+ github.com/prometheus/client_model v0.6.1 // indirect
+ github.com/prometheus/common v0.55.0 // indirect
+ github.com/prometheus/procfs v0.15.1 // indirect
github.com/sagikazarmark/locafero v0.4.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
+ github.com/x448/float16 v0.8.4 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
- golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
- golang.org/x/oauth2 v0.21.0 // indirect
- golang.org/x/sys v0.21.0 // indirect
- golang.org/x/term v0.21.0 // indirect
- golang.org/x/text v0.16.0 // indirect
- golang.org/x/time v0.5.0 // indirect
+ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
+ golang.org/x/oauth2 v0.24.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ golang.org/x/text v0.21.0 // indirect
+ golang.org/x/time v0.8.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
- google.golang.org/protobuf v1.34.2 // indirect
+ google.golang.org/protobuf v1.36.1 // indirect
+ gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
- k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
+ k8s.io/kube-openapi v0.0.0-20241212045625-5ad02ce6640f // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/structured-merge-diff/v4 v4.5.0 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)
-
-replace k8s.io/client-go => k8s.io/client-go v0.30.2
diff --git a/go.sum b/go.sum
index 4c83aa567..25323de97 100644
--- a/go.sum
+++ b/go.sum
@@ -2,8 +2,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
-github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -21,6 +21,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
+github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
+github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew=
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
@@ -33,38 +35,31 @@ github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF
github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
-github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
-github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
-github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
-github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
+github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
+github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg=
-github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg=
+github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
-github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
@@ -84,12 +79,10 @@ github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0V
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
-github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
-github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
+github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
+github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -101,11 +94,11 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
github.com/onsi/ginkgo v1.4.0 h1:n60/4GZK0Sr9O2iuGKq876Aoa0ER2ydgpMOBwzJ8e2c=
github.com/onsi/ginkgo v1.4.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo/v2 v2.17.2 h1:7eMhcy3GimbsA3hEnVKdw/PQM9XN9krpKVXsZdph0/g=
-github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc=
+github.com/onsi/ginkgo/v2 v2.22.1 h1:QW7tbJAUDyVDVOM5dFa7qaybo+CRfR7bemlQUN6Z8aM=
+github.com/onsi/ginkgo/v2 v2.22.1/go.mod h1:S6aTpoRsSq2cZOd+pssHAlKW/Q/jZt6cPrPlnj4a1xM=
github.com/onsi/gomega v1.3.0/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
-github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
-github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0=
+github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8=
+github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
@@ -115,20 +108,20 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.75.0 h1:62MgqpTrtjNd8cc0RJSFJ1OHqgSrThgHehGVuQaF/fc=
-github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.75.0/go.mod h1:XYrdZw5dW12Cjkt4ndbeNZZTBp4UCHtW0ccR9+sTtPU=
-github.com/prometheus-operator/prometheus-operator/pkg/client v0.75.0 h1:QcchdrYyQ9qRY0KZlEjx6gYUjPOvkZDbzOlHMp4ix88=
-github.com/prometheus-operator/prometheus-operator/pkg/client v0.75.0/go.mod h1:ptPuQIiTdOvagifFhojZSJ/8VinU3/l7gOQ+Y6M0aqI=
-github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8=
-github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc=
-github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY=
-github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
-github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
-github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
-github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
-github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
-github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
-github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
+github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.79.2 h1:DGv150w4UyxnjNHlkCw85R3+lspOxegtdnbpP2vKRrk=
+github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.79.2/go.mod h1:AVMP4QEW8xuGWnxaWSpI3kKjP9fDA31nO68zsyREJZA=
+github.com/prometheus-operator/prometheus-operator/pkg/client v0.79.2 h1:wUMuHTC069Ayy+0/srqD5OrLVP/QRhSCUR/7SJ8tSqQ=
+github.com/prometheus-operator/prometheus-operator/pkg/client v0.79.2/go.mod h1:671/KciyzKiTmvIYTpp7CzWD1/TNXVPgeDLJcGFWrOM=
+github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
+github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
+github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
+github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
+github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
+github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
+github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
+github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
+github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
+github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
@@ -158,6 +151,8 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
+github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -169,22 +164,21 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g=
-golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0=
-golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
+golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
-golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
-golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
-golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
-golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
+golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
+golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -192,67 +186,68 @@ golang.org/x/sys v0.0.0-20180117170059-2c42eef0765b/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA=
-golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20171227012246-e19ae1496984/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
-golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
-golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
-golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
+golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8=
+golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
-google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
+google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4=
+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.0.0/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.30.2 h1:+ZhRj+28QT4UOH+BKznu4CBgPWgkXO7XAvMcMl0qKvI=
-k8s.io/api v0.30.2/go.mod h1:ULg5g9JvOev2dG0u2hig4Z7tQ2hHIuS+m8MNZ+X6EmI=
-k8s.io/apiextensions-apiserver v0.30.2 h1:l7Eue2t6QiLHErfn2vwK4KgF4NeDgjQkCXtEbOocKIE=
-k8s.io/apiextensions-apiserver v0.30.2/go.mod h1:lsJFLYyK40iguuinsb3nt+Sj6CmodSI4ACDLep1rgjw=
-k8s.io/apimachinery v0.30.2 h1:fEMcnBj6qkzzPGSVsAZtQThU62SmQ4ZymlXRC5yFSCg=
-k8s.io/apimachinery v0.30.2/go.mod h1:iexa2somDaxdnj7bha06bhb43Zpa6eWH8N8dbqVjTUc=
-k8s.io/client-go v0.30.2 h1:sBIVJdojUNPDU/jObC+18tXWcTJVcwyqS9diGdWHk50=
-k8s.io/client-go v0.30.2/go.mod h1:JglKSWULm9xlJLx4KCkfLLQ7XwtlbflV6uFFSHTMgVs=
+k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE=
+k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0=
+k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0=
+k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw=
+k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg=
+k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
+k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8=
+k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b h1:Q9xmGWBvOGd8UJyccgpYlLosk/JlfP3xQLNkQlHJeXw=
-k8s.io/kube-openapi v0.0.0-20240620174524-b456828f718b/go.mod h1:UxDHUPsUwTOOxSU+oXURfFBcAS6JwiRXTYqYwfuGowc=
-k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak=
-k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/controller-runtime v0.18.4 h1:87+guW1zhvuPLh1PHybKdYFLU0YJp4FhJRmiHvm5BZw=
-sigs.k8s.io/controller-runtime v0.18.4/go.mod h1:TVoGrfdpbA9VRFaRnKgk9P5/atA0pMwq+f+msb9M8Sg=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
-sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
+k8s.io/kube-openapi v0.0.0-20241212045625-5ad02ce6640f h1:jyijczch0N1N0Uk0p4P0hfgTP+2Rkt4m6pVX8l3R6q4=
+k8s.io/kube-openapi v0.0.0-20241212045625-5ad02ce6640f/go.mod h1:iZjdMQzunI7O/sUrf/5WRX1gvaAIam32lKx9+paoLbU=
+k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0=
+k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+sigs.k8s.io/controller-runtime v0.19.3 h1:XO2GvC9OPftRst6xWCpTgBZO04S2cbp0Qqkj8bX1sPw=
+sigs.k8s.io/controller-runtime v0.19.3/go.mod h1:j4j87DqtsThvwTv5/Tc5NFRyyF/RF0ip4+62tbTSIUM=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/structured-merge-diff/v4 v4.5.0 h1:nbCitCK2hfnhyiKo6uf2HxUPTCodY6Qaf85SbDIaMBk=
+sigs.k8s.io/structured-merge-diff/v4 v4.5.0/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM=
sigs.k8s.io/testing_frameworks v0.1.2/go.mod h1:ToQrwSC3s8Xf/lADdZp3Mktcql9CG0UAmdJG9th5i0w=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
diff --git a/java/coherence-operator/pom.xml b/java/coherence-operator/pom.xml
index 49d077ef6..aefc35ae4 100644
--- a/java/coherence-operator/pom.xml
+++ b/java/coherence-operator/pom.xml
@@ -1,12 +1,10 @@
+ ~ Copyright (c) 2020, 2025, Oracle and/or its affiliates.
+ ~ Licensed under the Universal Permissive License v 1.0 as shown at
+ ~ http://oss.oracle.com/licenses/upl.
+ -->
@@ -26,8 +24,8 @@
ghcr.io/oracle
${docker.registry}/coherence-operator-test-base:${project.version}
amd64
- gcr.io/distroless/java11-debian11
- gcr.io/distroless/java11-debian11
+ gcr.io/distroless/java17-debian12
+ gcr.io/distroless/java17-debian12
8
8
diff --git a/java/operator-test-client/src/main/java/com/oracle/coherence/k8s/testing/GrpcClient.java b/java/operator-test-client/src/main/java/com/oracle/coherence/k8s/testing/GrpcClient.java
index 700b3f7d4..b1b5eb766 100644
--- a/java/operator-test-client/src/main/java/com/oracle/coherence/k8s/testing/GrpcClient.java
+++ b/java/operator-test-client/src/main/java/com/oracle/coherence/k8s/testing/GrpcClient.java
@@ -1,16 +1,14 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
package com.oracle.coherence.k8s.testing;
-import com.oracle.coherence.client.GrpcSessionConfiguration;
-
+import com.tangosol.net.Coherence;
import com.tangosol.net.NamedCache;
import com.tangosol.net.Session;
-import com.tangosol.net.SessionConfiguration;
/**
* A simple Coherence gRPC client.
@@ -30,10 +28,8 @@ private GrpcClient() {
*/
public static void main(String[] args) {
try {
- SessionConfiguration config = GrpcSessionConfiguration.builder()
- .build();
-
- Session session = Session.create(config).get();
+ Coherence coherence = Coherence.client(Coherence.Mode.GrpcFixed).startAndWait();
+ Session session = coherence.getSession();
System.out.println("Getting cache 'test' from gRPC session");
NamedCache cache = session.getCache("test");
diff --git a/java/operator-test-client/src/main/resources/test-cache-config.xml b/java/operator-test-client/src/main/resources/test-cache-config.xml
index 5d1e4da34..b61e58525 100644
--- a/java/operator-test-client/src/main/resources/test-cache-config.xml
+++ b/java/operator-test-client/src/main/resources/test-cache-config.xml
@@ -1,6 +1,6 @@
@@ -11,13 +11,13 @@
*
- remote-scheme
+ thin-${coherence.client remote}
- remote-scheme
+ thin-remote
RemoteCache
@@ -30,5 +30,26 @@
+
+
+ thin-grpc-fixed
+
+ RemoteGrpcCache
+
+
+
+
+
+ 127.0.0.1
+ 1408
+
+
+
+
+
+
+
+
+
diff --git a/java/operator-test-spring/pom.xml b/java/operator-test-spring/pom.xml
index 5d678643d..251644a27 100644
--- a/java/operator-test-spring/pom.xml
+++ b/java/operator-test-spring/pom.xml
@@ -1,6 +1,6 @@
@@ -79,7 +79,7 @@
${cnbp-image-name}
- 11.*
+ 17.*
diff --git a/java/operator-test-spring/src/main/docker/Dir.Dockerfile b/java/operator-test-spring/src/main/docker/Dir.Dockerfile
index da600061c..1da8065a0 100644
--- a/java/operator-test-spring/src/main/docker/Dir.Dockerfile
+++ b/java/operator-test-spring/src/main/docker/Dir.Dockerfile
@@ -1,4 +1,4 @@
-FROM gcr.io/distroless/java
+FROM gcr.io/distroless/java17-debian12
ADD spring /spring
diff --git a/java/operator-test-spring/src/main/docker/FatJar.Dockerfile b/java/operator-test-spring/src/main/docker/FatJar.Dockerfile
index 33acd45ce..57cebbca7 100644
--- a/java/operator-test-spring/src/main/docker/FatJar.Dockerfile
+++ b/java/operator-test-spring/src/main/docker/FatJar.Dockerfile
@@ -1,4 +1,4 @@
-FROM gcr.io/distroless/java
+FROM gcr.io/distroless/java17-debian12
ADD ${project.artifactId}-${project.version}.jar /app/libs/${project.artifactId}-${project.version}.jar
diff --git a/java/operator-test/pom.xml b/java/operator-test/pom.xml
index e5769e1e4..15c8a106a 100644
--- a/java/operator-test/pom.xml
+++ b/java/operator-test/pom.xml
@@ -1,11 +1,9 @@
+ ~ Copyright (c) 2020, 2025, Oracle and/or its affiliates.
+ ~ Licensed under the Universal Permissive License v 1.0 as shown at
+ ~ http://oss.oracle.com/licenses/upl.
+ -->
coherence-management
${coherence.version}
-
- ${coherence.groupId}
- coherence-metrics
- ${coherence.version}
-
diff --git a/java/pom.xml b/java/pom.xml
index 2fe3660bb..6099e73c6 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -1,7 +1,7 @@
@@ -42,10 +42,10 @@
com.oracle.coherence.ce
21.12.5
- 22.06.10
+ 14.1.2-0-0
com.oracle.coherence.ce
- gcr.io/distroless/java11-debian11
+ gcr.io/distroless/java17-debian12
ghcr.io/oracle/coherence-ce:${coherence.version}
ghcr.io/oracle/${project.artifactId}:${project.version}
@@ -64,6 +64,7 @@
4.13.1
5.7.2
3.10.0
+ 3.25.5
2.7.18
1.8.4
@@ -102,33 +103,18 @@
${coherence.groupId}
- coherence
+ coherence-bom
${coherence.version}
+ pom
+ import
+
- ${coherence.groupId}
- coherence-management
- ${coherence.version}
-
-
- ${coherence.groupId}
- coherence-metrics
- ${coherence.version}
-
-
- ${coherence.groupId}
- coherence-cdi-server
- ${coherence.version}
-
-
- ${coherence.groupId}
- coherence-java-client
- ${coherence.version}
-
-
- ${coherence.groupId}
- coherence-grpc-proxy
- ${coherence.version}
+ com.google.protobuf
+ protobuf-bom
+ ${version.lib.protobuf}
+ pom
+ import
diff --git a/pkg/operator/operator_test.go b/pkg/operator/operator_test.go
index 15bf31320..2e6504c82 100644
--- a/pkg/operator/operator_test.go
+++ b/pkg/operator/operator_test.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -51,7 +51,7 @@ func TestShouldCreateV1CRDs(t *testing.T) {
for crd, found := range expected {
if !found {
- t.Errorf("Failed to create CRD " + crd)
+ t.Error("Failed to create CRD " + crd)
}
}
}
@@ -88,7 +88,7 @@ func TestShouldNotCreateJobCRDWhenFlagIsFalse(t *testing.T) {
for crd, found := range expected {
if !found {
- t.Errorf("Failed to create CRD " + crd)
+ t.Error("Failed to create CRD " + crd)
}
}
}
diff --git a/pkg/runner/cmd_operator.go b/pkg/runner/cmd_operator.go
index f9558ba3b..1b7759314 100644
--- a/pkg/runner/cmd_operator.go
+++ b/pkg/runner/cmd_operator.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -23,11 +23,13 @@ import (
"k8s.io/apimachinery/pkg/util/version"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
rest2 "k8s.io/client-go/rest"
+ "k8s.io/utils/ptr"
"net/http"
"os"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/cache"
"sigs.k8s.io/controller-runtime/pkg/client"
+ "sigs.k8s.io/controller-runtime/pkg/config"
"sigs.k8s.io/controller-runtime/pkg/healthz"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
"sigs.k8s.io/controller-runtime/pkg/manager"
@@ -91,6 +93,9 @@ func execute() error {
return errors.Wrap(err, "unable to create client")
}
+ vpr := operator.GetViper()
+ f := vpr.GetBool(operator.FlagDryRun)
+
options := ctrl.Options{
Scheme: scheme,
HealthProbeBindAddress: viper.GetString(operator.FlagHealthAddress),
@@ -99,6 +104,9 @@ func execute() error {
},
LeaderElection: viper.GetBool(operator.FlagLeaderElection),
LeaderElectionID: lockName,
+ Controller: config.Controller{
+ SkipNameValidation: ptr.To(f),
+ },
}
// Determine the Operator scope...
diff --git a/test/e2e/clients/client_test_helpers.go b/test/e2e/clients/client_test_helpers.go
index bf2345518..a1383ca84 100644
--- a/test/e2e/clients/client_test_helpers.go
+++ b/test/e2e/clients/client_test_helpers.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, Oracle and/or its affiliates.
+ * Copyright (c) 2021, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -107,9 +107,14 @@ func CreateClientJob(ns, name string, tc ClientTestCase) *batchv1.Job {
Value: extendPort,
})
case ClientTypeGrpc:
+ grpcAddress := tc.Cluster.ServiceFQDNs["grpc"]
envVars = append(envVars, corev1.EnvVar{
- Name: "COHERENCE_GRPC_CHANNELS_DEFAULT_HOST",
- Value: tc.Cluster.ServiceFQDNs["grpc"],
+ Name: "COHERENCE_GRPC_ADDRESS",
+ Value: grpcAddress,
+ })
+ envVars = append(envVars, corev1.EnvVar{
+ Name: "COHERENCE_GRPC_PORT",
+ Value: "1408",
})
}
diff --git a/test/e2e/helper/e2e-helpers.go b/test/e2e/helper/e2e-helpers.go
index 174044670..db1d7cdae 100644
--- a/test/e2e/helper/e2e-helpers.go
+++ b/test/e2e/helper/e2e-helpers.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -23,6 +23,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
+ "k8s.io/utils/ptr"
"os"
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -441,7 +442,7 @@ func WaitForOperatorPods(ctx TestContext, namespace string, retryInterval, timeo
func DeleteJob(ctx TestContext, namespace, jobName string) error {
cl := ctx.KubeClient.BatchV1().Jobs(namespace)
- if err := cl.Delete(ctx.Context, jobName, metav1.DeleteOptions{}); err != nil && !errors.IsNotFound(err) {
+ if err := cl.Delete(ctx.Context, jobName, metav1.DeleteOptions{PropagationPolicy: ptr.To(metav1.DeletePropagationBackground)}); err != nil && !errors.IsNotFound(err) {
return err
}
pods, err := ListPodsWithLabelSelector(ctx, namespace, "job-name="+jobName)
diff --git a/test/e2e/helper/proj_helpers.go b/test/e2e/helper/proj_helpers.go
index f51f42c82..4ec63020b 100644
--- a/test/e2e/helper/proj_helpers.go
+++ b/test/e2e/helper/proj_helpers.go
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2024, Oracle and/or its affiliates.
+ * Copyright (c) 2020, 2025, Oracle and/or its affiliates.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -651,7 +651,7 @@ func SkipIfCoherenceVersionLessThan(t *testing.T, version ...int) {
versionStr := os.Getenv(CoherenceVersionEnv)
t.Skipf("Skipping test as COHERENCE_VERSION %s is less than requested version %v", versionStr, version)
case err != nil:
- t.Fatalf(fmt.Sprintf("Failed to check COHERENCE_VERSION due to %s", err.Error()))
+ t.Fatalf("Failed to check COHERENCE_VERSION due to %s", err.Error())
}
}