Skip to content

Commit 3a74ba1

Browse files
committed
clusterresources for postgres were migrated to reference pattern
1 parent 4d5d744 commit 3a74ba1

File tree

64 files changed

+1077
-360
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+1077
-360
lines changed

apis/clusterresources/v1beta1/awssecuritygroupfirewallrule_types.go

+9
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ func (fr *AWSSecurityGroupFirewallRule) NewPatch() client.Patch {
6565
return client.MergeFrom(old)
6666
}
6767

68+
func (fr *AWSSecurityGroupFirewallRule) AttachToCluster(id string) {
69+
fr.Status.ClusterID = id
70+
fr.Status.ResourceState = models.CreatingEvent
71+
}
72+
73+
func (fr *AWSSecurityGroupFirewallRule) DetachFromCluster() {
74+
fr.Status.ResourceState = models.DeletingEvent
75+
}
76+
6877
func init() {
6978
SchemeBuilder.Register(&AWSSecurityGroupFirewallRule{}, &AWSSecurityGroupFirewallRuleList{})
7079
}

apis/clusterresources/v1beta1/awsvpcpeering_types.go

+10-11
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,21 @@ func (aws *AWSVPCPeering) NewPatch() client.Patch {
7171
return client.MergeFrom(old)
7272
}
7373

74+
func (aws *AWSVPCPeering) AttachToCluster(id string) {
75+
aws.Status.CDCID = id
76+
aws.Status.ResourceState = models.CreatingEvent
77+
}
78+
79+
func (aws *AWSVPCPeering) DetachFromCluster() {
80+
aws.Status.ResourceState = models.DeletingEvent
81+
}
82+
7483
func init() {
7584
SchemeBuilder.Register(&AWSVPCPeering{}, &AWSVPCPeeringList{})
7685
}
7786

7887
type immutableAWSVPCPeeringFields struct {
7988
specificFields specificAWSVPCPeeringFields
80-
peering immutablePeeringFields
8189
}
8290

8391
type specificAWSVPCPeeringFields struct {
@@ -91,9 +99,6 @@ func (aws *AWSVPCPeeringSpec) newImmutableFields() *immutableAWSVPCPeeringFields
9199
peerAWSAccountID: aws.PeerAWSAccountID,
92100
peerRegion: aws.PeerRegion,
93101
},
94-
immutablePeeringFields{
95-
DataCentreID: aws.DataCentreID,
96-
},
97102
}
98103
}
99104

@@ -106,8 +111,7 @@ func (aws *AWSVPCPeeringSpec) ValidateUpdate(oldSpec AWSVPCPeeringSpec) error {
106111
return err
107112
}
108113

