Merge branch 'master' into bump-v2.0.2

This commit is contained in:
Felix Kunde 2026-08-20 09:05:55 +02:00 committed by GitHub
commit a378f3227b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
87 changed files with 662 additions and 530 deletions

View File

@ -10,9 +10,9 @@ import (
log "github.com/sirupsen/logrus"
"github.com/zalando/postgres-operator/pkg/controller"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/controller"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
)
var (

2
go.mod
View File

@ -1,4 +1,4 @@
module github.com/zalando/postgres-operator
module github.com/zalando/postgres-operator/v2
go 1.26.4

View File

@ -19,7 +19,7 @@ set -o nounset
set -o pipefail
SRC="github.com"
GOPKG="$SRC/zalando/postgres-operator"
GOPKG="$SRC/zalando/postgres-operator/v2"
CUSTOM_RESOURCE_NAME_ZAL="zalando.org"
CUSTOM_RESOURCE_NAME_ACID="acid.zalan.do"
CUSTOM_RESOURCE_VERSION="v1"

View File

@ -3,9 +3,9 @@ package v1
// Operator configuration CRD definition, please use snake_case for field names.
import (
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/spec"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -1,7 +1,7 @@
package v1
import (
acidzalando "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do"
acidzalando "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -28,7 +28,7 @@ SOFTWARE.
package v1
import (
config "github.com/zalando/postgres-operator/pkg/util/config"
config "github.com/zalando/postgres-operator/v2/pkg/util/config"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"

View File

@ -1,7 +1,7 @@
package v1
import (
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -1,7 +1,7 @@
package v1
import (
"github.com/zalando/postgres-operator/pkg/apis/zalando.org"
"github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -12,10 +12,10 @@ import (
"time"
"github.com/sirupsen/logrus"
"github.com/zalando/postgres-operator/pkg/cluster"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
)
const (

View File

@ -14,20 +14,20 @@ import (
"time"
"github.com/sirupsen/logrus"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
"github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
"github.com/zalando/postgres-operator/pkg/spec"
pgteams "github.com/zalando/postgres-operator/pkg/teams"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/pkg/util/teams"
"github.com/zalando/postgres-operator/pkg/util/users"
"github.com/zalando/postgres-operator/pkg/util/volumes"
"github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
"github.com/zalando/postgres-operator/v2/pkg/spec"
pgteams "github.com/zalando/postgres-operator/v2/pkg/teams"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/pkg/util/teams"
"github.com/zalando/postgres-operator/v2/pkg/util/users"
"github.com/zalando/postgres-operator/v2/pkg/util/volumes"
appsv1 "k8s.io/api/apps/v1"
batchv1 "k8s.io/api/batch/v1"
v1 "k8s.io/api/core/v1"

View File

@ -11,15 +11,15 @@ import (
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/pkg/util/teams"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/pkg/util/teams"
batchv1 "k8s.io/api/batch/v1"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"

View File

@ -10,8 +10,8 @@ import (
"github.com/r3labs/diff"
"github.com/sirupsen/logrus"
acidzalando "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalando "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -19,11 +19,11 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
)
var poolerRunAsUser = int64(100)

View File

@ -7,12 +7,12 @@ import (
"testing"
"github.com/stretchr/testify/assert"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"

View File

@ -11,10 +11,10 @@ import (
"github.com/lib/pq"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
"github.com/zalando/postgres-operator/pkg/util/users"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
"github.com/zalando/postgres-operator/v2/pkg/util/users"
)
const (

View File

@ -11,8 +11,8 @@ import (
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/remotecommand"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
)
// ExecCommand executes arbitrary command inside the pod

View File

@ -4,9 +4,9 @@ import (
"fmt"
"strings"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/filesystems"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/filesystems"
)
func (c *Cluster) getPostgresFilesystemInfo(podName *spec.NamespacedName) (device, fstype string, err error) {

View File

@ -24,14 +24,14 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/intstr"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
)
const (

View File

@ -9,13 +9,13 @@ import (
"github.com/stretchr/testify/assert"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"

View File

@ -8,8 +8,8 @@ import (
"strings"
"github.com/Masterminds/semver/v3"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"

View File

@ -13,11 +13,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
)
func (c *Cluster) listPods() ([]v1.Pod, error) {

View File

@ -9,12 +9,12 @@ import (
"time"
"github.com/golang/mock/gomock"
"github.com/zalando/postgres-operator/mocks"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/mocks"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -13,9 +13,9 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
)
const (

View File

@ -8,11 +8,11 @@ import (
"sort"
"strings"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
)

View File

@ -9,13 +9,13 @@ import (
"testing"
"github.com/stretchr/testify/assert"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
fakezalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
fakezalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"

View File

@ -12,11 +12,11 @@ import (
"strings"
"time"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
batchv1 "k8s.io/api/batch/v1"
v1 "k8s.io/api/core/v1"
policyv1 "k8s.io/api/policy/v1"

View File

@ -20,15 +20,15 @@ import (
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/zalando/postgres-operator/mocks"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/mocks"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
"k8s.io/client-go/kubernetes/fake"
)

View File

@ -3,7 +3,7 @@ package cluster
import (
"time"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
appsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
policyv1 "k8s.io/api/policy/v1"

View File

@ -20,14 +20,14 @@ import (
"k8s.io/apimachinery/pkg/labels"
"github.com/sirupsen/logrus"
acidzalando "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/nicediff"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
acidzalando "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/nicediff"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
)
// OAuthTokenGetter provides the method for fetching OAuth tokens

View File

@ -13,13 +13,13 @@ import (
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert"
"github.com/zalando/postgres-operator/mocks"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/patroni"
"github.com/zalando/postgres-operator/v2/mocks"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/fake"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/patroni"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"

View File

@ -11,11 +11,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/filesystems"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/volumes"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/filesystems"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/volumes"
)
func (c *Cluster) syncVolumes() error {

View File

@ -14,12 +14,12 @@ import (
"github.com/aws/aws-sdk-go-v2/aws"
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert"
"github.com/zalando/postgres-operator/mocks"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/volumes"
"github.com/zalando/postgres-operator/v2/mocks"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/volumes"
"k8s.io/client-go/kubernetes/fake"
)

View File

@ -11,17 +11,17 @@ import (
"time"
"github.com/sirupsen/logrus"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/apiserver"
"github.com/zalando/postgres-operator/pkg/cluster"
acidv1informer "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/teams"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/ringlog"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/apiserver"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
acidv1informer "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/teams"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/ringlog"
v1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

View File

@ -7,10 +7,10 @@ import (
"github.com/sirupsen/logrus"
"github.com/zalando/postgres-operator/pkg/cluster"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"k8s.io/apimachinery/pkg/types"
)

View File

@ -5,13 +5,13 @@ import (
"fmt"
"time"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"github.com/zalando/postgres-operator/pkg/cluster"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
"github.com/zalando/postgres-operator/v2/pkg/util"
)
func (c *Controller) nodeAdd(obj interface{}) {

View File

@ -3,7 +3,7 @@ package controller
import (
"testing"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/spec"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -4,11 +4,11 @@ import (
"context"
"fmt"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -3,9 +3,9 @@ package controller
import (
v1 "k8s.io/api/core/v1"
"github.com/zalando/postgres-operator/pkg/cluster"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"k8s.io/apimachinery/pkg/types"
)

View File

@ -17,12 +17,12 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/cache"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/cluster"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/pkg/util/ringlog"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/util/ringlog"
)
func (c *Controller) clusterResync(stopCh <-chan struct{}, wg *sync.WaitGroup) {

View File

@ -6,8 +6,8 @@ import (
"testing"
"time"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/spec"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -5,7 +5,7 @@ import (
"k8s.io/apimachinery/pkg/types"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
)
// EventType contains type of the events for the TPRs and Pods received from Kubernetes

View File

@ -10,12 +10,12 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/cluster"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/cluster"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
"gopkg.in/yaml.v3"
)

View File

@ -8,9 +8,9 @@ import (
b64 "encoding/base64"
"github.com/stretchr/testify/assert"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/config"
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/config"
"github.com/zalando/postgres-operator/v2/pkg/util/k8sutil"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -28,8 +28,8 @@ import (
fmt "fmt"
http "net/http"
acidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/zalando.org/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/zalando.org/v1"
discovery "k8s.io/client-go/discovery"
rest "k8s.io/client-go/rest"
flowcontrol "k8s.io/client-go/util/flowcontrol"

View File

@ -25,11 +25,11 @@ SOFTWARE.
package fake
import (
clientset "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
acidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/fake"
zalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/zalando.org/v1"
fakezalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/zalando.org/v1/fake"
clientset "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
fakeacidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1/fake"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/zalando.org/v1"
fakezalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/zalando.org/v1/fake"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/watch"

View File

@ -25,8 +25,8 @@ SOFTWARE.
package fake
import (
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -25,8 +25,8 @@ SOFTWARE.
package scheme
import (
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -27,8 +27,8 @@ package v1
import (
http "net/http"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
rest "k8s.io/client-go/rest"
)

View File

@ -25,7 +25,7 @@ SOFTWARE.
package fake
import (
v1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
rest "k8s.io/client-go/rest"
testing "k8s.io/client-go/testing"
)

View File

@ -25,8 +25,8 @@ SOFTWARE.
package fake
import (
v1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
gentype "k8s.io/client-go/gentype"
)

View File

@ -25,8 +25,8 @@ SOFTWARE.
package fake
import (
v1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
gentype "k8s.io/client-go/gentype"
)

View File

@ -25,8 +25,8 @@ SOFTWARE.
package fake
import (
v1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
gentype "k8s.io/client-go/gentype"
)

View File

@ -27,8 +27,8 @@ package v1
import (
context "context"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"

View File

@ -27,8 +27,8 @@ package v1
import (
context "context"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"

View File

@ -27,8 +27,8 @@ package v1
import (
context "context"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
scheme "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"

View File

@ -27,8 +27,8 @@ package v1
import (
context "context"
zalandoorgv1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
scheme "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
zalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
scheme "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
types "k8s.io/apimachinery/pkg/types"
watch "k8s.io/apimachinery/pkg/watch"

View File

@ -25,8 +25,8 @@ SOFTWARE.
package fake
import (
v1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
zalandoorgv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/zalando.org/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
zalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/zalando.org/v1"
gentype "k8s.io/client-go/gentype"
)

View File

@ -25,7 +25,7 @@ SOFTWARE.
package fake
import (
v1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/zalando.org/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/zalando.org/v1"
rest "k8s.io/client-go/rest"
testing "k8s.io/client-go/testing"
)

View File

@ -27,8 +27,8 @@ package v1
import (
http "net/http"
zalandoorgv1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
scheme "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/scheme"
zalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
scheme "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/scheme"
rest "k8s.io/client-go/rest"
)

View File

@ -25,8 +25,8 @@ SOFTWARE.
package acid
import (
v1 "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/acid.zalan.do/v1"
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
v1 "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/acid.zalan.do/v1"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
)
// Interface provides access to each of this group's versions.

View File

@ -25,7 +25,7 @@ SOFTWARE.
package v1
import (
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
)
// Interface provides access to all the informers in this group version.

View File

@ -28,10 +28,10 @@ import (
context "context"
time "time"
apisacidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
versioned "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/generated/listers/acid.zalan.do/v1"
apisacidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
versioned "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/listers/acid.zalan.do/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -28,10 +28,10 @@ import (
context "context"
time "time"
apisacidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
versioned "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/generated/listers/acid.zalan.do/v1"
apisacidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
versioned "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/listers/acid.zalan.do/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -28,10 +28,10 @@ import (
context "context"
time "time"
apisacidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
versioned "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
acidzalandov1 "github.com/zalando/postgres-operator/pkg/generated/listers/acid.zalan.do/v1"
apisacidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
versioned "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/listers/acid.zalan.do/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -30,10 +30,10 @@ import (
sync "sync"
time "time"
versioned "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
acidzalando "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/acid.zalan.do"
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
zalandoorg "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/zalando.org"
versioned "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
acidzalando "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/acid.zalan.do"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
zalandoorg "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/zalando.org"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -27,8 +27,8 @@ package externalversions
import (
fmt "fmt"
v1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandoorgv1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
v1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
schema "k8s.io/apimachinery/pkg/runtime/schema"
cache "k8s.io/client-go/tools/cache"
)

View File

@ -27,7 +27,7 @@ package internalinterfaces
import (
time "time"
versioned "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
versioned "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
cache "k8s.io/client-go/tools/cache"

View File

@ -25,8 +25,8 @@ SOFTWARE.
package zalando
import (
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
v1 "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/zalando.org/v1"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
v1 "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/zalando.org/v1"
)
// Interface provides access to each of this group's versions.

View File

@ -28,10 +28,10 @@ import (
context "context"
time "time"
apiszalandoorgv1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
versioned "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
zalandoorgv1 "github.com/zalando/postgres-operator/pkg/generated/listers/zalando.org/v1"
apiszalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
versioned "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
zalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/generated/listers/zalando.org/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"

View File

@ -25,7 +25,7 @@ SOFTWARE.
package v1
import (
internalinterfaces "github.com/zalando/postgres-operator/pkg/generated/informers/externalversions/internalinterfaces"
internalinterfaces "github.com/zalando/postgres-operator/v2/pkg/generated/informers/externalversions/internalinterfaces"
)
// Interface provides access to all the informers in this group version.

View File

@ -25,7 +25,7 @@ SOFTWARE.
package v1
import (
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
labels "k8s.io/apimachinery/pkg/labels"
listers "k8s.io/client-go/listers"
cache "k8s.io/client-go/tools/cache"

View File

@ -25,7 +25,7 @@ SOFTWARE.
package v1
import (
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
labels "k8s.io/apimachinery/pkg/labels"
listers "k8s.io/client-go/listers"
cache "k8s.io/client-go/tools/cache"

View File

@ -25,7 +25,7 @@ SOFTWARE.
package v1
import (
acidzalandov1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidzalandov1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
labels "k8s.io/apimachinery/pkg/labels"
listers "k8s.io/client-go/listers"
cache "k8s.io/client-go/tools/cache"

View File

@ -25,7 +25,7 @@ SOFTWARE.
package v1
import (
zalandoorgv1 "github.com/zalando/postgres-operator/pkg/apis/zalando.org/v1"
zalandoorgv1 "github.com/zalando/postgres-operator/v2/pkg/apis/zalando.org/v1"
labels "k8s.io/apimachinery/pkg/labels"
listers "k8s.io/client-go/listers"
cache "k8s.io/client-go/tools/cache"

View File

@ -1,8 +1,8 @@
package teams
import (
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/util"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/util"
)
// PostgresTeamMap is the operator's internal representation of all PostgresTeam CRDs

View File

@ -3,8 +3,8 @@ package teams
import (
"testing"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/pkg/util"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
"github.com/zalando/postgres-operator/v2/pkg/util"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -6,8 +6,8 @@ import (
"fmt"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

View File

@ -17,7 +17,7 @@ const (
resize2fs = "resize2fs"
)
//Ext234Resize implements the FilesystemResizer interface for the ext4/3/2fs.
// Ext234Resize implements the FilesystemResizer interface for the ext4/3/2fs.
type Ext234Resize struct {
}

View File

@ -7,11 +7,11 @@ import (
b64 "encoding/base64"
"encoding/json"
apiacidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
zalandoclient "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned"
acidv1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/pkg/generated/clientset/versioned/typed/zalando.org/v1"
"github.com/zalando/postgres-operator/pkg/spec"
apiacidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
zalandoclient "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/acid.zalan.do/v1"
zalandov1 "github.com/zalando/postgres-operator/v2/pkg/generated/clientset/versioned/typed/zalando.org/v1"
"github.com/zalando/postgres-operator/v2/pkg/spec"
apiappsv1 "k8s.io/api/apps/v1"
v1 "k8s.io/api/core/v1"
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"

View File

@ -11,11 +11,11 @@ import (
"strconv"
"time"
"github.com/zalando/postgres-operator/pkg/util/constants"
httpclient "github.com/zalando/postgres-operator/pkg/util/httpclient"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
httpclient "github.com/zalando/postgres-operator/v2/pkg/util/httpclient"
"github.com/sirupsen/logrus"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
v1 "k8s.io/api/core/v1"
)

View File

@ -12,9 +12,9 @@ import (
"github.com/golang/mock/gomock"
"github.com/sirupsen/logrus"
"github.com/zalando/postgres-operator/mocks"
"github.com/zalando/postgres-operator/v2/mocks"
acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1"
acidv1 "github.com/zalando/postgres-operator/v2/pkg/apis/acid.zalan.do/v1"
v1 "k8s.io/api/core/v1"
)

View File

@ -1,243 +1,243 @@
package teams
import (
"fmt"
"net/http"
"net/http/httptest"
"reflect"
"testing"
"github.com/sirupsen/logrus"
)
var (
logger = logrus.New().WithField("pkg", "teamsapi")
token = "ec45b1cfbe7100c6315d183a3eb6cec0M2U1LWJkMzEtZDgzNzNmZGQyNGM3IiwiYXV0aF90aW1lIjoxNDkzNzMwNzQ1LCJpc3MiOiJodHRwcz"
input = `{
"dn": "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
"id": "acid",
"id_name": "acid",
"team_id": "111222",
"type": "official",
"name": "Acid team name",
"mail": [
"email1@example.com",
"email2@example.com"
],
"alias": [
"acid"
],
"member": [
"member1",
"member2",
"member3"
],
"infrastructure-accounts": [
{
"id": "1234512345",
"name": "acid",
"provider": "aws",
"type": "aws",
"description": "",
"owner": "acid",
"owner_dn": "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
"disabled": false
},
{
"id": "5432154321",
"name": "db",
"provider": "aws",
"type": "aws",
"description": "",
"owner": "acid",
"owner_dn": "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
"disabled": false
}
],
"cost_center": "00099999",
"delivery_lead": "member4",
"parent_team_id": "111221"
}`
)
var teamsAPItc = []struct {
in string
inCode int
inTeam string
out *Team
err error
}{
{
input,
200,
"acid",
&Team{
Dn: "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
ID: "acid",
TeamName: "acid",
TeamID: "111222",
Type: "official",
FullName: "Acid team name",
Aliases: []string{"acid"},
Mails: []string{"email1@example.com", "email2@example.com"},
Members: []string{"member1", "member2", "member3"},
CostCenter: "00099999",
DeliveryLead: "member4",
ParentTeamID: "111221",
InfrastructureAccounts: []infrastructureAccount{
{
ID: "1234512345",
Name: "acid",
Provider: "aws",
Type: "aws",
Description: "",
Owner: "acid",
OwnerDn: "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
Disabled: false},
{
ID: "5432154321",
Name: "db",
Provider: "aws",
Type: "aws",
Description: "",
Owner: "acid",
OwnerDn: "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
Disabled: false},
},
},
nil}, {
`{"error": "Access Token not valid"}`,
401,
"acid",
nil,
fmt.Errorf(`team API query failed with status code 401 and message: '"Access Token not valid"'`),
},
{
`{"status": "I'm a teapot'"}`,
418,
"acid",
nil,
fmt.Errorf(`team API query failed with status code 418`),
},
{
`{"status": "I'm a teapot`,
418,
"acid",
nil,
fmt.Errorf(`team API query failed with status code 418 and malformed response: unexpected EOF`),
},
{
`{"status": "I'm a teapot`,
200,
"acid",
nil,
fmt.Errorf(`could not parse team API response: unexpected EOF`),
},
{
input,
404,
"banana",
nil,
fmt.Errorf(`team API query failed with status code 404`),
},
}
var requestsURLtc = []struct {
url string
err error
}{
{
"coffee://localhost/",
fmt.Errorf(`Get "coffee://localhost/teams/acid": unsupported protocol scheme "coffee"`),
},
{
"http://192.168.0.%31/",
fmt.Errorf(`parse "http://192.168.0.%%31/teams/acid": invalid URL escape "%%31"`),
},
}
func TestInfo(t *testing.T) {
for _, tc := range teamsAPItc {
func() {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Header.Get("Authorization") != "Bearer "+token {
t.Errorf("authorization token is wrong or not provided")
}
w.WriteHeader(tc.inCode)
if _, err := fmt.Fprint(w, tc.in); err != nil {
t.Errorf("error writing teams api response %v", err)
}
}))
defer ts.Close()
api := NewTeamsAPI(ts.URL, logger)
actual, statusCode, err := api.TeamInfo(tc.inTeam, token)
if err != nil && err.Error() != tc.err.Error() {
t.Errorf("expected error: %v, got: %v", tc.err, err)
return
}
if !reflect.DeepEqual(actual, tc.out) {
t.Errorf("expected %#v, got: %#v", tc.out, actual)
}
if statusCode != tc.inCode {
t.Errorf("expected %d, got: %d", tc.inCode, statusCode)
}
}()
}
}
type mockHTTPClient struct {
}
type mockBody struct {
}
func (b *mockBody) Read(p []byte) (n int, err error) {
return 2, nil
}
func (b *mockBody) Close() error {
return fmt.Errorf("close error")
}
func (c *mockHTTPClient) Do(req *http.Request) (*http.Response, error) {
resp := http.Response{
Status: "200 OK",
StatusCode: 200,
ContentLength: 2,
Close: false,
Request: req,
}
resp.Body = &mockBody{}
return &resp, nil
}
func TestHttpClientClose(t *testing.T) {
ts := httptest.NewServer(nil)
api := NewTeamsAPI(ts.URL, logger)
api.httpClient = &mockHTTPClient{}
_, _, err := api.TeamInfo("acid", token)
expError := fmt.Errorf("error when closing response: close error")
if err.Error() != expError.Error() {
t.Errorf("expected error: %v, got: %v", expError, err)
}
}
func TestRequest(t *testing.T) {
for _, tc := range requestsURLtc {
api := NewTeamsAPI(tc.url, logger)
resp, _, err := api.TeamInfo("acid", token)
if resp != nil {
t.Errorf("response expected to be nil")
continue
}
if err.Error() != tc.err.Error() {
t.Errorf("expected error: %v, got: %v", tc.err, err)
}
}
}
package teams
import (
"fmt"
"net/http"
"net/http/httptest"
"reflect"
"testing"
"github.com/sirupsen/logrus"
)
var (
logger = logrus.New().WithField("pkg", "teamsapi")
token = "ec45b1cfbe7100c6315d183a3eb6cec0M2U1LWJkMzEtZDgzNzNmZGQyNGM3IiwiYXV0aF90aW1lIjoxNDkzNzMwNzQ1LCJpc3MiOiJodHRwcz"
input = `{
"dn": "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
"id": "acid",
"id_name": "acid",
"team_id": "111222",
"type": "official",
"name": "Acid team name",
"mail": [
"email1@example.com",
"email2@example.com"
],
"alias": [
"acid"
],
"member": [
"member1",
"member2",
"member3"
],
"infrastructure-accounts": [
{
"id": "1234512345",
"name": "acid",
"provider": "aws",
"type": "aws",
"description": "",
"owner": "acid",
"owner_dn": "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
"disabled": false
},
{
"id": "5432154321",
"name": "db",
"provider": "aws",
"type": "aws",
"description": "",
"owner": "acid",
"owner_dn": "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
"disabled": false
}
],
"cost_center": "00099999",
"delivery_lead": "member4",
"parent_team_id": "111221"
}`
)
var teamsAPItc = []struct {
in string
inCode int
inTeam string
out *Team
err error
}{
{
input,
200,
"acid",
&Team{
Dn: "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
ID: "acid",
TeamName: "acid",
TeamID: "111222",
Type: "official",
FullName: "Acid team name",
Aliases: []string{"acid"},
Mails: []string{"email1@example.com", "email2@example.com"},
Members: []string{"member1", "member2", "member3"},
CostCenter: "00099999",
DeliveryLead: "member4",
ParentTeamID: "111221",
InfrastructureAccounts: []infrastructureAccount{
{
ID: "1234512345",
Name: "acid",
Provider: "aws",
Type: "aws",
Description: "",
Owner: "acid",
OwnerDn: "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
Disabled: false},
{
ID: "5432154321",
Name: "db",
Provider: "aws",
Type: "aws",
Description: "",
Owner: "acid",
OwnerDn: "cn=100100,ou=official,ou=foobar,dc=zalando,dc=net",
Disabled: false},
},
},
nil}, {
`{"error": "Access Token not valid"}`,
401,
"acid",
nil,
fmt.Errorf(`team API query failed with status code 401 and message: '"Access Token not valid"'`),
},
{
`{"status": "I'm a teapot'"}`,
418,
"acid",
nil,
fmt.Errorf(`team API query failed with status code 418`),
},
{
`{"status": "I'm a teapot`,
418,
"acid",
nil,
fmt.Errorf(`team API query failed with status code 418 and malformed response: unexpected EOF`),
},
{
`{"status": "I'm a teapot`,
200,
"acid",
nil,
fmt.Errorf(`could not parse team API response: unexpected EOF`),
},
{
input,
404,
"banana",
nil,
fmt.Errorf(`team API query failed with status code 404`),
},
}
var requestsURLtc = []struct {
url string
err error
}{
{
"coffee://localhost/",
fmt.Errorf(`Get "coffee://localhost/teams/acid": unsupported protocol scheme "coffee"`),
},
{
"http://192.168.0.%31/",
fmt.Errorf(`parse "http://192.168.0.%%31/teams/acid": invalid URL escape "%%31"`),
},
}
func TestInfo(t *testing.T) {
for _, tc := range teamsAPItc {
func() {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Header.Get("Authorization") != "Bearer "+token {
t.Errorf("authorization token is wrong or not provided")
}
w.WriteHeader(tc.inCode)
if _, err := fmt.Fprint(w, tc.in); err != nil {
t.Errorf("error writing teams api response %v", err)
}
}))
defer ts.Close()
api := NewTeamsAPI(ts.URL, logger)
actual, statusCode, err := api.TeamInfo(tc.inTeam, token)
if err != nil && err.Error() != tc.err.Error() {
t.Errorf("expected error: %v, got: %v", tc.err, err)
return
}
if !reflect.DeepEqual(actual, tc.out) {
t.Errorf("expected %#v, got: %#v", tc.out, actual)
}
if statusCode != tc.inCode {
t.Errorf("expected %d, got: %d", tc.inCode, statusCode)
}
}()
}
}
type mockHTTPClient struct {
}
type mockBody struct {
}
func (b *mockBody) Read(p []byte) (n int, err error) {
return 2, nil
}
func (b *mockBody) Close() error {
return fmt.Errorf("close error")
}
func (c *mockHTTPClient) Do(req *http.Request) (*http.Response, error) {
resp := http.Response{
Status: "200 OK",
StatusCode: 200,
ContentLength: 2,
Close: false,
Request: req,
}
resp.Body = &mockBody{}
return &resp, nil
}
func TestHttpClientClose(t *testing.T) {
ts := httptest.NewServer(nil)
api := NewTeamsAPI(ts.URL, logger)
api.httpClient = &mockHTTPClient{}
_, _, err := api.TeamInfo("acid", token)
expError := fmt.Errorf("error when closing response: close error")
if err.Error() != expError.Error() {
t.Errorf("expected error: %v, got: %v", expError, err)
}
}
func TestRequest(t *testing.T) {
for _, tc := range requestsURLtc {
api := NewTeamsAPI(tc.url, logger)
resp, _, err := api.TeamInfo("acid", token)
if resp != nil {
t.Errorf("response expected to be nil")
continue
}
if err.Error() != tc.err.Error() {
t.Errorf("expected error: %v, got: %v", tc.err, err)
}
}
}

View File

@ -7,9 +7,9 @@ import (
"reflect"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/pkg/util"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/util"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
)
const (
@ -60,11 +60,13 @@ func (strategy DefaultUserSyncStrategy) ProduceSyncRequests(dbUsers spec.PgUserM
}
} else {
r := spec.PgSyncUserRequest{}
newMD5Password := util.NewEncryptor(strategy.PasswordEncryption).PGUserPassword(newUser)
// do not compare for roles coming from docker image
if dbUser.Password != newMD5Password {
r.User.Password = newMD5Password
// A plain string comparison with a freshly generated hash would
// re-issue ALTER ROLE on every sync for SCRAM-SHA-256, because
// each generated verifier embeds a new random salt. Verify the
// stored hash against the desired password instead.
if !util.PGUserPasswordUpToDate(newUser, dbUser.Password, strategy.PasswordEncryption) {
r.User.Password = util.NewEncryptor(strategy.PasswordEncryption).PGUserPassword(newUser)
r.Kind = spec.PGsyncUserAlter
}
if addNewRoles, equal := util.SubstractStringSlices(newUser.MemberOf, dbUser.MemberOf); !equal {

View File

@ -13,6 +13,7 @@ import (
"reflect"
"regexp"
"sort"
"strconv"
"strings"
"time"
@ -21,7 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/spec"
"golang.org/x/crypto/pbkdf2"
)
@ -94,14 +95,21 @@ func NewEncryptor(encryption string) *Encryptor {
}
func (e *Encryptor) PGUserPassword(user spec.PgUser) string {
if (len(user.Password) == md5.Size*2+len(md5prefix) && user.Password[:3] == md5prefix) ||
(len(user.Password) > len(scramsha256prefix) && user.Password[:len(scramsha256prefix)] == scramsha256prefix) || user.Password == "" {
if isMD5Hash(user.Password) || isScramHash(user.Password) || user.Password == "" {
// Avoid processing already encrypted or empty passwords
return user.Password
}
return e.encrypt(user)
}
func isMD5Hash(password string) bool {
return len(password) == md5.Size*2+len(md5prefix) && password[:3] == md5prefix
}
func isScramHash(password string) bool {
return len(password) > len(scramsha256prefix) && password[:len(scramsha256prefix)] == scramsha256prefix
}
func (e *Encryptor) PGUserPasswordMD5(user spec.PgUser) string {
s := md5.Sum([]byte(user.Password + user.Name)) // #nosec, using md5 since PostgreSQL uses it for hashing passwords.
return md5prefix + hex.EncodeToString(s[:])
@ -127,6 +135,93 @@ func (e *Encryptor) PGUserPasswordScramSHA256(user spec.PgUser) string {
return pass
}
// PGUserPasswordUpToDate reports whether the password hash stored in the
// database already corresponds to the user's desired password and the
// configured password encryption, i.e. whether ALTER ROLE ... PASSWORD can
// be skipped during role sync.
//
// A SCRAM-SHA-256 verifier embeds a random salt, so regenerating one from
// the plaintext and comparing strings never matches. Instead, the salt and
// iteration count are taken from the stored verifier and the derived keys
// are compared. A stored hash whose type differs from the configured
// encryption is reported as outdated so that changing password_encryption
// still re-hashes the roles.
func PGUserPasswordUpToDate(user spec.PgUser, storedPassword, encryption string) bool {
// Empty and pre-hashed desired passwords can only be compared verbatim,
// mirroring the early return in PGUserPassword.
if user.Password == "" || isMD5Hash(user.Password) || isScramHash(user.Password) {
return user.Password == storedPassword
}
switch {
case isMD5Hash(storedPassword):
if encryption != "md5" {
return false
}
return NewEncryptor(encryption).PGUserPassword(user) == storedPassword
case isScramHash(storedPassword):
if encryption == "md5" {
return false
}
return scramVerifierMatches(user.Password, storedPassword)
}
return false
}
// scramVerifierMatches verifies a plaintext password against a stored
// SCRAM-SHA-256 verifier of the form
// SCRAM-SHA-256$<iterations>:<salt>$<storedKey>:<serverKey>
// by re-deriving the keys with the stored salt and iteration count.
func scramVerifierMatches(password, verifier string) bool {
rest := strings.TrimPrefix(verifier, scramsha256prefix+"$")
if rest == verifier {
return false
}
saltedParams, keys, found := strings.Cut(rest, "$")
if !found {
return false
}
iterationsPart, saltPart, found := strings.Cut(saltedParams, ":")
if !found {
return false
}
storedKeyPart, serverKeyPart, found := strings.Cut(keys, ":")
if !found {
return false
}
iterationCount, err := strconv.Atoi(iterationsPart)
if err != nil || iterationCount < 1 {
return false
}
salt, err := base64.StdEncoding.DecodeString(saltPart)
if err != nil {
return false
}
storedKey, err := base64.StdEncoding.DecodeString(storedKeyPart)
if err != nil {
return false
}
serverKey, err := base64.StdEncoding.DecodeString(serverKeyPart)
if err != nil {
return false
}
key := pbkdf2.Key([]byte(password), salt, iterationCount, 32, sha256.New)
serverMAC := hmac.New(sha256.New, key)
serverMAC.Write([]byte("Server Key"))
derivedServerKey := serverMAC.Sum(nil)
clientMAC := hmac.New(sha256.New, key)
clientMAC.Write([]byte("Client Key"))
derivedStoredKey := sha256.Sum256(clientMAC.Sum(nil))
return hmac.Equal(derivedServerKey, serverKey) && hmac.Equal(derivedStoredKey[:], storedKey)
}
// Diff returns diffs between 2 objects
func Diff(a, b interface{}) []string {
return pretty.Diff(a, b)

View File

@ -8,7 +8,7 @@ import (
"regexp"
"github.com/zalando/postgres-operator/pkg/spec"
"github.com/zalando/postgres-operator/v2/pkg/spec"
)
var pgUsers = []struct {
@ -162,6 +162,41 @@ func TestPGUserPassword(t *testing.T) {
}
}
func TestPGUserPasswordUpToDate(t *testing.T) {
user := spec.PgUser{Name: "someuser", Password: "password"}
md5Hash := NewEncryptor("md5").PGUserPassword(user)
// real generation path: random salt in the verifier
scramHash := NewEncryptor("scram-sha-256").PGUserPassword(user)
tests := []struct {
name string
user spec.PgUser
stored string
encryption string
want bool
}{
{"scram verifier matches its plaintext", user, scramHash, "scram-sha-256", true},
{"a differently salted verifier of the same password matches", user, NewEncryptor("scram-sha-256").PGUserPassword(user), "scram-sha-256", true},
{"scram verifier of another password does not match", spec.PgUser{Name: "someuser", Password: "different"}, scramHash, "scram-sha-256", false},
{"md5 hash matches its plaintext", user, md5Hash, "md5", true},
{"md5 hash of another password does not match", spec.PgUser{Name: "someuser", Password: "different"}, md5Hash, "md5", false},
{"stored md5 is outdated when scram is configured", user, md5Hash, "scram-sha-256", false},
{"stored scram is outdated when md5 is configured", user, scramHash, "md5", false},
{"pre-hashed desired password compares verbatim", spec.PgUser{Name: "someuser", Password: md5Hash}, md5Hash, "md5", true},
{"pre-hashed desired password differs from stored", spec.PgUser{Name: "someuser", Password: md5Hash}, scramHash, "md5", false},
{"empty desired password matches empty stored", spec.PgUser{Name: "someuser"}, "", "scram-sha-256", true},
{"empty desired password differs from stored hash", spec.PgUser{Name: "someuser"}, scramHash, "scram-sha-256", false},
{"malformed stored hash is outdated", user, "not-a-hash", "scram-sha-256", false},
{"truncated scram verifier is outdated", user, "SCRAM-SHA-256$4096:c2FsdA==", "scram-sha-256", false},
{"scram verifier with bad base64 is outdated", user, "SCRAM-SHA-256$4096:!!$aaaa:bbbb", "scram-sha-256", false},
}
for _, tt := range tests {
if got := PGUserPasswordUpToDate(tt.user, tt.stored, tt.encryption); got != tt.want {
t.Errorf("%s: PGUserPasswordUpToDate expected %v, got %v", tt.name, tt.want, got)
}
}
}
func TestPrettyDiff(t *testing.T) {
for _, tt := range prettyDiffTest {
if actual := PrettyDiff(tt.inA, tt.inB); actual != tt.out {

View File

@ -10,8 +10,8 @@ import (
"github.com/aws/aws-sdk-go-v2/service/ec2/types"
v1 "k8s.io/api/core/v1"
"github.com/zalando/postgres-operator/pkg/util/constants"
"github.com/zalando/postgres-operator/pkg/util/retryutil"
"github.com/zalando/postgres-operator/v2/pkg/util/constants"
"github.com/zalando/postgres-operator/v2/pkg/util/retryutil"
)
// EBSVolumeResizer implements volume resizing interface for AWS EBS volumes.

View File

@ -2,9 +2,9 @@ package volumes
import (
"fmt"
"testing"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"testing"
)
func TestGetProviderVolumeID(t *testing.T) {
@ -88,7 +88,7 @@ func TestVolumeBelongsToProvider(t *testing.T) {
name: "AWS EBS volume handle",
pv: &v1.PersistentVolume{
ObjectMeta: metav1.ObjectMeta{
Annotations: map[string]string {
Annotations: map[string]string{
"pv.kubernetes.io/provisioned-by": "kubernetes.io/aws-ebs",
},
},

View File

@ -38,7 +38,7 @@
"brfs": "^2.0.2",
"dedent-js": "1.0.1",
"eslint": "^8.32.0",
"js-yaml": "4.3.0",
"js-yaml": "4.3.1",
"pug": "^3.0.2",
"rimraf": "^4.1.2",
"riot": "^3.13.2",