Update PR based on review from @resmo

reviewable/pr18780/r1
Olaf Kilian 10 years ago
parent 772e92eca9
commit feb20eeadd

@ -24,7 +24,7 @@ DOCUMENTATION = '''
---
module: docker_login
author: Olaf Kilian
version_added: "1.9"
version_added: "2.0"
short_description: Manage Docker registry logins
description:
- Ansible version of the "docker login" CLI command.
@ -35,50 +35,38 @@ options:
description:
- URL of the registry, for example: https://index.docker.io/v1/
required: true
default: null
aliases: []
username:
description:
- The username for the registry account
required: true
default: null
aliases: []
password:
description:
- The plaintext password for the registry account
required: true
default: null
aliases: []
email:
description:
- The email address for the registry account
required: false
default: None
aliases: []
reauth:
description:
- Whether refresh existing authentication on the Docker server (boolean)
required: false
default: false
aliases: []
dockercfg_path:
description:
- Use a custom path for the .dockercfg file
required: false
default: ~/.dockercfg
aliases: []
docker_url:
descriptions:
- Refers to the protocol+hostname+port where the Docker server is hosted
required: false
default: unix://var/run/docker.sock
aliases: []
timeout:
description:
- The HTTP request timeout in seconds
required: false
default: 600
aliases: []
requirements: [ "docker-py" ]
'''
@ -108,22 +96,24 @@ Login to a Docker registry without performing any other action. Make sure that t
'''
import os.path
import sys
import json
import base64
from urlparse import urlparse
try:
import os.path
import sys
import json
import base64
import docker.client
from requests.exceptions import *
from urlparse import urlparse
from docker.errors import APIError as DockerAPIError
has_lib_docker = True
except ImportError, e:
print "failed=True msg='failed to import python module: %s'" % e
sys.exit(1)
has_lib_docker = False
try:
from docker.errors import APIError as DockerAPIError
except ImportError:
from docker.client import APIError as DockerAPIError
from requests.exceptions import *
has_lib_requests_execeptions = True
except ImportError, e:
has_lib_requests_execeptions = False
class DockerLoginManager:
@ -171,7 +161,7 @@ class DockerLoginManager:
self.log.append("Already Authentificated")
# Update the dockercfg if changed but not failed.
if self.has_changed():
if self.has_changed() and not self.module.check_mode:
self.update_dockercfg()
# This is what the underlaying docker-py unfortunately doesn't do (yet).
@ -218,17 +208,24 @@ def main():
module = AnsibleModule(
argument_spec = dict(
registry = dict(required=True, default=None),
username = dict(required=True, default=None),
password = dict(required=True, default=None),
registry = dict(required=True),
username = dict(required=True),
password = dict(required=True),
email = dict(required=False, default=None),
reauth = dict(required=False, default=False, type='bool'),
dockercfg_path = dict(required=False, default='~/.dockercfg'),
docker_url = dict(default='unix://var/run/docker.sock'),
timeout = dict(default=10, type='int')
)
),
supports_check_mode=True
)
if not has_lib_docker:
module.fail_json(msg="python library docker-py required: pip install docker-py==1.1.0")
if not has_lib_requests_execeptions:
module.fail_json(msg="python library requests required: pip install requests")
try:
manager = DockerLoginManager(module)
manager.login()

Loading…
Cancel
Save