示例#1
0
 def _init_regional_endpoint_data(self, obj):
     if "regional_endpoints" not in obj:
         return
     self._regional_endpoint_data = obj["regional_endpoints"]
     for code, product_data in iteritems(obj["regional_endpoints"]):
         for region_id, endpoint in iteritems(product_data):
             self.put_endpoint_entry(
                 self._make_endpoint_entry_key(code, region_id), endpoint)
 def _build_canonical_headers(headers, header_begin):
     """
     alibabacloud headers
     :param headers:
     :param header_begin:
     :return:
     """
     result = ""
     unsort_map = dict()
     for (key, value) in iteritems(headers):
         if key.lower().find(header_begin) >= 0:
             unsort_map[key.lower()] = value
     sort_map = sorted(iteritems(unsort_map), key=lambda d: d[0])
     for (key, value) in sort_map:
         result += key + ":" + value
         result += "\n"
     return result
示例#3
0
def _handle_param_aliases(params, aliases):
    for key, value in iteritems(aliases):
        if key in params:
            if value in params:
                raise ClientException(
                    msg="Param {0} is already set.".format(value))
            params[value] = params[key]
            del params[key]
    def _init_global_endpoint_data(self, obj):
        if "global_endpoints" not in obj:
            return

        global_endpoints = obj["global_endpoints"]
        for location_service_code, endpoint in iteritems(global_endpoints):
            self.put_endpoint_entry(
                self._make_endpoint_entry_key(location_service_code), endpoint)
 def _replace_occupied_parameters(self):
     uri_pattern = copy.deepcopy(self.request.uri_pattern)
     paths = self.request.path_params
     result = uri_pattern
     if paths:
         for (key, value) in iteritems(paths):
             target = "[" + key + "]"
             result = result.replace(target, value)
     return result
 def status_verify(self, instance):
     client = alibabacloud.get_client(service_name='ecs', access_key_id=self.access_key_id,
                                      access_key_secret=self.access_key_secret,
                                      region_id=self.region_id)
     response = client.describe_instances(instance_ids=json.dumps([instance.instance_id]))
     obj = response['Instances']['Instance'][0]
     for key, value in iteritems(obj):
         attr_name = self._convert_camel_to_snake(key)
         self.assertTrue(hasattr(instance, attr_name), "instance has no " + attr_name)
         self.assertEqual(obj[key], getattr(instance, attr_name))
def request_helper(client, request, **params):
    for key, value in iteritems(params):
        set_name = 'set_' + key
        if hasattr(request, set_name):
            func = getattr(request, set_name)
            func(value)
        else:
            raise Exception("{0} has no parameter named {1}.".format(
                request.__class__.__name__, key))
    response = client.do_action_with_exception(request)
    return json.loads(response.decode('utf-8'))
示例#8
0
def _param_expand_to_json(params, rules, singular=True):
    for key, value in iteritems(rules):
        # key is like: instance_id or instance_ids
        # value is like: InstanceIds
        if key in params:
            if singular:
                to_add = [params[key]]
            else:
                to_add = params[key]
                _assert_is_list_but_not_string(to_add, key)
            del params[key]

            if value in params:
                raise ClientException(
                    msg="Param {0} is already set.".format(value))
            params[value] = json.dumps(to_add)
 def _build_canonical_resource(uri, queries):
     """
     resource and params
     :param uri:
     :param queries:
     :return:
     """
     uri_parts = uri.rsplit("?", 1)
     if len(uri_parts) > 1 and uri_parts[1] is not None:
         queries[uri_parts[1]] = None
     query_builder = uri_parts[0]
     sorted_map = sorted(iteritems(queries), key=lambda queries: queries[0])
     if len(sorted_map) > 0:
         query_builder += "?"
     for (k, v) in sorted_map:
         query_builder += k
         if v is not None:
             query_builder += "="
             query_builder += str(v)
         query_builder += "&"
     if query_builder.endswith("&"):
         query_builder = query_builder[0:(len(query_builder) - 1)]
     return query_builder
 def _calc_signature(self, method, params):
     sorted_parameters = sorted(iteritems(params), key=lambda queries: queries[0])
     sorted_query_string = self._pop_standard_urlencode(urlencode(sorted_parameters))
     canonicalized_query_string = self._pop_standard_urlencode(pathname2url(sorted_query_string))
     string_to_sign = method + "&%2F&" + canonicalized_query_string
     return string_to_sign
 def _assign_attributes(self, attrs):
     for key, value in iteritems(attrs):
         setattr(self, _convert_name_from_camel_case_to_snake_case(key),
                 value)