Fix docker client server mismatch

make docker api version configurable, which is more flexible for
end users to try on different environment

Closes-Bug: #1422297

Change-Id: I78bf55e3a14af7239cae3e175ce7b8eb1f2561b1
This commit is contained in:
Kennan 2015-02-16 17:30:12 +08:00
parent 6a95dcccee
commit fadfe8a257
3 changed files with 14 additions and 3 deletions

View File

@ -460,6 +460,10 @@
# (string value)
#host_url = unix:///var/run/docker.sock
# Docker remote api version. Override it according to specific docker
# api version in your environment. (string value)
#docker_remote_api_version = 1.17
# If set, ignore any SSL validation issues (boolean value)
#api_insecure = false

View File

@ -18,12 +18,14 @@ from oslo_config import cfg
from magnum.openstack.common import log as logging
DEFAULT_DOCKER_REMOTE_API_VERSION = '1.17'
LOG = logging.getLogger(__name__)
CONF = cfg.CONF
class DockerHTTPClient(client.Client):
def __init__(self, url='unix://var/run/docker.sock'):
def __init__(self, url='unix://var/run/docker.sock',
ver=DEFAULT_DOCKER_REMOTE_API_VERSION):
if (CONF.docker.cert_file or
CONF.docker.key_file):
client_cert = (CONF.docker.cert_file, CONF.docker.key_file)
@ -40,7 +42,7 @@ class DockerHTTPClient(client.Client):
ssl_config = False
super(DockerHTTPClient, self).__init__(
base_url=url,
version='1.15',
version=ver,
timeout=10,
tls=ssl_config
)

View File

@ -30,6 +30,10 @@ docker_opts = [
default='unix:///var/run/docker.sock',
help='tcp://host:port to bind/connect to or '
'unix://path/to/socket to use'),
cfg.StrOpt('docker_remote_api_version',
default=docker_client.DEFAULT_DOCKER_REMOTE_API_VERSION,
help='Docker remote api version. Override it according to '
'specific docker api version in your environment.'),
cfg.BoolOpt('api_insecure',
default=False,
help='If set, ignore any SSL validation issues'),
@ -56,7 +60,8 @@ class Handler(object):
@property
def docker(self):
if self._docker is None:
self._docker = docker_client.DockerHTTPClient(CONF.docker.host_url)
self._docker = docker_client.DockerHTTPClient(CONF.docker.host_url,
CONF.docker.docker_remote_api_version)
return self._docker
def _find_container_by_name(self, name):