Skip to content

Commit 50b5a79

Browse files
committed
fix: add actionable errors for GCE long running operations
1 parent 6acb3a9 commit 50b5a79

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

google/api_core/exceptions.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,19 @@ def __init__(self, message, errors=(), details=(), response=None, error_info=Non
142142
self._error_info = error_info
143143

144144
def __str__(self):
145+
error_msg = "{} {}".format(self.code, self.message)
145146
if self.details:
146-
return "{} {} {}".format(self.code, self.message, self.details)
147+
error_msg = f"{error_msg} {self.details}"
147148
else:
148-
return "{} {}".format(self.code, self.message)
149+
if self.errors:
150+
errors = [
151+
f"{error.code}: {error.message}"
152+
for error in self.errors
153+
if hasattr(error, "code") and hasattr(error, "message")
154+
]
155+
if len(errors) > 0:
156+
error_msg.append("\n".join(errors))
157+
return error_msg
149158

150159
@property
151160
def reason(self):

google/api_core/extended_operation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,14 @@ def _handle_refreshed_operation(self):
158158
return
159159

160160
if self.error_code and self.error_message:
161+
errors = []
162+
if hasattr(self, "error") and hasattr(self.error, "errors"):
163+
errors = self.error.errors
161164
exception = exceptions.from_http_status(
162165
status_code=self.error_code,
163166
message=self.error_message,
164167
response=self._extended_operation,
168+
errors=errors,
165169
)
166170
self.set_exception(exception)
167171
elif self.error_code or self.error_message:

0 commit comments

Comments
 (0)