in src/run.py [0:0]
def _handle_errors(self, policy: Policy):
name, region = policy.name, PoliciesLoader.get_policy_region(policy)
try:
self._call_policy(policy)
except ClientError as error:
error_code = error.response.get('Error', {}).get('Code')
error_reason = error.response.get('Error', {}).get('Message')
if error_code in ACCESS_DENIED_ERROR_CODE.get(self.cloud):
_LOG.warning(f'Policy \'{name}\' is skipped. '
f'Reason: \'{error_reason}\'')
self._add_failed(
region=region, policy=name,
error_type=PolicyErrorType.ACCESS,
message=error_reason
)
elif error_code in INVALID_CREDENTIALS_ERROR_CODES.get(self.cloud):
_LOG.warning(
f'Policy \'{name}\' is skipped due to invalid '
f'credentials. All the subsequent rules will be skipped')
self._add_failed(
region=region, policy=name,
error_type=PolicyErrorType.CREDENTIALS,
message=error_reason
)
self._is_ongoing = False
self._error_type = PolicyErrorType.CREDENTIALS
self._message = error_reason
else:
_LOG.warning(f'Policy \'{name}\' has failed. '
f'Client error occurred. '
f'Code: \'{error_code}\'. '
f'Reason: {error_reason}')
self._add_failed(
region=region, policy=name,
error_type=PolicyErrorType.CLIENT,
exception=error
)
except Exception as error:
_LOG.exception(f'Policy {name} has failed with unexpected error')
self._add_failed(
region=region, policy=name,
error_type=PolicyErrorType.INTERNAL,
exception=error
)