def make_request_new()

in footmark/connection.py [0:0]


    def make_request_new(self, params):
        if not params:
            raise Exception("Request parameters should not be empty.")

        conn = None
        if self.acs_access_key_id and self.acs_secret_access_key:
            conn = client.AcsClient(self.acs_access_key_id, self.acs_secret_access_key, self.region, user_agent=self.user_agent)
            if self.security_token:
                sts_token_credential = StsTokenCredential(self.access_key, self.secret_key, self.security_token)
                conn = client.AcsClient(region_id=self.region, user_agent=self.user_agent, credential=sts_token_credential)
        else:
            if self.ecs_role_name:
                ecs_ram_role_credential = EcsRamRoleCredential(self.ecs_role_name)
                conn = client.AcsClient(region_id=self.region, user_agent=self.user_agent, credential=ecs_ram_role_credential)

        if not conn:
            footmark.log.error('%s %s' % ('Null AcsClient ', conn))
            raise self.FootmarkClientError('Null AcsClient ', conn)

        timeout = 200
        delay = 3
        if not isinstance(params, dict):
            raise Exception("Invalid request parameters: {0} should be a dict.".format(params))

        if not params.get('Action', params.get('action')):
            raise Exception("'Action' is required for this request.")

        while timeout > 0:
            request = self.import_request(params.get('Action', params.get('action')))
            request.set_accept_format('json')
            request.set_read_timeout(30)
            request.set_connect_timeout(30)
            try:
                for k, v in list(params.items()):
                    if hasattr(request, k):
                        getattr(request, k)(v)
                    else:
                        request.add_query_param(k[4:], v)
                return conn.do_action_with_exception(request)
            except ServerException as e:
                if str(e.error_code) == "SDK.ServerUnreachable" \
                        or str(e.message).__contains__("SDK.ServerUnreachable") \
                        or str(e.message).__contains__("Unable to connect server: timed out"):
                    time.sleep(delay)
                    timeout -= delay
                    continue
                raise e
            except Exception as e:
                raise e

        return None