Skip to content

Commit ba3e86f

Browse files
authored
Merge pull request #427 from qiniu/fix/set-default-host
fix set_default rs, rsf and customize uc when query bucket region
2 parents 253e9a3 + 7d0db75 commit ba3e86f

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

qiniu/config.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@
2121
'default_upload_threshold': 2 * _BLOCK_SIZE # put_file上传方式的临界默认值
2222
}
2323

24+
_is_customized_default = {
25+
'default_zone': False,
26+
'default_rs_host': False,
27+
'default_rsf_host': False,
28+
'default_api_host': False,
29+
'default_uc_host': False,
30+
'connection_timeout': False,
31+
'connection_retries': False,
32+
'connection_pool': False,
33+
'default_upload_threshold': False
34+
}
35+
36+
37+
def is_customized_default(key):
38+
return _is_customized_default[key]
39+
2440

2541
def get_default(key):
2642
return _config[key]
@@ -32,19 +48,28 @@ def set_default(
3248
default_rsf_host=None, default_api_host=None, default_upload_threshold=None):
3349
if default_zone:
3450
_config['default_zone'] = default_zone
51+
_is_customized_default['default_zone'] = True
3552
if default_rs_host:
3653
_config['default_rs_host'] = default_rs_host
54+
_is_customized_default['default_rs_host'] = True
3755
if default_rsf_host:
3856
_config['default_rsf_host'] = default_rsf_host
57+
_is_customized_default['default_rsf_host'] = True
3958
if default_api_host:
4059
_config['default_api_host'] = default_api_host
60+
_is_customized_default['default_api_host'] = True
4161
if default_uc_host:
4262
_config['default_uc_host'] = default_uc_host
63+
_is_customized_default['default_uc_host'] = True
4364
if connection_retries:
4465
_config['connection_retries'] = connection_retries
66+
_is_customized_default['connection_retries'] = True
4567
if connection_pool:
4668
_config['connection_pool'] = connection_pool
69+
_is_customized_default['connection_pool'] = True
4770
if connection_timeout:
4871
_config['connection_timeout'] = connection_timeout
72+
_is_customized_default['connection_timeout'] = True
4973
if default_upload_threshold:
5074
_config['default_upload_threshold'] = default_upload_threshold
75+
_is_customized_default['default_upload_threshold'] = True

qiniu/region.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,11 @@ def get_io_host(self, ak, bucket, home_dir=None):
6464
return io_hosts[0]
6565

6666
def get_rs_host(self, ak, bucket, home_dir=None):
67+
from .config import get_default, is_customized_default
6768
if self.rs_host:
6869
return self.rs_host
70+
if is_customized_default('default_rs_host'):
71+
return get_default('default_rs_host')
6972
if home_dir is None:
7073
home_dir = os.getcwd()
7174
bucket_hosts = self.get_bucket_hosts(ak, bucket, home_dir)
@@ -75,8 +78,11 @@ def get_rs_host(self, ak, bucket, home_dir=None):
7578
return rs_hosts[0]
7679

7780
def get_rsf_host(self, ak, bucket, home_dir=None):
81+
from .config import get_default, is_customized_default
7882
if self.rsf_host:
7983
return self.rsf_host
84+
if is_customized_default('default_rsf_host'):
85+
return get_default('default_rsf_host')
8086
if home_dir is None:
8187
home_dir = os.getcwd()
8288
bucket_hosts = self.get_bucket_hosts(ak, bucket, home_dir)
@@ -201,7 +207,11 @@ def host_cache_to_file(self, home_dir):
201207
f.close()
202208

203209
def bucket_hosts(self, ak, bucket):
204-
url = "{0}/v1/query?ak={1}&bucket={2}".format(UC_HOST, ak, bucket)
210+
from .config import get_default, is_customized_default
211+
uc_host = UC_HOST
212+
if is_customized_default('default_uc_host'):
213+
uc_host = get_default('default_uc_host')
214+
url = "{0}/v1/query?ak={1}&bucket={2}".format(uc_host, ak, bucket)
205215
ret = requests.get(url)
206216
data = compat.json.dumps(ret.json(), separators=(',', ':'))
207217
return data

test_qiniu.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,24 @@ def test_get_domain(self):
891891
assert info.status_code == 200
892892

893893

894+
class RegionTestCase(unittest.TestCase):
895+
test_rs_host = 'test.region.compatible.config.rs'
896+
test_rsf_host = 'test.region.compatible.config.rsf'
897+
898+
def test_config_compatible(self):
899+
try:
900+
set_default(default_rs_host=self.test_rs_host)
901+
set_default(default_rsf_host=self.test_rsf_host)
902+
zone = Zone()
903+
assert zone.get_rs_host("mock_ak", "mock_bucket") == self.test_rs_host
904+
assert zone.get_rsf_host("mock_ak", "mock_bucket") == self.test_rsf_host
905+
finally:
906+
set_default(default_rs_host=qiniu.config.RS_HOST)
907+
set_default(default_rsf_host=qiniu.config.RSF_HOST)
908+
qiniu.config._is_customized_default['default_rs_host'] = False
909+
qiniu.config._is_customized_default['default_rsf_host'] = False
910+
911+
894912
class ReadWithoutSeek(object):
895913
def __init__(self, str):
896914
self.str = str

0 commit comments

Comments
 (0)