Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
docker-py
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
docker-py
Commits
a341aa2d
Kaydet (Commit)
a341aa2d
authored
Şub 27, 2015
tarafından
Joffrey F
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
Merge branch 'aanand-fix-resolve-authconfig'
üst
5ce02b9f
86390888
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
30 deletions
+29
-30
auth.py
docker/auth/auth.py
+17
-27
client.py
docker/client.py
+1
-2
utils_test.py
tests/utils_test.py
+11
-1
No files found.
docker/auth/auth.py
Dosyayı görüntüle @
a341aa2d
...
...
@@ -26,14 +26,6 @@ INDEX_URL = 'https://index.docker.io/v1/'
DOCKER_CONFIG_FILENAME
=
'.dockercfg'
def
swap_protocol
(
url
):
if
url
.
startswith
(
'http://'
):
return
url
.
replace
(
'http://'
,
'https://'
,
1
)
if
url
.
startswith
(
'https://'
):
return
url
.
replace
(
'https://'
,
'http://'
,
1
)
return
url
def
expand_registry_url
(
hostname
,
insecure
=
False
):
if
hostname
.
startswith
(
'http:'
)
or
hostname
.
startswith
(
'https:'
):
return
hostname
...
...
@@ -68,29 +60,27 @@ def resolve_repository_name(repo_name, insecure=False):
def
resolve_authconfig
(
authconfig
,
registry
=
None
):
"""Return the authentication data from the given auth configuration for a
specific registry. We'll do our best to infer the correct URL for the
registry, trying both http and https schemes. Returns an empty dictionnary
if no data exists."""
"""
Returns the authentication data from the given auth configuration for a
specific registry. As with the Docker client, legacy entries in the config
with full URLs are stripped down to hostnames before checking for a match.
Returns None if no match was found.
"""
# Default to the public index server
registry
=
registry
or
INDEX_URL
# If it's not the index server there are three cases:
#
# 1. this is a full config url -> it should be used as is
# 2. it could be a full url, but with the wrong protocol
# 3. it can be the hostname optionally with a port
#
# as there is only one auth entry which is fully qualified we need to start
# parsing and matching
if
'/v1/'
not
in
registry
:
registry
=
os
.
path
.
join
(
registry
,
'v1/'
)
if
not
registry
.
startswith
(
'http:'
)
and
not
registry
.
startswith
(
'https:'
):
registry
=
'https://'
+
registry
registry
=
convert_to_hostname
(
registry
)
if
registry
else
INDEX_URL
if
registry
in
authconfig
:
return
authconfig
[
registry
]
return
authconfig
.
get
(
swap_protocol
(
registry
),
None
)
for
key
,
config
in
six
.
iteritems
(
authconfig
):
if
convert_to_hostname
(
key
)
==
registry
:
return
config
return
None
def
convert_to_hostname
(
url
):
return
url
.
replace
(
'http://'
,
''
)
.
replace
(
'https://'
,
''
)
.
split
(
'/'
,
1
)[
0
]
def
encode_auth
(
auth_info
):
...
...
docker/client.py
Dosyayı görüntüle @
a341aa2d
...
...
@@ -627,8 +627,7 @@ class Client(requests.Session):
elif
not
self
.
_auth_configs
:
self
.
_auth_configs
=
auth
.
load_config
()
registry
=
auth
.
expand_registry_url
(
registry
,
insecure_registry
)
\
if
registry
else
auth
.
INDEX_URL
registry
=
registry
or
auth
.
INDEX_URL
authcfg
=
auth
.
resolve_authconfig
(
self
.
_auth_configs
,
registry
)
# If we found an existing auth config for this registry and username
...
...
tests/utils_test.py
Dosyayı görüntüle @
a341aa2d
...
...
@@ -104,7 +104,8 @@ class UtilsTest(unittest.TestCase):
def
test_resolve_authconfig
(
self
):
auth_config
=
{
'https://index.docker.io/v1/'
:
{
'auth'
:
'indexuser'
},
'http://my.registry.net/v1/'
:
{
'auth'
:
'privateuser'
}
'my.registry.net'
:
{
'auth'
:
'privateuser'
},
'http://legacy.registry.url/v1/'
:
{
'auth'
:
'legacyauth'
}
}
# hostname only
self
.
assertEqual
(
...
...
@@ -154,6 +155,15 @@ class UtilsTest(unittest.TestCase):
resolve_authconfig
(
auth_config
,
'http://my.registry.net/v1/'
),
{
'auth'
:
'privateuser'
}
)
# legacy entry in config
self
.
assertEqual
(
resolve_authconfig
(
auth_config
,
'legacy.registry.url'
),
{
'auth'
:
'legacyauth'
}
)
# no matching entry
self
.
assertTrue
(
resolve_authconfig
(
auth_config
,
'does.not.exist'
)
is
None
)
if
__name__
==
'__main__'
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment