Skip to content

Commit e045331

Browse files
authored
Merge pull request #1190 from docker/1.10.0-release
1.10.0 release
2 parents dc164c7 + 3eb93f6 commit e045331

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+2520
-478
lines changed

Dockerfile-docs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
FROM python:2.7
2+
3+
RUN mkdir /home/docker-py
4+
WORKDIR /home/docker-py
5+
6+
COPY docs-requirements.txt /home/docker-py/docs-requirements.txt
7+
RUN pip install -r docs-requirements.txt
8+
9+
COPY . /home/docker-py

LICENSE

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -176,18 +176,7 @@
176176

177177
END OF TERMS AND CONDITIONS
178178

179-
APPENDIX: How to apply the Apache License to your work.
180-
181-
To apply the Apache License to your work, attach the following
182-
boilerplate notice, with the fields enclosed by brackets "[]"
183-
replaced with your own identifying information. (Don't include
184-
the brackets!) The text should be enclosed in the appropriate
185-
comment syntax for the file format. We also recommend that a
186-
file or class name and description of purpose be included on the
187-
same "printed page" as the copyright notice for easier
188-
identification within third-party archives.
189-
190-
Copyright [yyyy] [name of copyright owner]
179+
Copyright 2016 Docker, Inc.
191180

192181
Licensed under the Apache License, Version 2.0 (the "License");
193182
you may not use this file except in compliance with the License.

Makefile

Lines changed: 40 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,77 @@
1-
.PHONY: all build test integration-test unit-test build-py3 unit-test-py3 integration-test-py3
2-
1+
.PHONY: all
32
all: test
43

4+
.PHONY: clean
55
clean:
6-
rm -rf tests/__pycache__
7-
rm -rf tests/*/__pycache__
8-
docker rm -vf dpy-dind
6+
-docker rm -vf dpy-dind
7+
find -name "__pycache__" | xargs rm -rf
98

9+
.PHONY: build
1010
build:
1111
docker build -t docker-py .
1212

13+
.PHONY: build-py3
1314
build-py3:
1415
docker build -t docker-py3 -f Dockerfile-py3 .
1516

17+
.PHONY: build-docs
18+
build-docs:
19+
docker build -t docker-py-docs -f Dockerfile-docs .
20+
21+
.PHONY: build-dind-certs
1622
build-dind-certs:
1723
docker build -t dpy-dind-certs -f tests/Dockerfile-dind-certs .
1824

25+
.PHONY: test
1926
test: flake8 unit-test unit-test-py3 integration-dind integration-dind-ssl
2027

28+
.PHONY: unit-test
2129
unit-test: build
2230
docker run docker-py py.test tests/unit
2331

32+
.PHONY: unit-test-py3
2433
unit-test-py3: build-py3
2534
docker run docker-py3 py.test tests/unit
2635

36+
.PHONY: integration-test
2737
integration-test: build
2838
docker run -v /var/run/docker.sock:/var/run/docker.sock docker-py py.test tests/integration
2939

40+
.PHONY: integration-test-py3
3041
integration-test-py3: build-py3
3142
docker run -v /var/run/docker.sock:/var/run/docker.sock docker-py3 py.test tests/integration
3243

44+
.PHONY: integration-dind
3345
integration-dind: build build-py3
3446
docker rm -vf dpy-dind || :
35-
docker run -d --name dpy-dind --privileged dockerswarm/dind:1.10.3 docker daemon -H tcp://0.0.0.0:2375
36-
docker run --env="DOCKER_HOST=tcp://docker:2375" --link=dpy-dind:docker docker-py py.test tests/integration
37-
docker run --env="DOCKER_HOST=tcp://docker:2375" --link=dpy-dind:docker docker-py3 py.test tests/integration
47+
docker run -d --name dpy-dind --privileged dockerswarm/dind:1.12.0 docker daemon\
48+
-H tcp://0.0.0.0:2375
49+
docker run --env="DOCKER_HOST=tcp://docker:2375" --link=dpy-dind:docker docker-py\
50+
py.test tests/integration
51+
docker run --env="DOCKER_HOST=tcp://docker:2375" --link=dpy-dind:docker docker-py3\
52+
py.test tests/integration
3853
docker rm -vf dpy-dind
3954

55+
.PHONY: integration-dind-ssl
4056
integration-dind-ssl: build-dind-certs build build-py3
4157
docker run -d --name dpy-dind-certs dpy-dind-certs
42-
docker run -d --env="DOCKER_HOST=tcp://localhost:2375" --env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs" --volumes-from dpy-dind-certs --name dpy-dind-ssl -v /tmp --privileged dockerswarm/dind:1.10.3 docker daemon --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/server-cert.pem --tlskey=/certs/server-key.pem -H tcp://0.0.0.0:2375
43-
docker run --volumes-from dpy-dind-ssl --env="DOCKER_HOST=tcp://docker:2375" --env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs" --link=dpy-dind-ssl:docker docker-py py.test tests/integration
44-
docker run --volumes-from dpy-dind-ssl --env="DOCKER_HOST=tcp://docker:2375" --env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs" --link=dpy-dind-ssl:docker docker-py3 py.test tests/integration
58+
docker run -d --env="DOCKER_HOST=tcp://localhost:2375" --env="DOCKER_TLS_VERIFY=1"\
59+
--env="DOCKER_CERT_PATH=/certs" --volumes-from dpy-dind-certs --name dpy-dind-ssl\
60+
-v /tmp --privileged dockerswarm/dind:1.12.0 docker daemon --tlsverify\
61+
--tlscacert=/certs/ca.pem --tlscert=/certs/server-cert.pem\
62+
--tlskey=/certs/server-key.pem -H tcp://0.0.0.0:2375
63+
docker run --volumes-from dpy-dind-ssl --env="DOCKER_HOST=tcp://docker:2375"\
64+
--env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs"\
65+
--link=dpy-dind-ssl:docker docker-py py.test tests/integration
66+
docker run --volumes-from dpy-dind-ssl --env="DOCKER_HOST=tcp://docker:2375"\
67+
--env="DOCKER_TLS_VERIFY=1" --env="DOCKER_CERT_PATH=/certs"\
68+
--link=dpy-dind-ssl:docker docker-py3 py.test tests/integration
4569
docker rm -vf dpy-dind-ssl dpy-dind-certs
4670

71+
.PHONY: flake8
4772
flake8: build
4873
docker run docker-py flake8 docker tests
74+
75+
.PHONY: docs
76+
docs: build-docs
77+
docker run -v `pwd`/docs:/home/docker-py/docs/ -p 8000:8000 docker-py-docs mkdocs serve -a 0.0.0.0:8000

docker/__init__.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,3 @@
1-
# Copyright 2013 dotCloud inc.
2-
3-
# Licensed under the Apache License, Version 2.0 (the "License");
4-
# you may not use this file except in compliance with the License.
5-
# You may obtain a copy of the License at
6-
7-
# http://www.apache.org/licenses/LICENSE-2.0
8-
9-
# Unless required by applicable law or agreed to in writing, software
10-
# distributed under the License is distributed on an "AS IS" BASIS,
11-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12-
# See the License for the specific language governing permissions and
13-
# limitations under the License.
14-
151
from .version import version, version_info
162

173
__version__ = version

docker/api/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44
from .daemon import DaemonApiMixin
55
from .exec_api import ExecApiMixin
66
from .image import ImageApiMixin
7-
from .volume import VolumeApiMixin
87
from .network import NetworkApiMixin
8+
from .service import ServiceApiMixin
9+
from .swarm import SwarmApiMixin
10+
from .volume import VolumeApiMixin

docker/api/build.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ def build(self, path=None, tag=None, quiet=False, fileobj=None,
1818
custom_context=False, encoding=None, pull=False,
1919
forcerm=False, dockerfile=None, container_limits=None,
2020
decode=False, buildargs=None, gzip=False):
21-
remote = context = headers = None
21+
remote = context = None
22+
headers = {}
2223
container_limits = container_limits or {}
2324
if path is None and fileobj is None:
2425
raise TypeError("Either path or fileobj needs to be provided.")
@@ -134,8 +135,7 @@ def _set_auth_headers(self, headers):
134135
', '.join(repr(k) for k in self._auth_configs.keys())
135136
)
136137
)
137-
if headers is None:
138-
headers = {}
138+
139139
if utils.compare_version('1.19', self._version) >= 0:
140140
headers['X-Registry-Config'] = auth.encode_header(
141141
self._auth_configs

docker/api/container.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,18 @@ def attach(self, container, stdout=True, stderr=True,
1515
'logs': logs and 1 or 0,
1616
'stdout': stdout and 1 or 0,
1717
'stderr': stderr and 1 or 0,
18-
'stream': stream and 1 or 0,
18+
'stream': stream and 1 or 0
1919
}
20+
21+
headers = {
22+
'Connection': 'Upgrade',
23+
'Upgrade': 'tcp'
24+
}
25+
2026
u = self._url("/containers/{0}/attach", container)
21-
response = self._post(u, params=params, stream=stream)
27+
response = self._post(u, headers=headers, params=params, stream=stream)
2228

23-
return self._get_result(container, stream, response)
29+
return self._read_from_socket(response, stream)
2430

2531
@utils.check_resource
2632
def attach_socket(self, container, params=None, ws=False):
@@ -34,9 +40,18 @@ def attach_socket(self, container, params=None, ws=False):
3440
if ws:
3541
return self._attach_websocket(container, params)
3642

43+
headers = {
44+
'Connection': 'Upgrade',
45+
'Upgrade': 'tcp'
46+
}
47+
3748
u = self._url("/containers/{0}/attach", container)
38-
return self._get_raw_response_socket(self.post(
39-
u, None, params=self._attach_params(params), stream=True))
49+
return self._get_raw_response_socket(
50+
self.post(
51+
u, None, params=self._attach_params(params), stream=True,
52+
headers=headers
53+
)
54+
)
4055

4156
@utils.check_resource
4257
def commit(self, container, repository=None, tag=None, message=None,

docker/api/exec_api.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ def exec_resize(self, exec_id, height=None, width=None):
5656
def exec_start(self, exec_id, detach=False, tty=False, stream=False,
5757
socket=False):
5858
# we want opened socket if socket == True
59-
if socket:
60-
stream = True
6159
if isinstance(exec_id, dict):
6260
exec_id = exec_id.get('Id')
6361

@@ -66,10 +64,18 @@ def exec_start(self, exec_id, detach=False, tty=False, stream=False,
6664
'Detach': detach
6765
}
6866

67+
headers = {} if detach else {
68+
'Connection': 'Upgrade',
69+
'Upgrade': 'tcp'
70+
}
71+
6972
res = self._post_json(
70-
self._url('/exec/{0}/start', exec_id), data=data, stream=stream
73+
self._url('/exec/{0}/start', exec_id),
74+
headers=headers,
75+
data=data,
76+
stream=True
7177
)
7278

7379
if socket:
7480
return self._get_raw_response_socket(res)
75-
return self._get_result_tty(stream, res, tty)
81+
return self._read_from_socket(res, stream)

0 commit comments

Comments
 (0)