mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-18 01:31:01 +02:00
Fix serving CRD at runtime (#3031)
* Fix serving CRD at runtime Signed-off-by: Mikkel Oscar Lyderik Larsen <mikkel.larsen@zalando.de> * Correctly string quote version enum Signed-off-by: Mikkel Oscar Lyderik Larsen <mikkel.larsen@zalando.de> --------- Signed-off-by: Mikkel Oscar Lyderik Larsen <mikkel.larsen@zalando.de>
This commit is contained in:
@@ -21,7 +21,7 @@ GITSTATUS = $(shell git status --porcelain || echo "no changes")
|
|||||||
SOURCES = cmd/main.go
|
SOURCES = cmd/main.go
|
||||||
VERSION ?= $(shell git describe --tags --always --dirty)
|
VERSION ?= $(shell git describe --tags --always --dirty)
|
||||||
CRD_SOURCES = $(shell find pkg/apis/zalando.org pkg/apis/acid.zalan.do -name '*.go' -not -name '*.deepcopy.go')
|
CRD_SOURCES = $(shell find pkg/apis/zalando.org pkg/apis/acid.zalan.do -name '*.go' -not -name '*.deepcopy.go')
|
||||||
GENERATED_CRDS = manifests/postgresteam.crd.yaml manifests/postgresql.crd.yaml
|
GENERATED_CRDS = manifests/postgresteam.crd.yaml manifests/postgresql.crd.yaml pkg/apis/acid.zalan.do/v1/postgresql.crd.yaml
|
||||||
GENERATED = pkg/apis/zalando.org/v1/zz_generated.deepcopy.go pkg/apis/acid.zalan.do/v1/zz_generated.deepcopy.go
|
GENERATED = pkg/apis/zalando.org/v1/zz_generated.deepcopy.go pkg/apis/acid.zalan.do/v1/zz_generated.deepcopy.go
|
||||||
DIRS := cmd pkg
|
DIRS := cmd pkg
|
||||||
PKG := `go list ./... | grep -v /vendor/`
|
PKG := `go list ./... | grep -v /vendor/`
|
||||||
@@ -55,7 +55,7 @@ default: local
|
|||||||
clean:
|
clean:
|
||||||
rm -rf build
|
rm -rf build
|
||||||
rm $(GENERATED)
|
rm $(GENERATED)
|
||||||
rm pkg/apis/acid.zalan.do/v1/postgresql.crd.yaml
|
rm $(GENERATED_CRDS)
|
||||||
|
|
||||||
verify:
|
verify:
|
||||||
hack/verify-codegen.sh
|
hack/verify-codegen.sh
|
||||||
|
|||||||
@@ -3523,11 +3523,11 @@ spec:
|
|||||||
type: object
|
type: object
|
||||||
version:
|
version:
|
||||||
enum:
|
enum:
|
||||||
- 13
|
- "13"
|
||||||
- 14
|
- "14"
|
||||||
- 15
|
- "15"
|
||||||
- 16
|
- "16"
|
||||||
- 17
|
- "17"
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- version
|
- version
|
||||||
|
|||||||
@@ -4,12 +4,11 @@ import (
|
|||||||
_ "embed"
|
_ "embed"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert/yaml"
|
|
||||||
acidzalando "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do"
|
acidzalando "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do"
|
||||||
"github.com/zalando/postgres-operator/pkg/util"
|
"github.com/zalando/postgres-operator/pkg/util"
|
||||||
|
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CRDResource* define names necesssary for the k8s CRD API
|
// CRDResource* define names necesssary for the k8s CRD API
|
||||||
|
|||||||
@@ -185,7 +185,7 @@ type AdditionalVolume struct {
|
|||||||
|
|
||||||
// PostgresqlParam describes PostgreSQL version and pairs of configuration parameter name - values.
|
// PostgresqlParam describes PostgreSQL version and pairs of configuration parameter name - values.
|
||||||
type PostgresqlParam struct {
|
type PostgresqlParam struct {
|
||||||
// +kubebuilder:validation:Enum=13;14;15;16;17
|
// +kubebuilder:validation:Enum="13";"14";"15";"16";"17"
|
||||||
PgVersion string `json:"version"`
|
PgVersion string `json:"version"`
|
||||||
Parameters map[string]string `json:"parameters,omitempty"`
|
Parameters map[string]string `json:"parameters,omitempty"`
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-10
@@ -2,14 +2,12 @@ package controller
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
|
||||||
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
|
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
|
||||||
@@ -65,15 +63,9 @@ func (c *Controller) createOperatorCRD(desiredCrd *apiextv1.CustomResourceDefini
|
|||||||
}
|
}
|
||||||
if crd != nil {
|
if crd != nil {
|
||||||
c.logger.Infof("customResourceDefinition %q is already registered and will only be updated", crd.Name)
|
c.logger.Infof("customResourceDefinition %q is already registered and will only be updated", crd.Name)
|
||||||
// copy annotations and labels from existing CRD since we do not define them
|
crd.Spec = desiredCrd.Spec
|
||||||
desiredCrd.Annotations = crd.Annotations
|
_, err := c.KubeClient.CustomResourceDefinitions().Update(context.TODO(), crd, metav1.UpdateOptions{})
|
||||||
desiredCrd.Labels = crd.Labels
|
|
||||||
patch, err := json.Marshal(desiredCrd)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not marshal new customResourceDefintion %q: %v", desiredCrd.Name, err)
|
|
||||||
}
|
|
||||||
if _, err := c.KubeClient.CustomResourceDefinitions().Patch(
|
|
||||||
context.TODO(), crd.Name, types.MergePatchType, patch, metav1.PatchOptions{}); err != nil {
|
|
||||||
return fmt.Errorf("could not update customResourceDefinition %q: %v", crd.Name, err)
|
return fmt.Errorf("could not update customResourceDefinition %q: %v", crd.Name, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user