Skip to content

Commit

Permalink
Add MySQLServerConfiguration managed resource
Browse files Browse the repository at this point in the history
Signed-off-by: sergenyalcin <yalcinsergen97@gmail.com>
  • Loading branch information
sergenyalcin committed Nov 18, 2021
1 parent 3a2c932 commit f5044ee
Show file tree
Hide file tree
Showing 19 changed files with 1,469 additions and 36 deletions.
31 changes: 29 additions & 2 deletions apis/database/v1beta1/configuration_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,33 @@ type PostgreSQLServerConfigurationList struct {
Items []PostgreSQLServerConfiguration `json:"items"`
}

// +kubebuilder:object:root=true

// A MySQLServerConfiguration is a managed resource that represents an Azure
// MySQL Server Configuration.
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
// +kubebuilder:printcolumn:name="VERSION",type="string",JSONPath=".spec.forProvider.version"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,azure}
type MySQLServerConfiguration struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec SQLServerConfigurationSpec `json:"spec"`
Status SQLServerConfigurationStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true

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

// SQLServerConfigurationParameters define the desired state of an Azure SQL
// Database Server Configuration, either PostgreSQL or MySQL Configuration.
type SQLServerConfigurationParameters struct {
Expand All @@ -74,12 +101,12 @@ type SQLServerConfigurationParameters struct {
// +immutable
ServerName string `json:"serverName,omitempty"`

// ServerNameRef - A reference to a PostgreSQLServer object to retrieve
// ServerNameRef - A reference to a server object to retrieve
// its name
// +immutable
ServerNameRef *xpv1.Reference `json:"serverNameRef,omitempty"`

// ServerNameSelector - A selector for a PostgreSQLServer object to
// ServerNameSelector - A selector for a server object to
// retrieve its name
// +immutable
ServerNameSelector *xpv1.Selector `json:"serverNameSelector,omitempty"`
Expand Down
35 changes: 35 additions & 0 deletions apis/database/v1beta1/referencers.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,41 @@ func (mg *MySQLServer) ResolveReferences(ctx context.Context, c client.Reader) e
return nil
}

// ResolveReferences of this MySQLServerConfiguration.
func (mg *MySQLServerConfiguration) ResolveReferences(ctx context.Context, c client.Reader) error {
r := reference.NewAPIResolver(c, mg)

// Resolve spec.forProvider.resourceGroupName
rsp, err := r.Resolve(ctx, reference.ResolutionRequest{
CurrentValue: mg.Spec.ForProvider.ResourceGroupName,
Reference: mg.Spec.ForProvider.ResourceGroupNameRef,
Selector: mg.Spec.ForProvider.ResourceGroupNameSelector,
To: reference.To{Managed: &v1alpha3.ResourceGroup{}, List: &v1alpha3.ResourceGroupList{}},
Extract: reference.ExternalName(),
})
if err != nil {
return errors.Wrap(err, "spec.forProvider.resourceGroupName")
}
mg.Spec.ForProvider.ResourceGroupName = rsp.ResolvedValue
mg.Spec.ForProvider.ResourceGroupNameRef = rsp.ResolvedReference

// Resolve spec.forProvider.resourceGroupName
rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
CurrentValue: mg.Spec.ForProvider.ServerName,
Reference: mg.Spec.ForProvider.ServerNameRef,
Selector: mg.Spec.ForProvider.ServerNameSelector,
To: reference.To{Managed: &MySQLServer{}, List: &MySQLServerList{}},
Extract: reference.ExternalName(),
})
if err != nil {
return errors.Wrap(err, "spec.forProvider.serverName")
}
mg.Spec.ForProvider.ServerName = rsp.ResolvedValue
mg.Spec.ForProvider.ServerNameRef = rsp.ResolvedReference

return nil
}

// ResolveReferences of this PostgreSQLServer.
func (mg *PostgreSQLServer) ResolveReferences(ctx context.Context, c client.Reader) error {
r := reference.NewAPIResolver(c, mg)
Expand Down
9 changes: 9 additions & 0 deletions apis/database/v1beta1/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ var (
MySQLServerGroupVersionKind = SchemeGroupVersion.WithKind(MySQLServerKind)
)

// MySQLServerConfiguration type metadata.
var (
MySQLServerConfigurationKind = reflect.TypeOf(MySQLServerConfiguration{}).Name()
MySQLServerConfigurationGroupKind = schema.GroupKind{Group: Group, Kind: MySQLServerConfigurationKind}.String()
MySQLServerConfigurationKindAPIVersion = MySQLServerConfigurationKind + "." + SchemeGroupVersion.String()
MySQLServerConfigurationGroupVersionKind = SchemeGroupVersion.WithKind(MySQLServerConfigurationKind)
)

// PostgreSQLServer type metadata.
var (
PostgreSQLServerKind = reflect.TypeOf(PostgreSQLServer{}).Name()
Expand All @@ -63,6 +71,7 @@ var (

func init() {
SchemeBuilder.Register(&MySQLServer{}, &MySQLServerList{})
SchemeBuilder.Register(&MySQLServerConfiguration{}, &MySQLServerConfigurationList{})
SchemeBuilder.Register(&PostgreSQLServer{}, &PostgreSQLServerList{})
SchemeBuilder.Register(&PostgreSQLServerConfiguration{}, &PostgreSQLServerConfigurationList{})
}
59 changes: 59 additions & 0 deletions apis/database/v1beta1/zz_generated.deepcopy.go

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

56 changes: 56 additions & 0 deletions apis/database/v1beta1/zz_generated.managed.go

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

9 changes: 9 additions & 0 deletions apis/database/v1beta1/zz_generated.managedlist.go

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

14 changes: 14 additions & 0 deletions examples/database/mysqlserverconfiguration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: database.azure.crossplane.io/v1beta1
kind: MySQLServerConfiguration
metadata:
name: example-mysql-configuration
spec:
providerConfigRef:
name: example
forProvider:
resourceGroupNameRef:
name: example-rg
serverNameRef:
name: example-mysql
name: connect_timeout
value: "15"
Loading

0 comments on commit f5044ee

Please # to comment.