Exemple #1
0
def json_decode_template_body(parsed, **kwargs):
    if 'TemplateBody' in parsed:
        try:
            value = json.loads(parsed['TemplateBody'])
            parsed['TemplateBody'] = value
        except (ValueError, TypeError):
            logger.debug('error loading JSON', exc_info=True)
Exemple #2
0
def json_decode_template_body(parsed, **kwargs):
    if 'TemplateBody' in parsed:
        try:
            value = json.loads(parsed['TemplateBody'])
            parsed['TemplateBody'] = value
        except (ValueError, TypeError):
            logger.debug('error loading JSON', exc_info=True)
Exemple #3
0
    def load_file(self, file_path):
        """Attempt to load the file path.

        :type file_path: str
        :param file_path: The full path to the file to load without
            the '.json' extension.

        :return: The loaded data if it exists, otherwise None.

        """
        full_path = file_path + '.json'
        if not os.path.isfile(full_path):
            return

        # By default the file will be opened with locale encoding on Python 3.
        # We specify "utf8" here to ensure the correct behavior.
        with open(full_path, 'rb') as fp:
            payload = fp.read().decode('utf-8')
            return json.loads(payload, object_pairs_hook=OrderedDict)
Exemple #4
0
 def retrieve_iam_role_credentials(self):
     data = {}
     url = self._url
     timeout = self._timeout
     num_attempts = self._num_attempts
     try:
         r = self._get_request(url, timeout, num_attempts)
         if r.content:
             fields = r.content.decode('utf-8').split('\n')
             for field in fields:
                 if field.endswith('/'):
                     data[field[0:-1]] = self.retrieve_iam_role_credentials(
                         url + field, timeout, num_attempts)
                 else:
                     val = self._get_request(
                         url + field,
                         timeout=timeout,
                         num_attempts=num_attempts).content.decode('utf-8')
                     if val[0] == '{':
                         val = json.loads(val)
                     data[field] = val
         else:
             logger.debug(
                 "Metadata service returned non 200 status code "
                 "of %s for url: %s, content body: %s", r.status_code, url,
                 r.content)
     except _RetriesExceededError:
         logger.debug(
             "Max number of attempts exceeded (%s) when "
             "attempting to retrieve data from metadata service.",
             num_attempts)
     # We sort for stable ordering. In practice, this should only consist
     # of one role, but may need revisiting if this expands in the future.
     final_data = {}
     for role_name in sorted(data):
         final_data = {
             'role_name': role_name,
             'access_key': data[role_name]['AccessKeyId'],
             'secret_key': data[role_name]['SecretAccessKey'],
             'token': data[role_name]['Token'],
             'expiry_time': data[role_name]['Expiration'],
         }
     return final_data
Exemple #5
0
    def load_file(self, file_path):
        """Attempt to load the file path.

        :type file_path: str
        :param file_path: The full path to the file to load without
            the '.json' extension.

        :return: The loaded data if it exists, otherwise None.

        """
        full_path = file_path + '.json'
        if not os.path.isfile(full_path):
            return

        # By default the file will be opened with locale encoding on Python 3.
        # We specify "utf8" here to ensure the correct behavior.
        with open(full_path, 'rb') as fp:
            payload = fp.read().decode('utf-8')
            return json.loads(payload, object_pairs_hook=OrderedDict)
Exemple #6
0
def switch_host_with_param(request, param_name):
    """Switches the host using a parameter value from a JSON request body"""
    request_json = json.loads(request.data.decode('utf-8'))
    if request_json.get(param_name):
        new_endpoint = request_json[param_name]
        _switch_hosts(request, new_endpoint)
Exemple #7
0
def decode_quoted_jsondoc(value):
    try:
        value = json.loads(unquote(value))
    except (ValueError, TypeError):
        logger.debug('Error loading quoted JSON', exc_info=True)
    return value
Exemple #8
0
def decode_quoted_jsondoc(value):
    try:
        value = json.loads(unquote(value))
    except (ValueError, TypeError):
        logger.debug('Error loading quoted JSON', exc_info=True)
    return value