Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.

Commit c182111

Browse files
authored
Merge pull request #299 from sergenyalcin/mysql-config
Add MySQLServerConfiguration managed resource
2 parents bd13ec7 + f5044ee commit c182111

19 files changed

Lines changed: 1469 additions & 36 deletions

apis/database/v1beta1/configuration_types.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,33 @@ type PostgreSQLServerConfigurationList struct {
5151
Items []PostgreSQLServerConfiguration `json:"items"`
5252
}
5353

54+
// +kubebuilder:object:root=true
55+
56+
// A MySQLServerConfiguration is a managed resource that represents an Azure
57+
// MySQL Server Configuration.
58+
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
59+
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
60+
// +kubebuilder:printcolumn:name="VERSION",type="string",JSONPath=".spec.forProvider.version"
61+
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
62+
// +kubebuilder:subresource:status
63+
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,azure}
64+
type MySQLServerConfiguration struct {
65+
metav1.TypeMeta `json:",inline"`
66+
metav1.ObjectMeta `json:"metadata,omitempty"`
67+
68+
Spec SQLServerConfigurationSpec `json:"spec"`
69+
Status SQLServerConfigurationStatus `json:"status,omitempty"`
70+
}
71+
72+
// +kubebuilder:object:root=true
73+
74+
// MySQLServerConfigurationList contains a list of MySQLServerConfiguration.
75+
type MySQLServerConfigurationList struct {
76+
metav1.TypeMeta `json:",inline"`
77+
metav1.ListMeta `json:"metadata,omitempty"`
78+
Items []MySQLServerConfiguration `json:"items"`
79+
}
80+
5481
// SQLServerConfigurationParameters define the desired state of an Azure SQL
5582
// Database Server Configuration, either PostgreSQL or MySQL Configuration.
5683
type SQLServerConfigurationParameters struct {
@@ -74,12 +101,12 @@ type SQLServerConfigurationParameters struct {
74101
// +immutable
75102
ServerName string `json:"serverName,omitempty"`
76103

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

82-
// ServerNameSelector - A selector for a PostgreSQLServer object to
109+
// ServerNameSelector - A selector for a server object to
83110
// retrieve its name
84111
// +immutable
85112
ServerNameSelector *xpv1.Selector `json:"serverNameSelector,omitempty"`

apis/database/v1beta1/referencers.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,41 @@ func (mg *MySQLServer) ResolveReferences(ctx context.Context, c client.Reader) e
4848
return nil
4949
}
5050

51+
// ResolveReferences of this MySQLServerConfiguration.
52+
func (mg *MySQLServerConfiguration) ResolveReferences(ctx context.Context, c client.Reader) error {
53+
r := reference.NewAPIResolver(c, mg)
54+
55+
// Resolve spec.forProvider.resourceGroupName
56+
rsp, err := r.Resolve(ctx, reference.ResolutionRequest{
57+
CurrentValue: mg.Spec.ForProvider.ResourceGroupName,
58+
Reference: mg.Spec.ForProvider.ResourceGroupNameRef,
59+
Selector: mg.Spec.ForProvider.ResourceGroupNameSelector,
60+
To: reference.To{Managed: &v1alpha3.ResourceGroup{}, List: &v1alpha3.ResourceGroupList{}},
61+
Extract: reference.ExternalName(),
62+
})
63+
if err != nil {
64+
return errors.Wrap(err, "spec.forProvider.resourceGroupName")
65+
}
66+
mg.Spec.ForProvider.ResourceGroupName = rsp.ResolvedValue
67+
mg.Spec.ForProvider.ResourceGroupNameRef = rsp.ResolvedReference
68+
69+
// Resolve spec.forProvider.resourceGroupName
70+
rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
71+
CurrentValue: mg.Spec.ForProvider.ServerName,
72+
Reference: mg.Spec.ForProvider.ServerNameRef,
73+
Selector: mg.Spec.ForProvider.ServerNameSelector,
74+
To: reference.To{Managed: &MySQLServer{}, List: &MySQLServerList{}},
75+
Extract: reference.ExternalName(),
76+
})
77+
if err != nil {
78+
return errors.Wrap(err, "spec.forProvider.serverName")
79+
}
80+
mg.Spec.ForProvider.ServerName = rsp.ResolvedValue
81+
mg.Spec.ForProvider.ServerNameRef = rsp.ResolvedReference
82+
83+
return nil
84+
}
85+
5186
// ResolveReferences of this PostgreSQLServer.
5287
func (mg *PostgreSQLServer) ResolveReferences(ctx context.Context, c client.Reader) error {
5388
r := reference.NewAPIResolver(c, mg)

apis/database/v1beta1/register.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ var (
4545
MySQLServerGroupVersionKind = SchemeGroupVersion.WithKind(MySQLServerKind)
4646
)
4747

48+
// MySQLServerConfiguration type metadata.
49+
var (
50+
MySQLServerConfigurationKind = reflect.TypeOf(MySQLServerConfiguration{}).Name()
51+
MySQLServerConfigurationGroupKind = schema.GroupKind{Group: Group, Kind: MySQLServerConfigurationKind}.String()
52+
MySQLServerConfigurationKindAPIVersion = MySQLServerConfigurationKind + "." + SchemeGroupVersion.String()
53+
MySQLServerConfigurationGroupVersionKind = SchemeGroupVersion.WithKind(MySQLServerConfigurationKind)
54+
)
55+
4856
// PostgreSQLServer type metadata.
4957
var (
5058
PostgreSQLServerKind = reflect.TypeOf(PostgreSQLServer{}).Name()
@@ -63,6 +71,7 @@ var (
6371

6472
func init() {
6573
SchemeBuilder.Register(&MySQLServer{}, &MySQLServerList{})
74+
SchemeBuilder.Register(&MySQLServerConfiguration{}, &MySQLServerConfigurationList{})
6675
SchemeBuilder.Register(&PostgreSQLServer{}, &PostgreSQLServerList{})
6776
SchemeBuilder.Register(&PostgreSQLServerConfiguration{}, &PostgreSQLServerConfigurationList{})
6877
}

apis/database/v1beta1/zz_generated.deepcopy.go

Lines changed: 59 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apis/database/v1beta1/zz_generated.managed.go

Lines changed: 56 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apis/database/v1beta1/zz_generated.managedlist.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: database.azure.crossplane.io/v1beta1
2+
kind: MySQLServerConfiguration
3+
metadata:
4+
name: example-mysql-configuration
5+
spec:
6+
providerConfigRef:
7+
name: example
8+
forProvider:
9+
resourceGroupNameRef:
10+
name: example-rg
11+
serverNameRef:
12+
name: example-mysql
13+
name: connect_timeout
14+
value: "15"

0 commit comments

Comments
 (0)