Skip to content

Commit

Permalink
Merge pull request #166 from zzzeek/add_mdb_account
Browse files Browse the repository at this point in the history
add controller to create and delete individual usernames in mariadb / galera
  • Loading branch information
openshift-merge-bot[bot] authored Dec 14, 2023
2 parents c971bdd + 484a1f6 commit 4cd7b3f
Show file tree
Hide file tree
Showing 37 changed files with 1,619 additions and 39 deletions.
13 changes: 13 additions & 0 deletions PROJECT
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Code generated by tool. DO NOT EDIT.
# This file is used to track the info used to scaffold your project
# and allow the plugins properly work.
# More info: https://book.kubebuilder.io/reference/project-config.html
domain: openstack.org
layout:
- go.kubebuilder.io/v3
Expand Down Expand Up @@ -42,4 +46,13 @@ resources:
defaulting: true
validation: true
webhookVersion: v1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: openstack.org
group: mariadb
kind: MariaDBAccount
path: github.com/openstack-k8s-operators/mariadb-operator/api/v1beta1
version: v1beta1
version: "3"
104 changes: 104 additions & 0 deletions api/bases/mariadb.openstack.org_mariadbaccounts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.11.1
creationTimestamp: null
name: mariadbaccounts.mariadb.openstack.org
spec:
group: mariadb.openstack.org
names:
kind: MariaDBAccount
listKind: MariaDBAccountList
plural: mariadbaccounts
singular: mariadbaccount
scope: Namespaced
versions:
- name: v1beta1
schema:
openAPIV3Schema:
description: MariaDBAccount is the Schema for the mariadbaccounts API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: MariaDBAccountSpec defines the desired state of MariaDBAccount
properties:
secret:
description: Name of secret which contains DatabasePassword
type: string
userName:
description: UserName for new account
type: string
required:
- secret
- userName
type: object
status:
description: MariaDBAccountStatus defines the observed state of MariaDBAccount
properties:
conditions:
description: Deployment Conditions
items:
description: Condition defines an observation of a API resource
operational state.
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another. This should be when the underlying condition changed.
If that is not known, then using the time when the API field
changed is acceptable.
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition.
type: string
reason:
description: The reason for the condition's last transition
in CamelCase.
type: string
severity:
description: Severity provides a classification of Reason code,
so the current situation is immediately understandable and
could act accordingly. It is meant for situations where Status=False
and it should be indicated if it is just informational, warning
(next reconciliation might fix it) or an error (e.g. DB create
issue and no actions to automatically resolve the issue can/should
be done). For conditions where Status=Unknown or Status=True
the Severity should be SeverityNone.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
type: string
type:
description: Type of condition in CamelCase.
type: string
required:
- lastTransitionTime
- status
- type
type: object
type: array
hash:
additionalProperties:
type: string
description: Map of hashes to track e.g. job status
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}
26 changes: 26 additions & 0 deletions api/v1beta1/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,14 @@ import (
const (
// MariaDBInitializedCondition Status=True condition which indicates if the MariaDB dbinit has completed
MariaDBInitializedCondition condition.Type = "MariaDBInitialized"

MariaDBDatabaseReadyCondition condition.Type = "MariaDBDatabaseReady"

MariaDBAccountReadyCondition condition.Type = "MariaDBAccountReady"

// MariaDBServerReadyCondition Status=True condition which indicates that the MariaDB and/or
// Galera server is ready for database / account create/drop operations to proceed
MariaDBServerReadyCondition condition.Type = "MariaDBServerReady"
)

// MariaDB Reasons used by API objects.
Expand Down Expand Up @@ -60,4 +68,22 @@ const (

// MariaDBInitializedErrorMessage
MariaDBInitializedErrorMessage = "MariaDB dbinit error occured %s"

MariaDBDatabaseReadyInitMessage = "MariaDBDatabase not yet available"

MariaDBDatabaseReadyMessage = "MariaDBDatabase ready"

MariaDBServerReadyInitMessage = "MariaDB / Galera server not yet available"

MariaDBServerReadyMessage = "MariaDB / Galera server ready"

MariaDBAccountReadyInitMessage = "MariaDBAccount create / drop not started"

MariaDBAccountReadyMessage = "MariaDBAccount creation complete"

MariaDBAccountSecretNotReadyMessage = "MariaDBAccount secret is missing or incomplete: %s"

MariaDBErrorRetrievingMariaDBDatabaseMessage = "Error retrieving MariaDBDatabase instance %s"

MariaDBErrorRetrievingMariaDBGaleraMessage = "Error retrieving MariaDB/Galera instance %s"
)
75 changes: 75 additions & 0 deletions api/v1beta1/mariadbaccount_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/*
Copyright 2022.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package v1beta1

import (
condition "github.com/openstack-k8s-operators/lib-common/modules/common/condition"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

const (
// AccountCreateHash hash
AccountCreateHash = "accountcreate"

// AccountDeleteHash hash
AccountDeleteHash = "accountdelete"
)

// MariaDBAccountSpec defines the desired state of MariaDBAccount
type MariaDBAccountSpec struct {
// UserName for new account
// +kubebuilder:validation:Required
UserName string `json:"userName"`

// Name of secret which contains DatabasePassword
// +kubebuilder:validation:Required
Secret string `json:"secret"`
}

// MariaDBAccountStatus defines the observed state of MariaDBAccount
type MariaDBAccountStatus struct {
// Deployment Conditions
Conditions condition.Conditions `json:"conditions,omitempty" optional:"true"`

// Map of hashes to track e.g. job status
Hash map[string]string `json:"hash,omitempty"`
}

//+kubebuilder:object:root=true
//+kubebuilder:subresource:status

// MariaDBAccount is the Schema for the mariadbaccounts API
type MariaDBAccount struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec MariaDBAccountSpec `json:"spec,omitempty"`
Status MariaDBAccountStatus `json:"status,omitempty"`
}

//+kubebuilder:object:root=true

// MariaDBAccountList contains a list of MariaDBAccount
type MariaDBAccountList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MariaDBAccount `json:"items"`
}

func init() {
SchemeBuilder.Register(&MariaDBAccount{}, &MariaDBAccountList{})
}
103 changes: 103 additions & 0 deletions api/v1beta1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 4cd7b3f

Please sign in to comment.