Skip to content

Commit 6b61135

Browse files
Merge pull request #4843 from GoogleCloudPlatform/acpana/sqlinstance-fields-status
fix: set status on acquistion
2 parents fde34d5 + 7aa6a6d commit 6b61135

File tree

7 files changed

+585
-7
lines changed

7 files changed

+585
-7
lines changed

pkg/controller/direct/sql/sqlinstance_controller.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ func (a *sqlInstanceAdapter) Update(ctx context.Context, updateOp *directbase.Up
302302
return err
303303
}
304304

305+
instanceForStatus := a.actual
305306
instanceDiff := &structuredreporting.Diff{}
306307
if !InstancesMatch(desiredGCP, a.actual, instanceDiff) {
307308
updateOp.RecordUpdatingEvent()
@@ -324,15 +325,14 @@ func (a *sqlInstanceAdapter) Update(ctx context.Context, updateOp *directbase.Up
324325
}
325326

326327
log.V(2).Info("instance updated", "op", op, "instance", updated)
327-
328-
status, err := SQLInstanceStatusGCPToKRM(updated)
329-
if err != nil {
330-
return fmt.Errorf("updating SQLInstance status failed: %w", err)
331-
}
332-
return setStatus(u, status)
328+
instanceForStatus = updated
333329
}
334330

335-
return nil
331+
status, err := SQLInstanceStatusGCPToKRM(instanceForStatus)
332+
if err != nil {
333+
return fmt.Errorf("updating SQLInstance status failed: %w", err)
334+
}
335+
return setStatus(u, status)
336336
}
337337

338338
// Delete implements the Adapter interface.
Lines changed: 251 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}?alt=json&prettyPrint=false
2+
User-Agent: kcc/${kccVersion} (+https://github.com/GoogleCloudPlatform/k8s-config-connector) kcc/controller-manager/${kccVersion}
3+
4+
404 Not Found
5+
Content-Type: application/json; charset=UTF-8
6+
Server: ESF
7+
Vary: Origin
8+
Vary: X-Origin
9+
Vary: Referer
10+
X-Content-Type-Options: nosniff
11+
X-Frame-Options: SAMEORIGIN
12+
X-Xss-Protection: 0
13+
14+
{
15+
"error": {
16+
"code": 404,
17+
"errors": [
18+
{
19+
"domain": "global",
20+
"message": "The Cloud SQL instance does not exist.",
21+
"reason": "instanceDoesNotExist"
22+
}
23+
],
24+
"message": "The Cloud SQL instance does not exist."
25+
}
26+
}
27+
28+
---
29+
30+
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances?alt=json&prettyPrint=false
31+
Content-Type: application/json
32+
User-Agent: kcc/${kccVersion} (+https://github.com/GoogleCloudPlatform/k8s-config-connector) kcc/controller-manager/${kccVersion}
33+
34+
{
35+
"databaseVersion": "POSTGRES_15",
36+
"instanceType": "CLOUD_SQL_INSTANCE",
37+
"kind": "sql#instance",
38+
"name": "acquisition-sqlinstance-${uniqueId}",
39+
"region": "us-central1",
40+
"settings": {
41+
"activationPolicy": "ALWAYS",
42+
"availabilityType": "ZONAL",
43+
"connectorEnforcement": "NOT_REQUIRED",
44+
"dataDiskType": "PD_SSD",
45+
"edition": "ENTERPRISE",
46+
"ipConfiguration": {
47+
"ipv4Enabled": true,
48+
"sslMode": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
49+
},
50+
"kind": "sql#settings",
51+
"pricingPlan": "PER_USE",
52+
"replicationType": "SYNCHRONOUS",
53+
"storageAutoResize": true,
54+
"tier": "db-f1-micro",
55+
"userLabels": {
56+
"managed-by-cnrm": "true"
57+
}
58+
}
59+
}
60+
61+
200 OK
62+
Content-Type: application/json; charset=UTF-8
63+
Server: ESF
64+
Vary: Origin
65+
Vary: X-Origin
66+
Vary: Referer
67+
X-Content-Type-Options: nosniff
68+
X-Frame-Options: SAMEORIGIN
69+
X-Xss-Protection: 0
70+
71+
{
72+
"insertTime": "2024-04-01T12:34:56.123456Z",
73+
"kind": "sql#operation",
74+
"name": "${operationID}",
75+
"operationType": "CREATE",
76+
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/operations/${operationID}",
77+
"status": "PENDING",
78+
"targetId": "acquisition-sqlinstance-${uniqueId}",
79+
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}",
80+
"targetProject": "${projectId}",
81+
"user": "user@example.com"
82+
}
83+
84+
---
85+
86+
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/operations/${operationID}?alt=json&prettyPrint=false
87+
User-Agent: kcc/${kccVersion} (+https://github.com/GoogleCloudPlatform/k8s-config-connector) kcc/controller-manager/${kccVersion}
88+
89+
200 OK
90+
Content-Type: application/json; charset=UTF-8
91+
Server: ESF
92+
Vary: Origin
93+
Vary: X-Origin
94+
Vary: Referer
95+
X-Content-Type-Options: nosniff
96+
X-Frame-Options: SAMEORIGIN
97+
X-Xss-Protection: 0
98+
99+
{
100+
"endTime": "2024-04-01T12:34:56.123456Z",
101+
"insertTime": "2024-04-01T12:34:56.123456Z",
102+
"kind": "sql#operation",
103+
"name": "${operationID}",
104+
"operationType": "CREATE",
105+
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/operations/${operationID}",
106+
"startTime": "2024-04-01T12:34:56.123456Z",
107+
"status": "DONE",
108+
"targetId": "acquisition-sqlinstance-${uniqueId}",
109+
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}",
110+
"targetProject": "${projectId}",
111+
"user": "user@example.com"
112+
}
113+
114+
---
115+
116+
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}?alt=json&prettyPrint=false
117+
User-Agent: kcc/${kccVersion} (+https://github.com/GoogleCloudPlatform/k8s-config-connector) kcc/controller-manager/${kccVersion}
118+
119+
200 OK
120+
Content-Type: application/json; charset=UTF-8
121+
Server: ESF
122+
Vary: Origin
123+
Vary: X-Origin
124+
Vary: Referer
125+
X-Content-Type-Options: nosniff
126+
X-Frame-Options: SAMEORIGIN
127+
X-Xss-Protection: 0
128+
129+
{
130+
"backendType": "SECOND_GEN",
131+
"connectionName": "${projectId}:us-central1:acquisition-sqlinstance-${uniqueId}",
132+
"createTime": "2024-04-01T12:34:56.123456Z",
133+
"databaseInstalledVersion": "POSTGRES_15_7",
134+
"databaseVersion": "POSTGRES_15",
135+
"etag": "abcdef0123A=",
136+
"gceZone": "us-central1-a",
137+
"geminiConfig": {
138+
"activeQueryEnabled": false,
139+
"entitled": false,
140+
"googleVacuumMgmtEnabled": false,
141+
"indexAdvisorEnabled": false,
142+
"oomSessionCancelEnabled": false
143+
},
144+
"instanceType": "CLOUD_SQL_INSTANCE",
145+
"ipAddresses": [
146+
{
147+
"ipAddress": "10.1.2.3",
148+
"type": "PRIMARY"
149+
},
150+
{
151+
"ipAddress": "10.1.2.3",
152+
"type": "OUTGOING"
153+
}
154+
],
155+
"kind": "sql#instance",
156+
"maintenanceVersion": "POSTGRES_15_7.R20240514.00_12",
157+
"name": "acquisition-sqlinstance-${uniqueId}",
158+
"project": "${projectId}",
159+
"region": "us-central1",
160+
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}",
161+
"serverCaCert": {
162+
"cert": "-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n",
163+
"certSerialNumber": "0",
164+
"commonName": "common-name",
165+
"createTime": "2024-04-01T12:34:56.123456Z",
166+
"expirationTime": "2024-04-01T12:34:56.123456Z",
167+
"instance": "acquisition-sqlinstance-${uniqueId}",
168+
"kind": "sql#sslCert",
169+
"sha1Fingerprint": "12345678"
170+
},
171+
"serviceAccountEmailAddress": "p${projectNumber}-abcdef@gcp-sa-cloud-sql.iam.gserviceaccount.com",
172+
"settings": {
173+
"activationPolicy": "ALWAYS",
174+
"availabilityType": "ZONAL",
175+
"backupConfiguration": {
176+
"backupRetentionSettings": {
177+
"retainedBackups": 7,
178+
"retentionUnit": "COUNT"
179+
},
180+
"enabled": false,
181+
"kind": "sql#backupConfiguration",
182+
"startTime": "12:00",
183+
"transactionLogRetentionDays": 7,
184+
"transactionalLogStorageState": "TRANSACTIONAL_LOG_STORAGE_STATE_UNSPECIFIED"
185+
},
186+
"connectorEnforcement": "NOT_REQUIRED",
187+
"dataDiskSizeGb": "10",
188+
"dataDiskType": "PD_SSD",
189+
"deletionProtectionEnabled": false,
190+
"edition": "ENTERPRISE",
191+
"ipConfiguration": {
192+
"ipv4Enabled": true,
193+
"requireSsl": false,
194+
"sslMode": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
195+
},
196+
"kind": "sql#settings",
197+
"locationPreference": {
198+
"kind": "sql#locationPreference",
199+
"zone": "us-central1-a"
200+
},
201+
"pricingPlan": "PER_USE",
202+
"replicationType": "SYNCHRONOUS",
203+
"settingsVersion": "123",
204+
"storageAutoResize": true,
205+
"storageAutoResizeLimit": "0",
206+
"tier": "db-f1-micro",
207+
"userLabels": {
208+
"managed-by-cnrm": "true"
209+
}
210+
},
211+
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
212+
"state": "RUNNABLE",
213+
"upgradableDatabaseVersions": [
214+
{
215+
"displayName": "PostgreSQL 16",
216+
"majorVersion": "POSTGRES_16",
217+
"name": "POSTGRES_16"
218+
}
219+
]
220+
}
221+
222+
---
223+
224+
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}/users?alt=json&prettyPrint=false
225+
User-Agent: kcc/${kccVersion} (+https://github.com/GoogleCloudPlatform/k8s-config-connector) kcc/controller-manager/${kccVersion}
226+
227+
200 OK
228+
Content-Type: application/json; charset=UTF-8
229+
Server: ESF
230+
Vary: Origin
231+
Vary: X-Origin
232+
Vary: Referer
233+
X-Content-Type-Options: nosniff
234+
X-Frame-Options: SAMEORIGIN
235+
X-Xss-Protection: 0
236+
237+
{
238+
"items": [
239+
{
240+
"etag": "abcdef0123A=",
241+
"instance": "acquisition-sqlinstance-${uniqueId}",
242+
"kind": "sql#user",
243+
"name": "postgres",
244+
"passwordPolicy": {
245+
"status": {}
246+
},
247+
"project": "${projectId}"
248+
}
249+
],
250+
"kind": "sql#usersList"
251+
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}?alt=json&prettyPrint=false
2+
User-Agent: kcc/${kccVersion} (+https://github.com/GoogleCloudPlatform/k8s-config-connector) kcc/controller-manager/${kccVersion}
3+
4+
200 OK
5+
Content-Type: application/json; charset=UTF-8
6+
Server: ESF
7+
Vary: Origin
8+
Vary: X-Origin
9+
Vary: Referer
10+
X-Content-Type-Options: nosniff
11+
X-Frame-Options: SAMEORIGIN
12+
X-Xss-Protection: 0
13+
14+
{
15+
"backendType": "SECOND_GEN",
16+
"connectionName": "${projectId}:us-central1:acquisition-sqlinstance-${uniqueId}",
17+
"createTime": "2024-04-01T12:34:56.123456Z",
18+
"databaseInstalledVersion": "POSTGRES_15_7",
19+
"databaseVersion": "POSTGRES_15",
20+
"etag": "abcdef0123A=",
21+
"gceZone": "us-central1-a",
22+
"geminiConfig": {
23+
"activeQueryEnabled": false,
24+
"entitled": false,
25+
"googleVacuumMgmtEnabled": false,
26+
"indexAdvisorEnabled": false,
27+
"oomSessionCancelEnabled": false
28+
},
29+
"instanceType": "CLOUD_SQL_INSTANCE",
30+
"ipAddresses": [
31+
{
32+
"ipAddress": "10.1.2.3",
33+
"type": "PRIMARY"
34+
},
35+
{
36+
"ipAddress": "10.1.2.3",
37+
"type": "OUTGOING"
38+
}
39+
],
40+
"kind": "sql#instance",
41+
"maintenanceVersion": "POSTGRES_15_7.R20240514.00_12",
42+
"name": "acquisition-sqlinstance-${uniqueId}",
43+
"project": "${projectId}",
44+
"region": "us-central1",
45+
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/${projectId}/instances/acquisition-sqlinstance-${uniqueId}",
46+
"serverCaCert": {
47+
"cert": "-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n",
48+
"certSerialNumber": "0",
49+
"commonName": "common-name",
50+
"createTime": "2024-04-01T12:34:56.123456Z",
51+
"expirationTime": "2024-04-01T12:34:56.123456Z",
52+
"instance": "acquisition-sqlinstance-${uniqueId}",
53+
"kind": "sql#sslCert",
54+
"sha1Fingerprint": "12345678"
55+
},
56+
"serviceAccountEmailAddress": "p${projectNumber}-abcdef@gcp-sa-cloud-sql.iam.gserviceaccount.com",
57+
"settings": {
58+
"activationPolicy": "ALWAYS",
59+
"availabilityType": "ZONAL",
60+
"backupConfiguration": {
61+
"backupRetentionSettings": {
62+
"retainedBackups": 7,
63+
"retentionUnit": "COUNT"
64+
},
65+
"enabled": false,
66+
"kind": "sql#backupConfiguration",
67+
"startTime": "12:00",
68+
"transactionLogRetentionDays": 7,
69+
"transactionalLogStorageState": "TRANSACTIONAL_LOG_STORAGE_STATE_UNSPECIFIED"
70+
},
71+
"connectorEnforcement": "NOT_REQUIRED",
72+
"dataDiskSizeGb": "10",
73+
"dataDiskType": "PD_SSD",
74+
"deletionProtectionEnabled": false,
75+
"edition": "ENTERPRISE",
76+
"ipConfiguration": {
77+
"ipv4Enabled": true,
78+
"requireSsl": false,
79+
"sslMode": "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
80+
},
81+
"kind": "sql#settings",
82+
"locationPreference": {
83+
"kind": "sql#locationPreference",
84+
"zone": "us-central1-a"
85+
},
86+
"pricingPlan": "PER_USE",
87+
"replicationType": "SYNCHRONOUS",
88+
"settingsVersion": "123",
89+
"storageAutoResize": true,
90+
"storageAutoResizeLimit": "0",
91+
"tier": "db-f1-micro",
92+
"userLabels": {
93+
"managed-by-cnrm": "true"
94+
}
95+
},
96+
"sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
97+
"state": "RUNNABLE",
98+
"upgradableDatabaseVersions": [
99+
{
100+
"displayName": "PostgreSQL 16",
101+
"majorVersion": "POSTGRES_16",
102+
"name": "POSTGRES_16"
103+
}
104+
]
105+
}

0 commit comments

Comments
 (0)