Merge branch 'auth-load-config-fix' of github.com:mpetazzoni/docker-py into mpetazzoni-auth-load-config-fix

This commit is contained in:
shin- 2013-11-08 20:38:01 +01:00
commit 1d1395464c
2 changed files with 39 additions and 27 deletions

View File

@ -98,33 +98,36 @@ def encode_header(auth):
def load_config(root=None):
if root is None:
root = os.environ['HOME']
config_file = {
root = root or os.environ['HOME']
config = {
'Configs': {},
'rootPath': root
}
f = open(os.path.join(root, '.dockercfg'))
try:
config_file['Configs'] = json.load(f)
for k, conf in six.iteritems(config_file['Configs']):
conf['Username'], conf['Password'] = decode_auth(conf['auth'])
del conf['auth']
config_file['Configs'][k] = conf
except Exception:
f.seek(0)
buf = []
for line in f:
k, v = line.split(' = ')
buf.append(v)
if len(buf) < 2:
raise Exception("The Auth config file is empty")
user, pwd = decode_auth(buf[0])
config_file['Configs'][INDEX_URL] = {
'Username': user,
'Password': pwd,
'Email': buf[1]
}
finally:
f.close()
return config_file
config_file = os.path.join(root, '.dockercfg')
if not os.path.exists(config_file):
return config
with open(config_file) as f:
try:
config['Configs'] = json.load(f)
for k, conf in six.iteritems(config['Configs']):
conf['Username'], conf['Password'] = decode_auth(conf['auth'])
del conf['auth']
config['Configs'][k] = conf
except Exception:
f.seek(0)
buf = []
for line in f:
k, v = line.split(' = ')
buf.append(v)
if len(buf) < 2:
raise Exception("The Auth config file is empty")
user, pwd = decode_auth(buf[0])
config['Configs'][INDEX_URL] = {
'Username': user,
'Password': pwd,
'Email': buf[1]
}
return config

View File

@ -521,6 +521,15 @@ class DockerClientTest(unittest.TestCase):
## PY SPECIFIC TESTS ##
#######################
def test_load_config_no_file(self):
folder = tempfile.mkdtemp()
cfg = docker.auth.load_config(folder)
self.assertTrue(cfg is not None)
self.assertIn('Configs', cfg)
self.assertEquals(cfg['Configs'], {})
self.assertIn('rootPath', cfg)
self.assertEquals(cfg['rootPath'], folder)
def test_load_config(self):
folder = tempfile.mkdtemp()
f = open(os.path.join(folder, '.dockercfg'), 'w')