mirror of https://github.com/docker/docker-py.git
372 lines
10 KiB
Python
372 lines
10 KiB
Python
# Copyright 2013 dotCloud inc.
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
CURRENT_VERSION = 'v1.6'
|
|
|
|
FAKE_CONTAINER_ID = '3cc2351ab11b'
|
|
FAKE_IMAGE_ID = 'e9aa60c60128'
|
|
FAKE_IMAGE_NAME = 'test_image'
|
|
FAKE_TARBALL_PATH = '/path/to/tarball'
|
|
FAKE_REPO_NAME = 'repo'
|
|
FAKE_TAG_NAME = 'tag'
|
|
FAKE_FILE_NAME = 'file'
|
|
FAKE_URL = 'myurl'
|
|
FAKE_PATH = '/path'
|
|
|
|
### Each method is prefixed with HTTP method (get, post...)
|
|
### for clarity and readability
|
|
|
|
|
|
def get_fake_version():
|
|
status_code = 200
|
|
response = {'GoVersion': '1', 'Version': '1.1.1'}
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_info():
|
|
status_code = 200
|
|
response = {'Containers': 1, 'Images': 1, 'Debug': ''}
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_search():
|
|
status_code = 200
|
|
response = [{'Name': 'busybox', 'Description': 'Fake Description'}]
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_images():
|
|
status_code = 200
|
|
response = [{
|
|
'Id': FAKE_IMAGE_ID,
|
|
'Created': '2 days ago',
|
|
'Repository': 'busybox',
|
|
'Tag': 'latest'
|
|
}]
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_image_history():
|
|
status_code = 200
|
|
response = [
|
|
{
|
|
"Id": "b750fe79269d",
|
|
"Created": 1364102658,
|
|
"CreatedBy": "/bin/bash"
|
|
},
|
|
{
|
|
"Id": "27cf78414709",
|
|
"Created": 1364068391,
|
|
"CreatedBy": ""
|
|
}
|
|
]
|
|
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_import_image():
|
|
status_code = 200
|
|
response = 'Import messages...'
|
|
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_containers():
|
|
status_code = 200
|
|
response = [{
|
|
'Id': FAKE_CONTAINER_ID,
|
|
'Image': 'busybox:latest',
|
|
'Created': '2 days ago',
|
|
'Command': 'true',
|
|
'Status': 'fake status'
|
|
}]
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_start_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_create_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_inspect_container():
|
|
status_code = 200
|
|
response = {
|
|
'Id': FAKE_CONTAINER_ID,
|
|
'Config': {'Privileged': True},
|
|
'ID': FAKE_CONTAINER_ID,
|
|
'Image': 'busybox:latest',
|
|
"State": {
|
|
"Running": True,
|
|
"Pid": 0,
|
|
"ExitCode": 0,
|
|
"StartedAt": "2013-09-25T14:01:18.869545111+02:00",
|
|
"Ghost": False
|
|
},
|
|
}
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_inspect_image():
|
|
status_code = 200
|
|
response = {
|
|
'id': FAKE_IMAGE_ID,
|
|
'parent': "27cf784147099545",
|
|
'created': "2013-03-23T22:24:18.818426-07:00",
|
|
'container': FAKE_CONTAINER_ID,
|
|
'container_config':
|
|
{
|
|
"Hostname": "",
|
|
"User": "",
|
|
"Memory": 0,
|
|
"MemorySwap": 0,
|
|
"AttachStdin": False,
|
|
"AttachStdout": False,
|
|
"AttachStderr": False,
|
|
"PortSpecs": "",
|
|
"Tty": True,
|
|
"OpenStdin": True,
|
|
"StdinOnce": False,
|
|
"Env": "",
|
|
"Cmd": ["/bin/bash"],
|
|
"Dns": "",
|
|
"Image": "base",
|
|
"Volumes": "",
|
|
"VolumesFrom": "",
|
|
"WorkingDir": ""
|
|
},
|
|
'Size': 6823592
|
|
}
|
|
return status_code, response
|
|
|
|
def get_fake_port():
|
|
status_code = 200
|
|
response = {'Args': [],
|
|
'Config': {'AttachStderr': True,
|
|
'AttachStdin': False,
|
|
'AttachStdout': True,
|
|
'Cmd': ['yes'],
|
|
'CpuShares': 0,
|
|
'Dns': None,
|
|
'Domainname': '',
|
|
'Entrypoint': None,
|
|
'Env': None,
|
|
'ExposedPorts': {'1111': {}, '2222': {}},
|
|
'Hostname': 'a398832bc87e',
|
|
'Image': 'ubuntu',
|
|
'Memory': 0,
|
|
'MemorySwap': 0,
|
|
'NetworkDisabled': False,
|
|
'OpenStdin': False,
|
|
'PortSpecs': None,
|
|
'StdinOnce': False,
|
|
'Tty': False,
|
|
'User': '',
|
|
'Volumes': None,
|
|
'VolumesFrom': '',
|
|
'WorkingDir': ''},
|
|
'Created': '2013-12-14T17:41:13.976760086Z',
|
|
'Driver': 'aufs',
|
|
'HostConfig': {'Binds': None,
|
|
'ContainerIDFile': '',
|
|
'Links': None,
|
|
'LxcConf': None,
|
|
'PortBindings': {'1111': None,
|
|
'1111/tcp': [{'HostIp': '127.0.0.1', 'HostPort': '4567'}],
|
|
'2222': None},
|
|
'Privileged': False,
|
|
'PublishAllPorts': False},
|
|
'HostnamePath': '/var/lib/docker/containers/a398832bc87e15b220d710a98386493559df2448480fc9243e86ee5544eea767/hostname',
|
|
'HostsPath': '/var/lib/docker/containers/a398832bc87e15b220d710a98386493559df2448480fc9243e86ee5544eea767/hosts',
|
|
'ID': 'a398832bc87e15b220d710a98386493559df2448480fc9243e86ee5544eea767',
|
|
'Image': '8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c',
|
|
'Name': '/sad_tesla7',
|
|
'NetworkSettings': {'Bridge': 'docker0',
|
|
'Gateway': '172.17.42.1',
|
|
'IPAddress': '172.17.0.19',
|
|
'IPPrefixLen': 16,
|
|
'PortMapping': None,
|
|
'Ports': {'1111': None,
|
|
'1111/tcp': [{'HostIp': '127.0.0.1', 'HostPort': '4567'}],
|
|
'2222': None}},
|
|
'Path': 'yes',
|
|
'ResolvConfPath': '/var/lib/docker/containers/a398832bc87e15b220d710a98386493559df2448480fc9243e86ee5544eea767/resolv.conf',
|
|
'State': {'ExitCode': 0,
|
|
'FinishedAt': '0001-01-01T00:00:00Z',
|
|
'Ghost': False,
|
|
'Pid': 11703,
|
|
'Running': True,
|
|
'StartedAt': '2013-12-14T17:41:27.844076587Z'},
|
|
'SysInitPath': '/usr/bin/docker',
|
|
'Volumes': {},
|
|
'VolumesRW': {}}
|
|
|
|
|
|
return status_code, response
|
|
|
|
def get_fake_insert_image():
|
|
status_code = 200
|
|
response = {'StatusCode': 0}
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_wait():
|
|
status_code = 200
|
|
response = {'StatusCode': 0}
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_logs():
|
|
status_code = 200
|
|
response = 'Flowering Nights (Sakuya Iyazoi)'
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_diff():
|
|
status_code = 200
|
|
response = [{'Path': '/test', 'Kind': 1}]
|
|
return status_code, response
|
|
|
|
|
|
def get_fake_export():
|
|
status_code = 200
|
|
response = 'Byte Stream....'
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_stop_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_kill_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_restart_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def delete_fake_remove_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_image_create():
|
|
status_code = 200
|
|
response = {'Id': FAKE_IMAGE_ID}
|
|
return status_code, response
|
|
|
|
|
|
def delete_fake_remove_image():
|
|
status_code = 200
|
|
response = {'Id': FAKE_IMAGE_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_commit():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_push():
|
|
status_code = 200
|
|
response = {'Id': FAKE_IMAGE_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_build_container():
|
|
status_code = 200
|
|
response = {'Id': FAKE_CONTAINER_ID}
|
|
return status_code, response
|
|
|
|
|
|
def post_fake_tag_image():
|
|
status_code = 200
|
|
response = {'Id': FAKE_IMAGE_ID}
|
|
return status_code, response
|
|
|
|
|
|
## maps real api url to fake response callback
|
|
prefix = 'unix://var/run/docker.sock'
|
|
fake_responses = {
|
|
'{1}/{0}/version'.format(CURRENT_VERSION, prefix):
|
|
get_fake_version,
|
|
'{1}/{0}/info'.format(CURRENT_VERSION, prefix):
|
|
get_fake_info,
|
|
'{1}/{0}/images/search'.format(CURRENT_VERSION, prefix):
|
|
get_fake_search,
|
|
'{1}/{0}/images/json'.format(CURRENT_VERSION, prefix):
|
|
get_fake_images,
|
|
'{1}/{0}/images/test_image/history'.format(CURRENT_VERSION, prefix):
|
|
get_fake_image_history,
|
|
'{1}/{0}/images/create'.format(CURRENT_VERSION, prefix):
|
|
post_fake_import_image,
|
|
'{1}/{0}/containers/json'.format(CURRENT_VERSION, prefix):
|
|
get_fake_containers,
|
|
'{1}/{0}/containers/3cc2351ab11b/start'.format(CURRENT_VERSION, prefix):
|
|
post_fake_start_container,
|
|
'{1}/{0}/containers/3cc2351ab11b/json'.format(CURRENT_VERSION, prefix):
|
|
get_fake_inspect_container,
|
|
'{1}/{0}/images/e9aa60c60128/tag'.format(CURRENT_VERSION, prefix):
|
|
post_fake_tag_image,
|
|
'{1}/{0}/containers/3cc2351ab11b/wait'.format(CURRENT_VERSION, prefix):
|
|
get_fake_wait,
|
|
'{1}/{0}/containers/3cc2351ab11b/attach'.format(CURRENT_VERSION, prefix):
|
|
get_fake_logs,
|
|
'{1}/{0}/containers/3cc2351ab11b/changes'.format(CURRENT_VERSION, prefix):
|
|
get_fake_diff,
|
|
'{1}/{0}/containers/3cc2351ab11b/export'.format(CURRENT_VERSION, prefix):
|
|
get_fake_export,
|
|
'{1}/{0}/containers/3cc2351ab11b/stop'.format(CURRENT_VERSION, prefix):
|
|
post_fake_stop_container,
|
|
'{1}/{0}/containers/3cc2351ab11b/kill'.format(CURRENT_VERSION, prefix):
|
|
post_fake_kill_container,
|
|
'{1}/{0}/containers/3cc2351ab11b/json'.format(CURRENT_VERSION, prefix):
|
|
get_fake_port,
|
|
'{1}/{0}/containers/3cc2351ab11b/restart'.format(CURRENT_VERSION, prefix):
|
|
post_fake_restart_container,
|
|
'{1}/{0}/containers/3cc2351ab11b'.format(CURRENT_VERSION, prefix):
|
|
delete_fake_remove_container,
|
|
'{1}/{0}/images/create'.format(CURRENT_VERSION, prefix):
|
|
post_fake_image_create,
|
|
'{1}/{0}/images/e9aa60c60128'.format(CURRENT_VERSION, prefix):
|
|
delete_fake_remove_image,
|
|
'{1}/{0}/images/test_image/json'.format(CURRENT_VERSION, prefix):
|
|
get_fake_inspect_image,
|
|
'{1}/{0}/images/test_image/insert'.format(CURRENT_VERSION, prefix):
|
|
get_fake_insert_image,
|
|
'{1}/{0}/images/test_image/push'.format(CURRENT_VERSION, prefix):
|
|
post_fake_push,
|
|
'{1}/{0}/commit'.format(CURRENT_VERSION, prefix):
|
|
post_fake_commit,
|
|
'{1}/{0}/containers/create'.format(CURRENT_VERSION, prefix):
|
|
post_fake_create_container,
|
|
'{1}/{0}/build'.format(CURRENT_VERSION, prefix):
|
|
post_fake_build_container
|
|
}
|