Skip to content

Commit

Permalink
Bump to latest mariadb-operator/api
Browse files Browse the repository at this point in the history
Adapt to the new version by:

* adding RBAC rules for MariaDBAccount manipulation
* adding Own(MariaDBAccount) to detect status changes
* separating PlacementAPI CR name from the schema and
  MariaDBDatabase/Account name
* adapting test to simulate MariaDBAccount success
* adapting to new DB hostnames due to the mariadb TLS feature
  • Loading branch information
gibizer authored and openshift-merge-bot[bot] committed Feb 8, 2024
1 parent 4285571 commit 482655c
Show file tree
Hide file tree
Showing 8 changed files with 59 additions and 17 deletions.
24 changes: 24 additions & 0 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,24 @@ rules:
- patch
- update
- watch
- apiGroups:
- mariadb.openstack.org
resources:
- mariadbaccounts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- mariadb.openstack.org
resources:
- mariadbaccounts/finalizers
verbs:
- update
- apiGroups:
- mariadb.openstack.org
resources:
Expand All @@ -146,6 +164,12 @@ rules:
- patch
- update
- watch
- apiGroups:
- mariadb.openstack.org
resources:
- mariadbdatabases/finalizers
verbs:
- update
- apiGroups:
- placement.openstack.org
resources:
Expand Down
10 changes: 8 additions & 2 deletions controllers/placementapi_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,9 @@ type PlacementAPIReconciler struct {
// +kubebuilder:rbac:groups=batch,resources=jobs,verbs=get;list;watch;create;update;patch;delete;
// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete;
// +kubebuilder:rbac:groups=mariadb.openstack.org,resources=mariadbdatabases,verbs=get;list;watch;create;update;patch;delete;
// +kubebuilder:rbac:groups=mariadb.openstack.org,resources=mariadbdatabases/finalizers,verbs=update
// +kubebuilder:rbac:groups=mariadb.openstack.org,resources=mariadbaccounts,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=mariadb.openstack.org,resources=mariadbaccounts/finalizers,verbs=update
// +kubebuilder:rbac:groups=keystone.openstack.org,resources=keystoneapis,verbs=get;list;watch;
// +kubebuilder:rbac:groups=keystone.openstack.org,resources=keystoneservices,verbs=get;list;watch;create;update;patch;delete;
// +kubebuilder:rbac:groups=keystone.openstack.org,resources=keystoneendpoints,verbs=get;list;watch;create;update;patch;delete;
Expand Down Expand Up @@ -863,6 +866,7 @@ func (r *PlacementAPIReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&placementv1.PlacementAPI{}).
Owns(&mariadbv1.MariaDBDatabase{}).
Owns(&mariadbv1.MariaDBAccount{}).
Owns(&keystonev1.KeystoneService{}).
Owns(&keystonev1.KeystoneEndpoint{}).
Owns(&batchv1.Job{}).
Expand Down Expand Up @@ -919,7 +923,7 @@ func (r *PlacementAPIReconciler) reconcileDelete(ctx context.Context, instance *
Log.Info("Reconciling Service delete")

// remove db finalizer before the placement one
db, err := mariadbv1.GetDatabaseByName(ctx, helper, instance.Name)
db, err := mariadbv1.GetDatabaseByName(ctx, helper, placement.DatabaseName)
if err != nil && !k8s_errors.IsNotFound(err) {
return ctrl.Result{}, err
}
Expand Down Expand Up @@ -975,13 +979,15 @@ func (r *PlacementAPIReconciler) ensureDB(
instance *placementv1.PlacementAPI,
) (ctrl.Result, error) {
// (ksambor) should we use NewDatabaseWithNamespace instead?
db := mariadbv1.NewDatabase(
db := mariadbv1.NewDatabaseWithNamespace(
placement.DatabaseName,
instance.Spec.DatabaseUser,
instance.Spec.Secret,
map[string]string{
"dbName": instance.Spec.DatabaseInstance,
},
placement.DatabaseName,
instance.Namespace,
)
// create or patch the DB
ctrlResult, err := db.CreateOrPatchDBByName(
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ require (
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240117115727-432678553b37
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240122121228-01dfaafeef46
github.com/openstack-k8s-operators/lib-common/modules/test v0.3.1-0.20240122121228-01dfaafeef46
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240124160436-36095347284f
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240208072109-4447f245e487
github.com/openstack-k8s-operators/placement-operator/api v0.0.0-20230602092913-53f380989946
go.uber.org/zap v1.26.0
k8s.io/api v0.26.13
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -242,8 +242,8 @@ github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.2024012
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.20240122121228-01dfaafeef46/go.mod h1:GammFyM5i2OY0lBEAcyEi9Gk46jXFIlD+z+JqBikfoY=
github.com/openstack-k8s-operators/lib-common/modules/test v0.3.1-0.20240122121228-01dfaafeef46 h1:7L/STiEV9rcC0uhnPU6FRVox8J3L2d24/z8yK7rQ5Dc=
github.com/openstack-k8s-operators/lib-common/modules/test v0.3.1-0.20240122121228-01dfaafeef46/go.mod h1:ni4mvKeubWsTjKmcToJ+hIo7pJipM9hwiUv8qhm1R6Y=
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240124160436-36095347284f h1:01HrDX32rjFdvbSOMfz0fBCfxK6Kqthv0BgvimWL7Vc=
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240124160436-36095347284f/go.mod h1:gAIo5SMvTTgUomxGC51T3PHIyremhe8xUvz2xpbuCsI=
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240208072109-4447f245e487 h1:CyrE+x+AuXjURsiqj+fxOSEbn73hjOvh9g6ZXD4eU9k=
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240208072109-4447f245e487/go.mod h1:D4sr4UipU4qjyrcO2mjW8YlSm48AdkY69dloASUbNYE=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
Expand Down
9 changes: 4 additions & 5 deletions tests/functional/base_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

condition "github.com/openstack-k8s-operators/lib-common/modules/common/condition"
placementv1 "github.com/openstack-k8s-operators/placement-operator/api/v1beta1"
"github.com/openstack-k8s-operators/placement-operator/pkg/placement"
)

type Names struct {
Expand Down Expand Up @@ -53,14 +54,12 @@ func CreateNames(placementAPIName types.NamespacedName) Names {
ConfigMapName: types.NamespacedName{
Namespace: placementAPIName.Namespace,
Name: placementAPIName.Name + "-config-data"},
// FIXME(gibi): the db sync job name should not be hardcoded
// but based on the name of the PlacementAPI CR
DBSyncJobName: types.NamespacedName{
Namespace: placementAPIName.Namespace,
Name: placementAPIName.Name + "-db-sync"},
MariaDBDatabaseName: placementAPIName,
// FIXME(gibi): the deployment name should not be hardcoded
// but based on the name of the PlacementAPI CR
MariaDBDatabaseName: types.NamespacedName{
Namespace: placementAPIName.Namespace,
Name: placement.DatabaseName},
DeploymentName: types.NamespacedName{
Namespace: placementAPIName.Namespace,
Name: placementAPIName.Name},
Expand Down
23 changes: 18 additions & 5 deletions tests/functional/placementapi_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
. "github.com/openstack-k8s-operators/lib-common/modules/common/test/helpers"
placement "github.com/openstack-k8s-operators/placement-operator/pkg/placement"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/types"

Expand Down Expand Up @@ -154,6 +153,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
th.SimulateJobSuccess(names.DBSyncJobName)
placement := GetPlacementAPI(names.PlacementAPIName)
Expect(*(placement.Spec.Replicas)).Should(Equal(int32(0)))
Expand Down Expand Up @@ -303,12 +303,10 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
db := mariadb.GetMariaDBDatabase(names.MariaDBDatabaseName)
// FIXME(gibi): this should be hardcoded to "placement" as this is
// the name of the DB schema to be created
Expect(db.Spec.Name).To(Equal(placement.DatabaseName))
Expect(db.Spec.Secret).To(Equal(SecretName))
Expect(db.Spec.Name).To(Equal(names.MariaDBDatabaseName.Name))

mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)

th.ExpectCondition(
names.PlacementAPIName,
Expand All @@ -331,6 +329,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)

keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)

Expand All @@ -355,6 +354,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)

keystone.SimulateKeystoneEndpointReady(names.KeystoneEndpointName)

Expand All @@ -372,6 +372,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)

th.ExpectCondition(
names.PlacementAPIName,
Expand Down Expand Up @@ -404,6 +405,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
th.SimulateJobSuccess(names.DBSyncJobName)

th.ExpectCondition(
Expand Down Expand Up @@ -442,6 +444,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
th.SimulateJobSuccess(names.DBSyncJobName)
th.SimulateDeploymentReplicaReady(names.DeploymentName)

Expand Down Expand Up @@ -472,6 +475,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)
keystone.SimulateKeystoneEndpointReady(names.KeystoneEndpointName)
th.SimulateJobSuccess(names.DBSyncJobName)
Expand Down Expand Up @@ -528,6 +532,7 @@ var _ = Describe("PlacementAPI controller", func() {
)

mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
th.SimulateJobSuccess(names.DBSyncJobName)
th.SimulateDeploymentReplicaReady(names.DeploymentName)
keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)
Expand Down Expand Up @@ -599,6 +604,7 @@ var _ = Describe("PlacementAPI controller", func() {
)

mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
th.SimulateJobSuccess(names.DBSyncJobName)
th.SimulateDeploymentReplicaReady(names.DeploymentName)
keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)
Expand Down Expand Up @@ -634,6 +640,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)
keystone.SimulateKeystoneEndpointReady(names.KeystoneEndpointName)
th.SimulateJobSuccess(names.DBSyncJobName)
Expand All @@ -656,6 +663,8 @@ var _ = Describe("PlacementAPI controller", func() {
Expect(keystoneEndpoint.Finalizers).To(ContainElement("PlacementAPI"))
db := mariadb.GetMariaDBDatabase(names.MariaDBDatabaseName)
Expect(db.Finalizers).To(ContainElement("PlacementAPI"))
acc := mariadb.GetMariaDBAccount(names.MariaDBDatabaseName)
Expect(acc.Finalizers).To(ContainElement("PlacementAPI"))

th.DeleteInstance(GetPlacementAPI(names.PlacementAPIName))

Expand All @@ -665,6 +674,8 @@ var _ = Describe("PlacementAPI controller", func() {
Expect(keystoneEndpoint.Finalizers).NotTo(ContainElement("PlacementAPI"))
db = mariadb.GetMariaDBDatabase(names.MariaDBDatabaseName)
Expect(db.Finalizers).NotTo(ContainElement("PlacementAPI"))
acc = mariadb.GetMariaDBAccount(names.MariaDBDatabaseName)
Expect(acc.Finalizers).NotTo(ContainElement("PlacementAPI"))
})

It("updates the deployment if configuration changes", func() {
Expand Down Expand Up @@ -733,6 +744,7 @@ var _ = Describe("PlacementAPI controller", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)
keystone.SimulateKeystoneEndpointReady(names.KeystoneEndpointName)
th.SimulateJobSuccess(names.DBSyncJobName)
Expand Down Expand Up @@ -798,6 +810,7 @@ var _ = Describe("PlacementAPI reconfiguration", func() {
mariadb.CreateDBService(namespace, "openstack", serviceSpec),
)
mariadb.SimulateMariaDBDatabaseCompleted(names.MariaDBDatabaseName)
mariadb.SimulateMariaDBAccountCompleted(names.MariaDBDatabaseName)
keystone.SimulateKeystoneServiceReady(names.KeystoneServiceName)
keystone.SimulateKeystoneEndpointReady(names.KeystoneEndpointName)
th.SimulateJobSuccess(names.DBSyncJobName)
Expand Down
2 changes: 1 addition & 1 deletion tests/kuttl/common/assert_sample_deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ spec:
secret: osp-secret
serviceUser: placement
status:
databaseHostname: openstack
databaseHostname: openstack.placement-kuttl-tests.svc
readyCount: 1
conditions:
- message: Setup complete
Expand Down
2 changes: 1 addition & 1 deletion tests/kuttl/tests/placement_deploy_tls/03-assert.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ spec:
secretName: cert-public-svc
caBundleSecretName: combined-ca-bundle
status:
databaseHostname: openstack
databaseHostname: openstack.placement-kuttl-tests.svc
readyCount: 1
conditions:
- message: Setup complete
Expand Down

0 comments on commit 482655c

Please sign in to comment.