mirror of https://github.com/docker/docker-py.git
Add optional auth config to docker push
Signed-off-by: Keerthan Reddy Mala <kmala@deis.com>
This commit is contained in:
parent
01cb969215
commit
9b63bed6a0
|
@ -205,7 +205,7 @@ class ImageApiMixin(object):
|
||||||
return self._result(response)
|
return self._result(response)
|
||||||
|
|
||||||
def push(self, repository, tag=None, stream=False,
|
def push(self, repository, tag=None, stream=False,
|
||||||
insecure_registry=False, decode=False):
|
insecure_registry=False, auth_config=None, decode=False):
|
||||||
if insecure_registry:
|
if insecure_registry:
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
INSECURE_REGISTRY_DEPRECATION_WARNING.format('push()'),
|
INSECURE_REGISTRY_DEPRECATION_WARNING.format('push()'),
|
||||||
|
@ -224,15 +224,22 @@ class ImageApiMixin(object):
|
||||||
if utils.compare_version('1.5', self._version) >= 0:
|
if utils.compare_version('1.5', self._version) >= 0:
|
||||||
# If we don't have any auth data so far, try reloading the config
|
# If we don't have any auth data so far, try reloading the config
|
||||||
# file one more time in case anything showed up in there.
|
# file one more time in case anything showed up in there.
|
||||||
if not self._auth_configs:
|
if auth_config is None:
|
||||||
self._auth_configs = auth.load_config()
|
log.debug('Looking for auth config')
|
||||||
authcfg = auth.resolve_authconfig(self._auth_configs, registry)
|
if not self._auth_configs:
|
||||||
|
log.debug(
|
||||||
# Do not fail here if no authentication exists for this specific
|
"No auth config in memory - loading from filesystem"
|
||||||
# registry as we can have a readonly pull. Just put the header if
|
)
|
||||||
# we can.
|
self._auth_configs = auth.load_config()
|
||||||
if authcfg:
|
authcfg = auth.resolve_authconfig(self._auth_configs, registry)
|
||||||
headers['X-Registry-Auth'] = auth.encode_header(authcfg)
|
# Do not fail here if no authentication exists for this
|
||||||
|
# specific registry as we can have a readonly pull. Just
|
||||||
|
# put the header if we can.
|
||||||
|
if authcfg:
|
||||||
|
headers['X-Registry-Auth'] = auth.encode_header(authcfg)
|
||||||
|
else:
|
||||||
|
log.debug('Sending supplied auth config')
|
||||||
|
headers['X-Registry-Auth'] = auth.encode_header(auth_config)
|
||||||
|
|
||||||
response = self._post_json(
|
response = self._post_json(
|
||||||
u, None, headers=headers, stream=stream, params=params
|
u, None, headers=headers, stream=stream, params=params
|
||||||
|
|
|
@ -801,6 +801,8 @@ command.
|
||||||
* tag (str): An optional tag to push
|
* tag (str): An optional tag to push
|
||||||
* stream (bool): Stream the output as a blocking generator
|
* stream (bool): Stream the output as a blocking generator
|
||||||
* insecure_registry (bool): Use `http://` to connect to the registry
|
* insecure_registry (bool): Use `http://` to connect to the registry
|
||||||
|
* auth_config (dict): Override the credentials that Client.login has set for this request
|
||||||
|
`auth_config` should contain the `username` and `password` keys to be valid.
|
||||||
|
|
||||||
**Returns** (generator or str): The output of the upload
|
**Returns** (generator or str): The output of the upload
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue