56
56
UNIX_PATH_MAX = 108
57
57
58
58
# Time to sleep between active checks of the operation results
59
- TIME_TO_SLEEP_IN_SECONDS = 1
59
+ TIME_TO_SLEEP_IN_SECONDS = 20
60
60
61
61
62
62
class CloudSqlOperationStatus :
@@ -113,14 +113,13 @@ def get_instance(self, instance: str, project_id: Optional[str] = None) -> Dict:
113
113
:return: A Cloud SQL instance resource.
114
114
:rtype: dict
115
115
"""
116
- if not project_id :
117
- raise ValueError ("The project_id should be set" )
118
- return self .get_conn ().instances ().get ( # pylint: disable=no-member
116
+ return self .get_conn ().instances ().get ( # noqa # pylint: disable=no-member
119
117
project = project_id ,
120
118
instance = instance
121
119
).execute (num_retries = self .num_retries )
122
120
123
121
@CloudBaseHook .fallback_to_default_project_id
122
+ @CloudBaseHook .operation_in_progress_retry ()
124
123
def create_instance (self , body : Dict , project_id : Optional [str ] = None ) -> None :
125
124
"""
126
125
Creates a new Cloud SQL instance.
@@ -133,17 +132,16 @@ def create_instance(self, body: Dict, project_id: Optional[str] = None) -> None:
133
132
:type project_id: str
134
133
:return: None
135
134
"""
136
- if not project_id :
137
- raise ValueError ("The project_id should be set" )
138
- response = self .get_conn ().instances ().insert ( # pylint: disable=no-member
135
+ response = self .get_conn ().instances ().insert ( # noqa # pylint: disable=no-member
139
136
project = project_id ,
140
137
body = body
141
138
).execute (num_retries = self .num_retries )
142
139
operation_name = response ["name" ]
143
- self ._wait_for_operation_to_complete (project_id = project_id ,
140
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
144
141
operation_name = operation_name )
145
142
146
143
@CloudBaseHook .fallback_to_default_project_id
144
+ @CloudBaseHook .operation_in_progress_retry ()
147
145
def patch_instance (self , body : Dict , instance : str , project_id : Optional [str ] = None ) -> None :
148
146
"""
149
147
Updates settings of a Cloud SQL instance.
@@ -161,18 +159,17 @@ def patch_instance(self, body: Dict, instance: str, project_id: Optional[str] =
161
159
:type project_id: str
162
160
:return: None
163
161
"""
164
- if not project_id :
165
- raise ValueError ("The project_id should be set" )
166
- response = self .get_conn ().instances ().patch ( # pylint: disable=no-member
162
+ response = self .get_conn ().instances ().patch ( # noqa # pylint: disable=no-member
167
163
project = project_id ,
168
164
instance = instance ,
169
165
body = body
170
166
).execute (num_retries = self .num_retries )
171
167
operation_name = response ["name" ]
172
- self ._wait_for_operation_to_complete (project_id = project_id ,
168
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
173
169
operation_name = operation_name )
174
170
175
171
@CloudBaseHook .fallback_to_default_project_id
172
+ @CloudBaseHook .operation_in_progress_retry ()
176
173
def delete_instance (self , instance : str , project_id : Optional [str ] = None ) -> None :
177
174
"""
178
175
Deletes a Cloud SQL instance.
@@ -184,14 +181,12 @@ def delete_instance(self, instance: str, project_id: Optional[str] = None) -> No
184
181
:type instance: str
185
182
:return: None
186
183
"""
187
- if not project_id :
188
- raise ValueError ("The project_id should be set" )
189
- response = self .get_conn ().instances ().delete ( # pylint: disable=no-member
184
+ response = self .get_conn ().instances ().delete ( # noqa # pylint: disable=no-member
190
185
project = project_id ,
191
186
instance = instance ,
192
187
).execute (num_retries = self .num_retries )
193
188
operation_name = response ["name" ]
194
- self ._wait_for_operation_to_complete (project_id = project_id ,
189
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
195
190
operation_name = operation_name )
196
191
197
192
@CloudBaseHook .fallback_to_default_project_id
@@ -210,15 +205,14 @@ def get_database(self, instance: str, database: str, project_id: Optional[str] =
210
205
https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/databases#resource.
211
206
:rtype: dict
212
207
"""
213
- if not project_id :
214
- raise ValueError ("The project_id should be set" )
215
- return self .get_conn ().databases ().get ( # pylint: disable=no-member
208
+ return self .get_conn ().databases ().get ( # noqa # pylint: disable=no-member
216
209
project = project_id ,
217
210
instance = instance ,
218
211
database = database
219
212
).execute (num_retries = self .num_retries )
220
213
221
214
@CloudBaseHook .fallback_to_default_project_id
215
+ @CloudBaseHook .operation_in_progress_retry ()
222
216
def create_database (self , instance : str , body : Dict , project_id : Optional [str ] = None ) -> None :
223
217
"""
224
218
Creates a new database inside a Cloud SQL instance.
@@ -233,18 +227,17 @@ def create_database(self, instance: str, body: Dict, project_id: Optional[str] =
233
227
:type project_id: str
234
228
:return: None
235
229
"""
236
- if not project_id :
237
- raise ValueError ("The project_id should be set" )
238
- response = self .get_conn ().databases ().insert ( # pylint: disable=no-member
230
+ response = self .get_conn ().databases ().insert ( # noqa # pylint: disable=no-member
239
231
project = project_id ,
240
232
instance = instance ,
241
233
body = body
242
234
).execute (num_retries = self .num_retries )
243
235
operation_name = response ["name" ]
244
- self ._wait_for_operation_to_complete (project_id = project_id ,
236
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
245
237
operation_name = operation_name )
246
238
247
239
@CloudBaseHook .fallback_to_default_project_id
240
+ @CloudBaseHook .operation_in_progress_retry ()
248
241
def patch_database (
249
242
self ,
250
243
instance : str ,
@@ -270,19 +263,18 @@ def patch_database(
270
263
:type project_id: str
271
264
:return: None
272
265
"""
273
- if not project_id :
274
- raise ValueError ("The project_id should be set" )
275
- response = self .get_conn ().databases ().patch ( # pylint: disable=no-member
266
+ response = self .get_conn ().databases ().patch ( # noqa # pylint: disable=no-member
276
267
project = project_id ,
277
268
instance = instance ,
278
269
database = database ,
279
270
body = body
280
271
).execute (num_retries = self .num_retries )
281
272
operation_name = response ["name" ]
282
- self ._wait_for_operation_to_complete (project_id = project_id ,
273
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
283
274
operation_name = operation_name )
284
275
285
276
@CloudBaseHook .fallback_to_default_project_id
277
+ @CloudBaseHook .operation_in_progress_retry ()
286
278
def delete_database (self , instance : str , database : str , project_id : Optional [str ] = None ) -> None :
287
279
"""
288
280
Deletes a database from a Cloud SQL instance.
@@ -296,18 +288,17 @@ def delete_database(self, instance: str, database: str, project_id: Optional[str
296
288
:type project_id: str
297
289
:return: None
298
290
"""
299
- if not project_id :
300
- raise ValueError ("The project_id should be set" )
301
- response = self .get_conn ().databases ().delete ( # pylint: disable=no-member
291
+ response = self .get_conn ().databases ().delete ( # noqa # pylint: disable=no-member
302
292
project = project_id ,
303
293
instance = instance ,
304
294
database = database
305
295
).execute (num_retries = self .num_retries )
306
296
operation_name = response ["name" ]
307
- self ._wait_for_operation_to_complete (project_id = project_id ,
297
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
308
298
operation_name = operation_name )
309
299
310
300
@CloudBaseHook .fallback_to_default_project_id
301
+ @CloudBaseHook .operation_in_progress_retry ()
311
302
def export_instance (self , instance : str , body : Dict , project_id : Optional [str ] = None ) -> None :
312
303
"""
313
304
Exports data from a Cloud SQL instance to a Cloud Storage bucket as a SQL dump
@@ -324,21 +315,14 @@ def export_instance(self, instance: str, body: Dict, project_id: Optional[str] =
324
315
:type project_id: str
325
316
:return: None
326
317
"""
327
- if not project_id :
328
- raise ValueError ("The project_id should be set" )
329
- try :
330
- response = self .get_conn ().instances ().export ( # pylint: disable=no-member
331
- project = project_id ,
332
- instance = instance ,
333
- body = body
334
- ).execute (num_retries = self .num_retries )
335
- operation_name = response ["name" ]
336
- self ._wait_for_operation_to_complete (project_id = project_id ,
337
- operation_name = operation_name )
338
- except HttpError as ex :
339
- raise AirflowException (
340
- 'Exporting instance {} failed: {}' .format (instance , ex .content )
341
- )
318
+ response = self .get_conn ().instances ().export ( # noqa # pylint: disable=no-member
319
+ project = project_id ,
320
+ instance = instance ,
321
+ body = body
322
+ ).execute (num_retries = self .num_retries )
323
+ operation_name = response ["name" ]
324
+ self ._wait_for_operation_to_complete (project_id = project_id , # type:ignore
325
+ operation_name = operation_name )
342
326
343
327
@CloudBaseHook .fallback_to_default_project_id
344
328
def import_instance (self , instance : str , body : Dict , project_id : Optional [str ] = None ) -> None :
@@ -357,16 +341,14 @@ def import_instance(self, instance: str, body: Dict, project_id: Optional[str] =
357
341
:type project_id: str
358
342
:return: None
359
343
"""
360
- if not project_id :
361
- raise ValueError ("The project_id should be set" )
362
344
try :
363
- response = self .get_conn ().instances ().import_ ( # pylint: disable=no-member
345
+ response = self .get_conn ().instances ().import_ ( # noqa # pylint: disable=no-member
364
346
project = project_id ,
365
347
instance = instance ,
366
348
body = body
367
349
).execute (num_retries = self .num_retries )
368
350
operation_name = response ["name" ]
369
- self ._wait_for_operation_to_complete (project_id = project_id ,
351
+ self ._wait_for_operation_to_complete (project_id = project_id , # type: ignore
370
352
operation_name = operation_name )
371
353
except HttpError as ex :
372
354
raise AirflowException (
@@ -388,7 +370,7 @@ def _wait_for_operation_to_complete(self, project_id: str, operation_name: str)
388
370
raise ValueError ("The project_id should be set" )
389
371
service = self .get_conn ()
390
372
while True :
391
- operation_response = service .operations ().get ( # pylint: disable=no-member
373
+ operation_response = service .operations ().get ( # noqa # pylint: disable=no-member
392
374
project = project_id ,
393
375
operation = operation_name ,
394
376
).execute (num_retries = self .num_retries )
0 commit comments