%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/utils/ |
Current File : //usr/lib/python2.7/site-packages/salt/utils/iam.py |
# -*- coding: utf-8 -*- ''' Connection library for Amazon IAM :depends: requests ''' from __future__ import absolute_import, unicode_literals # Import Python libs import logging import time import pprint import salt.utils.data from salt.ext.six.moves import range from salt.ext import six try: import requests HAS_REQUESTS = True # pylint: disable=W0612 except ImportError: HAS_REQUESTS = False # pylint: disable=W0612 log = logging.getLogger(__name__) def _retry_get_url(url, num_retries=10, timeout=5): ''' Retry grabbing a URL. Based heavily on boto.utils.retry_url ''' for i in range(0, num_retries): try: result = requests.get(url, timeout=timeout, proxies={'http': ''}) if hasattr(result, 'text'): return result.text elif hasattr(result, 'content'): return result.content else: return '' except requests.exceptions.HTTPError as exc: return '' except Exception as exc: pass log.warning( 'Caught exception reading from URL. Retry no. %s', i ) log.warning(pprint.pformat(exc)) time.sleep(2 ** i) log.error( 'Failed to read from URL for %s times. Giving up.', num_retries ) return '' def _convert_key_to_str(key): ''' Stolen completely from boto.providers ''' # IMPORTANT: on PY2, the secret key must be str and not unicode to work # properly with hmac.new (see http://bugs.python.org/issue5285) # # pylint: disable=incompatible-py3-code return salt.utils.data.encode(key) \ if six.PY2 and isinstance(key, unicode) \ else key # pylint: enable=incompatible-py3-code