Skip to content

Commit 2d77c20

Browse files
author
wallisyan
committed
modify test
1 parent 91d3d84 commit 2d77c20

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1863
-935
lines changed

a

Lines changed: 0 additions & 1 deletion
This file was deleted.

aliyun-python-sdk-core/alibabacloud/client.py

Lines changed: 26 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,20 @@
2424
from alibabacloud.handlers.retry_handler import RetryHandler
2525
from alibabacloud.handlers.server_error_handler import ServerErrorHandler
2626
from alibabacloud.handlers.http_handler import HttpHandler
27+
from alibabacloud.request import HTTPRequest
28+
import alibabacloud.retry.retry_policy as retry_policy
2729

2830

2931
DEFAULT_HANDLERS = [
30-
PrepareHandler,
31-
32-
CredentialsHandler,
33-
SignerHandler,
34-
TimeoutConfigReader,
35-
LogHandler,
36-
EndpointHandler,
37-
38-
RetryHandler,
39-
ServerErrorHandler,
40-
HttpHandler,
32+
PrepareHandler(),
33+
CredentialsHandler(),
34+
SignerHandler(),
35+
TimeoutConfigReader(),
36+
LogHandler(),
37+
EndpointHandler(),
38+
RetryHandler(),
39+
ServerErrorHandler(),
40+
HttpHandler(),
4141
]
4242

4343
DEFAULT_FORMAT = 'JSON'
@@ -66,7 +66,7 @@ def __init__(self, access_key_id=None, access_key_secret=None, region_id=None,
6666
http_proxy=None, https_proxy=None, enable_stream_logger=None,
6767
profile_name=None, config_file=None, enable_retry=True, endpoint=None):
6868