109-
if newImmutableFields.peering != oldImmutableFields.peering ||
110-
newImmutableFields.specificFields != oldImmutableFields.specificFields {
114+
if newImmutableFields.specificFields != oldImmutableFields.specificFields {
111115
return fmt.Errorf("cannot update immutable fields: old spec: %+v: new spec: %+v", oldSpec, aws)
112116
}
113117

@@ -125,11 +129,6 @@ func (aws *AWSVPCPeeringSpec) Validate(availableRegions []string) error {
125129
return fmt.Errorf("VPC ID must begin with 'vpc-' and fit pattern: %s. %v", models.PeerVPCIDRegExp, err)
126130
}
127131

128-
dataCentreIDMatched, err := regexp.Match(models.UUIDStringRegExp, []byte(aws.DataCentreID))
129-
if !dataCentreIDMatched || err != nil {
130-
return fmt.Errorf("data centre ID is a UUID formated string. It must fit the pattern: %s. %v", models.UUIDStringRegExp, err)
131-
}
132-
133132
if !validation.Contains(aws.PeerRegion, availableRegions) {
134133
return fmt.Errorf("AWS Region to peer: %s is unavailable, available regions: %v",
135134
aws.PeerRegion, availableRegions)

apis/clusterresources/v1beta1/awsvpcpeering_webhook.go

-4
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,6 @@ func (r *AWSVPCPeering) ValidateCreate() error {
6767
return fmt.Errorf("peer AWS Account Region is empty")
6868
}
6969

70-
if r.Spec.DataCentreID == "" {
71-
return fmt.Errorf("dataCentre ID is empty")
72-
}
73-
7470
if r.Spec.PeerSubnets == nil {
7571
return fmt.Errorf("peer Subnets list is empty")
7672
}

apis/clusterresources/v1beta1/azurevnetpeering_types.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,20 @@ func (azure *AzureVNetPeering) NewPatch() client.Patch {
7171
return client.MergeFrom(old)
7272
}
7373

74+
func (azure *AzureVNetPeering) AttachToCluster(id string) {
75+
azure.Status.CDCID = id
76+
azure.Status.ResourceState = models.CreatingEvent
77+
}
78+
79+
func (azure *AzureVNetPeering) DetachFromCluster() {
80+
azure.Status.ResourceState = models.DeletingEvent
81+
}
82+
7483
func init() {
7584
SchemeBuilder.Register(&AzureVNetPeering{}, &AzureVNetPeeringList{})
7685
}
7786

7887
func (azure *AzureVNetPeeringSpec) Validate() error {
79-
dataCentreIDMatched, err := regexp.Match(models.UUIDStringRegExp, []byte(azure.DataCentreID))
80-
if err != nil {
81-
return err
82-
}
83-
if !dataCentreIDMatched {
84-
return fmt.Errorf("data centre ID is a UUID formated string. It must fit the pattern: %s", models.UUIDStringRegExp)
85-
}
86-
8788
for _, subnet := range azure.PeerSubnets {
8889
peerSubnetMatched, err := regexp.Match(models.PeerSubnetsRegExp, []byte(subnet))
8990
if err != nil {

apis/clusterresources/v1beta1/azurevnetpeering_webhook.go

-4
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,6 @@ func (r *AzureVNetPeering) ValidateCreate() error {
7171
return fmt.Errorf("peer Subscription ID is empty")
7272
}
7373

74-
if r.Spec.DataCentreID == "" {
75-
return fmt.Errorf("dataCentre ID is empty")
76-
}
77-
7874
if r.Spec.PeerSubnets == nil {
7975
return fmt.Errorf("peer Subnets list is empty")
8076
}

apis/clusterresources/v1beta1/clusterbackup_types.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727

2828
// ClusterBackupSpec defines the desired state of ClusterBackup
2929
type ClusterBackupSpec struct {
30-
ClusterID string `json:"clusterId"`
30+
ClusterID string `json:"clusterId,omitempty"`
3131
ClusterKind string `json:"clusterKind"`
3232
}
3333

@@ -37,6 +37,7 @@ type ClusterBackupStatus struct {
3737
Progress string `json:"progress,omitempty"`
3838
Start int `json:"start,omitempty"`
3939
End int `json:"end,omitempty"`
40+
ClusterID string `json:"clusterId,omitempty"`
4041
}
4142

4243
//+kubebuilder:object:root=true
@@ -71,6 +72,14 @@ func (cbs *ClusterBackupStatus) UpdateStatus(instBackup *models.BackupEvent) {
7172
cbs.Progress = fmt.Sprintf("%f", instBackup.Progress)
7273
}
7374

75+
func (cb *ClusterBackup) AttachToCluster(id string) {
76+
cb.Status.ClusterID = id
77+
}
78+
79+
func (cb *ClusterBackup) DetachFromCluster() {
80+
81+
}
82+
7483
func init() {
7584
SchemeBuilder.Register(&ClusterBackup{}, &ClusterBackupList{})
7685
}

apis/clusterresources/v1beta1/clusternetworkfirewallrule_types.go

+9
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ func (fr *ClusterNetworkFirewallRule) NewPatch() client.Patch {
6565
return client.MergeFrom(old)
6666
}
6767

68+
func (fr *ClusterNetworkFirewallRule) AttachToCluster(id string) {
69+
fr.Status.ClusterID = id
70+
fr.Status.ResourceState = models.CreatingEvent
71+
}
72+
73+
func (fr *ClusterNetworkFirewallRule) DetachFromCluster() {
74+
fr.Status.ResourceState = models.DeletingEvent
75+
}
76+
6877
func init() {
6978
SchemeBuilder.Register(&ClusterNetworkFirewallRule{}, &ClusterNetworkFirewallRuleList{})
7079
}

apis/clusterresources/v1beta1/exclusionwindow_types.go

+17-4
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ package v1beta1
1919
import (
2020
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2121
"sigs.k8s.io/controller-runtime/pkg/client"
22+
23+
"github.com/instaclustr/operator/pkg/models"
2224
)
2325

2426
// ExclusionWindowSpec defines the desired state of ExclusionWindow
2527
type ExclusionWindowSpec struct {
26-
ClusterID string `json:"clusterId"`
28+
ClusterID string `json:"clusterId,omitempty"`
2729
DayOfWeek string `json:"dayOfWeek"`
2830
//+kubebuilder:validation:Minimum:=0
2931
//+kubebuilder:validation:Maximum:=23
@@ -36,7 +38,9 @@ type ExclusionWindowSpec struct {
3638

3739
// ExclusionWindowStatus defines the observed state of ExclusionWindow
3840
type ExclusionWindowStatus struct {
39-
ID string `json:"id"`
41+
ID string `json:"id,omitempty"`
42+
ClusterID string `json:"clusterId,omitempty"`
43+
ResourceState string `json:"resourceState,omitempty"`
4044
}
4145

4246
//+kubebuilder:object:root=true
@@ -60,11 +64,20 @@ type ExclusionWindowList struct {
6064
Items []ExclusionWindow `json:"items"`
6165
}
6266

67+
func (ew *ExclusionWindow) AttachToCluster(id string) {
68+
ew.Status.ClusterID = id
69+
ew.Status.ResourceState = models.CreatingEvent
70+
}
71+
72+
func (ew *ExclusionWindow) DetachFromCluster() {
73+
ew.Status.ResourceState = models.DeletingEvent
74+
}
75+
6376
func init() {
6477
SchemeBuilder.Register(&ExclusionWindow{}, &ExclusionWindowList{})
6578
}
6679

67-
func (r *ExclusionWindow) NewPatch() client.Patch {
68-
old := r.DeepCopy()
80+
func (ew *ExclusionWindow) NewPatch() client.Patch {
81+
old := ew.DeepCopy()
6982
return client.MergeFrom(old)
7083
}

apis/clusterresources/v1beta1/gcpvpcpeering_types.go

+9
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@ func (gcp *GCPVPCPeering) NewPatch() client.Patch {
6969
return client.MergeFrom(old)
7070
}
7171

72+
func (gcp *GCPVPCPeering) AttachToCluster(id string) {
73+
gcp.Status.CDCID = id
74+
gcp.Status.ResourceState = models.CreatingEvent
75+
}
76+
77+
func (gcp *GCPVPCPeering) DetachFromCluster() {
78+
gcp.Status.ResourceState = models.DeletingEvent
79+
}
80+
7281
func init() {
7382
SchemeBuilder.Register(&GCPVPCPeering{}, &GCPVPCPeeringList{})
7483
}

apis/clusterresources/v1beta1/maintenanceevents_types.go

-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323

2424
// MaintenanceEventsSpec defines the desired state of MaintenanceEvents
2525
type MaintenanceEventsSpec struct {
26-
ClusterID string `json:"clusterId"`
2726
MaintenanceEventsReschedules []*MaintenanceEventReschedule `json:"maintenanceEventsReschedule"`
2827
}
2928

apis/clusterresources/v1beta1/structs.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121
)
2222

2323
type VPCPeeringSpec struct {
24-
DataCentreID string `json:"cdcId"`
24+
DataCentreID string `json:"cdcId,omitempty"`
2525
PeerSubnets []string `json:"peerSubnets"`
2626
}
2727

@@ -30,6 +30,8 @@ type PeeringStatus struct {
3030
StatusCode string `json:"statusCode,omitempty"`
3131
Name string `json:"name,omitempty"`
3232
FailureReason string `json:"failureReason,omitempty"`
33+
CDCID string `json:"cdcid,omitempty"`
34+
ResourceState string `json:"resourceState,omitempty"`
3335
}
3436

3537
type PatchRequest struct {
@@ -39,18 +41,16 @@ type PatchRequest struct {
3941
}
4042

4143
type FirewallRuleSpec struct {
42-
ClusterID string `json:"clusterId"`
44+
ClusterID string `json:"clusterId,omitempty"`
4345
Type string `json:"type"`
4446
}
4547

4648
type FirewallRuleStatus struct {
4749
ID string `json:"id,omitempty"`
4850
DeferredReason string `json:"deferredReason,omitempty"`
4951
Status string `json:"status,omitempty"`
50-
}
51-
52-
type immutablePeeringFields struct {
53-
DataCentreID string
52+
ClusterID string `json:"clusterId,omitempty"`
53+
ResourceState string `json:"resourceState,omitempty"`
5454
}
5555

5656
type SecretReference struct {

apis/clusters/v1beta1/cassandra_types.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ type CassandraSpec struct {
6262
PasswordAndUserAuth bool `json:"passwordAndUserAuth,omitempty"`
6363
Spark []*Spark `json:"spark,omitempty"`
6464
BundledUseOnly bool `json:"bundledUseOnly,omitempty"`
65-
UserRefs []*UserReference `json:"userRefs,omitempty"`
65+
UserRefs []*NamespacedName `json:"userRefs,omitempty"`
6666
//+kubebuilder:validate:MaxItems:=1
6767
ResizeSettings []*ResizeSettings `json:"resizeSettings,omitempty"`
6868
}

apis/clusters/v1beta1/kafka_types.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ type KafkaSpec struct {
8888
KarapaceRestProxy []*KarapaceRestProxy `json:"karapaceRestProxy,omitempty"`
8989
KarapaceSchemaRegistry []*KarapaceSchemaRegistry `json:"karapaceSchemaRegistry,omitempty"`
9090
BundledUseOnly bool `json:"bundledUseOnly,omitempty"`
91-
UserRefs []*UserReference `json:"userRefs,omitempty"`
91+
UserRefs []*NamespacedName `json:"userRefs,omitempty"`
9292
Kraft []*Kraft `json:"kraft,omitempty"`
9393
}
9494

apis/clusters/v1beta1/opensearch_types.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type OpenSearchSpec struct {
5353
IndexManagementPlugin bool `json:"indexManagementPlugin,omitempty"`
5454
AlertingPlugin bool `json:"alertingPlugin,omitempty"`
5555
BundledUseOnly bool `json:"bundledUseOnly,omitempty"`
56-
UserRefs []*UserReference `json:"userRefs,omitempty"`
56+
UserRefs []*NamespacedName `json:"userRefs,omitempty"`
5757
//+kubuilder:validation:MaxItems:=1
5858
ResizeSettings []*ResizeSettings `json:"resizeSettings,omitempty"`
5959
}

apis/clusters/v1beta1/postgresql_types.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,25 @@ type PgRestoreFrom struct {
7575
type PgSpec struct {
7676
PgRestoreFrom *PgRestoreFrom `json:"pgRestoreFrom,omitempty"`
7777
Cluster `json:",inline"`
78-
DataCentres []*PgDataCentre `json:"dataCentres,omitempty"`
79-
ClusterConfigurations map[string]string `json:"clusterConfigurations,omitempty"`
80-
SynchronousModeStrict bool `json:"synchronousModeStrict,omitempty"`
81-
UserRefs []*UserReference `json:"userRefs,omitempty"`
78+
DataCentres []*PgDataCentre `json:"dataCentres,omitempty"`
79+
ClusterConfigurations map[string]string `json:"clusterConfigurations,omitempty"`
80+
SynchronousModeStrict bool `json:"synchronousModeStrict,omitempty"`
81+
UserRefs []*NamespacedName `json:"userRefs,omitempty"`
82+
ClusterResources ClusterResourceRefs `json:"clusterResources,omitempty"`
8283
//+kubebuilder:validate:MaxItems:=1
8384
ResizeSettings []*ResizeSettings `json:"resizeSettings,omitempty"`
8485
}
8586

87+
type ClusterResourceRefs struct {
88+
ClusterBackups []*NamespacedName `json:"clusterBackups,omitempty"`
89+
ClusterNetworkFirewallRules []*NamespacedName `json:"clusterNetworkFirewallRules,omitempty"`
90+
AWSVPCPeerings []*NamespacedName `json:"awsVPCPeerings,omitempty"`
91+
AWSSecurityGroupFirewallRules []*NamespacedName `json:"awsSecurityGroupFirewallRules,omitempty"`
92+
ExclusionWindows []*NamespacedName `json:"exclusionWindows,omitempty"`
93+
GCPVPCPeerings []*NamespacedName `json:"gcpVPCPeerings,omitempty"`
94+
AzureVNetPeerings []*NamespacedName `json:"azureVNetPeerings,omitempty"`
95+
}
96+
8697
// PgStatus defines the observed state of PostgreSQL
8798
type PgStatus struct {
8899
ClusterStatus `json:",inline"`
@@ -159,7 +170,6 @@ func (pg *PostgreSQL) NewBackupSpec(startTimestamp int) *clusterresourcesv1beta1
159170
Finalizers: []string{models.DeletionFinalizer},
160171
},
161172
Spec: clusterresourcesv1beta1.ClusterBackupSpec{
162-
ClusterID: pg.Status.ID,
163173
ClusterKind: models.PgClusterKind,
164174
},
165175
}

apis/clusters/v1beta1/redis_types.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ type RedisSpec struct {
6969
//+kubebuilder:validation:MaxItems:=2
7070
DataCentres []*RedisDataCentre `json:"dataCentres,omitempty"`
7171

72-
UserRefs []*UserReference `json:"userRefs,omitempty"`
72+
UserRefs []*NamespacedName `json:"userRefs,omitempty"`
7373
//+kubebuilder:validation:MaxItems:=1
7474
ResizeSettings []*ResizeSettings `json:"resizeSettings,omitempty"`
7575
}

apis/clusters/v1beta1/structs.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,7 @@ func (cs *ClusterStatus) PrivateLinkStatusesEqual(iStatus *ClusterStatus) bool {
711711
return true
712712
}
713713

714-
type UserReference struct {
714+
type NamespacedName struct {
715715
Namespace string `json:"namespace"`
716716
Name string `json:"name"`
717717
}

0 commit comments

Comments
 (0)