69-
# credentials部分会用到
69+
# credentials
7070
self.access_key_id = access_key_id
7171
self.access_key_secret = access_key_secret
7272
self.region_id = region_id
@@ -88,7 +88,7 @@ def __init__(self, access_key_id=None, access_key_secret=None, region_id=None,
8888
self.enable_stream_logger = enable_stream_logger
8989
# credentials 的profile
9090
self.profile_name = profile_name
91-
# 读取配置文件
91+
# config file
9292
self.config_file = config_file
9393
self.enable_http_debug = enable_http_debug # http-debug 只从环境变量获取,不设置开关
9494
# proxy provider两个: client env
@@ -163,6 +163,10 @@ def get_merged_client_config(config):
163163
class AlibabaCloudClient:
164164

165165
def __init__(self, client_config, credentials_provider):
166+
self.product_code = None
167+
self.location_service_code = None
168+
self.product_version = None
169+
self.location_endpoint_type = None
166170
# client_config:传入的ClientConfig
167171

168172
self.config = get_merged_client_config(client_config)
@@ -178,12 +182,6 @@ def __init__(self, client_config, credentials_provider):
178182
from alibabacloud.endpoint.default_endpoint_resolver import DefaultEndpointResolver
179183

180184
self.endpoint_resolver = DefaultEndpointResolver(self.config) # TODO initialize
181-
self.product_code = None
182-
self.location_service_code = None
183-
self.product_version = None
184-
self.location_endpoint_type = None
185-
186-
import alibabacloud.retry.retry_policy as retry_policy
187185
# retry
188186
if self.config.enable_retry:
189187
self.retry_policy = retry_policy.get_default_retry_policy(
@@ -193,63 +191,22 @@ def __init__(self, client_config, credentials_provider):
193191

194192
def _handle_request(self, api_request, _raise_exception=True):
195193
# handle context
196-
context = RequestContext()
197-
context.api_request = api_request
198-
from .request import HTTPRequest
199-
context.http_request = HTTPRequest()
200-
context.config = self.config
201-
202-
context.client = self
203-
194+
context = RequestContext(api_request=api_request, http_request=HTTPRequest(),
195+
config=self.config, client=self)
204196
handler_index = 0
205-
206197
while True:
207-
for i in range(len(self.handlers[handler_index:])):
208-
self.handlers[i]().handle_request(context)
198+
for handler in self.handlers[handler_index:]:
199+
handler.handle_request(context)
209200

210-
for i in reversed(range(len(self.handlers[handler_index:]))):
211-
self.handlers[i]().handle_response(context)
201+
for handler in reversed(self.handlers[handler_index:]):
202+
handler.handle_response(context)
212203
if context.retry_flag:
213204
time.sleep(context.retry_backoff / 1000)
214-
handler_index = i
205+
handler_index = self.handlers.index(handler)
215206
break
216-
207+
if not context.retry_flag:
208+
break
217209
if context.exception and _raise_exception:
218210
raise context.exception
219211

220212
return context
221-
222-
223-
class ECSClient(AlibabaCloudClient):
224-
225-
def __init__(self):
226-
self.product = 'Ecs'
227-
self.location_service_code = 'ecs'
228-
self.location_endpoint_type = 'OpenAPI'
229-
230-
def create_instance(self, instance_name=None, instance_id=None):
231-
api_request = APIRequest(action_name, method, protocol, style)
232-
api_request._params['InstanceName'] = instance_name
233-
return self._handle_request(api_request).result
234-
235-
def delete_instance(self, **params):
236-
api_request = APIRequest(**params)
237-
return self._handle_request(api_request).result
238-
239-
240-
class OTSClient(AlibabaCloudClient):
241-
242-
def create_table(self, **params):
243-
api_request = APIRequest(**params)
244-
return self._handle_request(api_request).result
245-
246-
247-
class STSClient(AlibabaCloudClient):
248-
def __init__(self):
249-
self.product = 'Sts'
250-
self.location_service_code = 'sts'
251-
self.location_endpoint_type = 'OpenAPI'
252-
# AlibabaCloudClient.__init__(self)
253-
254-
def handle_request(self, request, config):
255-
self._handle_request(request, _config=config, _raise_exception=True)

aliyun-python-sdk-core/alibabacloud/handlers/__init__.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,17 @@
1515

1616
class RequestContext:
1717

18-
def __init__(self):
19-
self.api_request = None
20-
self.http_request = None
21-
self.api_response = None
22-
self.http_response = None
23-
self.exception = None
24-
self.retry_flag = False
25-
self.retry_backoff = 0
18+
def __init__(self, api_request=None, http_request=None, api_response=None, http_response=None,
19+
exception=None, retry_flag=True, retry_backoff=0, config=None, client=None):
20+
self.api_request = api_request
21+
self.http_request = http_request
22+
self.api_response = api_response
23+
self.http_response = http_response
24+
self.exception = exception
25+
self.config = config
26+
self.client = client
27+
self.retry_flag = retry_flag
28+
self.retry_backoff = retry_backoff
2629

2730

2831
class RequestHandler:

aliyun-python-sdk-core/alibabacloud/handlers/endpoint_handler.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ class EndpointHandler(RequestHandler):
2020

2121
def handle_request(self, context):
2222
if context.api_request.endpoint is not None:
23-
print()
2423
context.endpoint = context.api_request.endpoint
2524
else:
2625
resolve_request = ResolveEndpointRequest(

aliyun-python-sdk-core/alibabacloud/handlers/http_handler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ def handle_response(self, context):
2727

2828
def _do_request(self, context):
2929
http_request = context.http_request
30+
# modify retry flag
31+
context.retry_flag = False
32+
3033
with Session() as s:
3134
current_protocol = 'http://' if http_request.protocol.lower() == 'http' else 'https://'
3235
url = current_protocol + context.endpoint + http_request.params

aliyun-python-sdk-core/alibabacloud/handlers/retry_handler.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,11 @@ def handle_response(self, context):
3838

3939
should_retry = context.client.retry_policy.should_retry(retry_policy_context)
4040

41-
# if should_retry & RetryCondition.SHOULD_RETRY:
4241
if should_retry & RetryCondition.NO_RETRY:
4342
context.retry_flag = False
44-
if context.exception:
45-
raise context.exception
4643
else:
4744
retry_policy_context.retryable = should_retry
48-
4945
context.http_request.retries += 1
50-
print('context.http_request.retries', context.http_request.retries)
5146
context.retry_flag = True
5247
context.retry_backoff = context.client.retry_policy.compute_delay_before_next_retry(
5348
retry_policy_context
@@ -56,9 +51,9 @@ def handle_response(self, context):
5651
@staticmethod
5752
def _add_request_client_token(request):
5853
# TODO implement: add a ClientToken parameter on api_request
59-
if hasattr(request, "set_ClientToken") and hasattr(request, "get_ClientToken"):
60-
client_token = request.get_ClientToken()
61-
if not client_token:
62-
# ClientToken has not been set
63-
client_token = alibabacloud.utils.parameter_helper.get_uuid() # up to 60 chars
64-
request.set_ClientToken(client_token)
54+
# 新的接口不确定body还是query获取到ClientToken
55+
client_token = request.params.get('ClientToken')
56+
if not client_token:
57+
# ClientToken has not been set
58+
client_token = alibabacloud.utils.parameter_helper.get_uuid() # up to 60 chars
59+
request.set_ClientToken(client_token)

aliyun-python-sdk-core/alibabacloud/handlers/server_error_handler.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,6 @@ def handle_response(self, context):
4242
special_error_codes = ['IncompleteSignature', 'SignatureDoesNotMatch']
4343
if response.status_code == codes.BAD_REQUEST and \
4444
server_error_code in special_error_codes:
45-
# FIXME fix 了一个bug 关于roa 返回签名带时间的问题
46-
with open('a', 'w')as f:
47-
f.write(http_request.signature)
48-
with open('b', 'w')as f:
49-
f.write(server_error_message.split(':', 1)[1])
5045
if http_request.signature == server_error_message.split(':', 1)[1]:
5146
server_error_code = 'InvalidAccessKeySecret'
5247
server_error_message = 'The AccessKeySecret is incorrect. ' \

aliyun-python-sdk-core/alibabacloud/request.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ def __init__(self, accept_format=None, method=None, protocol=None, proxy=None,
6060
body="", enable_retry=None, max_retry_times=None, retries=0, credentials=None):
6161

6262
self.accept_format = accept_format
63-
# TODO, request.body 必须是json
6463
self.body = body
6564
self.method = method
6665
self.protocol = protocol

aliyun-python-sdk-core/alibabacloud/signer/composer.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from aliyunsdkcore.vendored.six import iteritems
2424
from aliyunsdkcore.vendored.six.moves.urllib.request import pathname2url
2525
from aliyunsdkcore.compat import urlencode
26+
from aliyunsdkcore.acs_exception.exceptions import ClientException
2627
from alibabacloud.utils.parameter_helper import md5_sum
2728

2829
FORMAT_ISO_8601 = "%Y-%m-%dT%H:%M:%SZ"
@@ -53,6 +54,9 @@ def __init__(self, credentials, api_request, region_id, version, signer=None):
5354
self._uri = self._replace_occupied_parameters()
5455

5556
def _prepare_params_headers(self):
57+
if self.credentials is None:
58+
raise ClientException('Credentials Error', 'Unable to locate credentials.')
59+
5660
headers = self.request.headers
5761
headers['x-acs-version'] = self.version
5862

@@ -215,8 +219,7 @@ def _calc_signature(self, method, params):
215219

216220
def _canonicalized_query_string(self):
217221
if self.credentials is None:
218-
pass
219-
# raise NoCredentialsError
222+
raise ClientException('Credentials Error', 'Unable to locate credentials.')
220223
parameters = self.request.query_params
221224
if parameters is None:
222225
parameters = {}

aliyun-python-sdk-core/aliyunsdkcore/vendored/requests/adapters.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,6 @@ def send(self, request, stream=False, timeout=None, verify=True, cert=None, prox
490490
raise ConnectionError(err, request=request)
491491

492492
except MaxRetryError as e:
493-
print(11111111111111111, e.reason)
494493
if isinstance(e.reason, ConnectTimeoutError):
495494
# TODO: Remove this in 3.0.0: see #2811
496495
if not isinstance(e.reason, NewConnectionError):

0 commit comments

Comments
 (0)