You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2016/10/24 12:29:46 UTC

[1/5] libcloud git commit: Extra Attributes for Node Creation on Vultr Closes #917 * Add extra attributes for specifying node creation parameters with the Vultr driver. * Add a simple test for node creation on Vultr.

Repository: libcloud
Updated Branches:
  refs/heads/trunk e20f53699 -> d6ec89123


Extra Attributes for Node Creation on Vultr
Closes #917
* Add extra attributes for specifying node creation parameters with the Vultr
  driver.
* Add a simple test for node creation on Vultr.


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/0664519f
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/0664519f
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/0664519f

Branch: refs/heads/trunk
Commit: 0664519fde98c7b9a194729a0d3bc86d80922c88
Parents: e20f536
Author: Fahri Cihan Demirci <fe...@users.noreply.github.com>
Authored: Wed Oct 19 16:01:31 2016 -0400
Committer: Anthony Shaw <an...@apache.org>
Committed: Mon Oct 24 13:12:20 2016 +0100

----------------------------------------------------------------------
 libcloud/compute/drivers/vultr.py               | 84 +++++++++++++++++++-
 .../compute/fixtures/vultr/create_node.json     |  3 +
 libcloud/test/compute/test_vultr.py             | 12 +++
 3 files changed, 98 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/0664519f/libcloud/compute/drivers/vultr.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/vultr.py b/libcloud/compute/drivers/vultr.py
index 5b0d990..0313144 100644
--- a/libcloud/compute/drivers/vultr.py
+++ b/libcloud/compute/drivers/vultr.py
@@ -93,6 +93,26 @@ class VultrNodeDriver(NodeDriver):
     NODE_STATE_MAP = {'pending': NodeState.PENDING,
                       'active': NodeState.RUNNING}
 
+    EX_CREATE_YES_NO_ATTRIBUTES = ['enable_ipv6',
+                                   'enable_private_network',
+                                   'auto_backups',
+                                   'notify_activate',
+                                   'ddos_protection']
+
+    EX_CREATE_ID_ATTRIBUTES = {'iso_id': 'ISOID',
+                               'script_id': 'SCRIPTID',
+                               'snapshot_id': 'SNAPSHOTID',
+                               'app_id': 'APPID'}
+
+    EX_CREATE_ATTRIBUTES = ['ipxe_chain_url',
+                            'label',
+                            'userdata',
+                            'reserved_ip_v4',
+                            'hostname',
+                            'tag']
+    EX_CREATE_ATTRIBUTES.extend(EX_CREATE_YES_NO_ATTRIBUTES)
+    EX_CREATE_ATTRIBUTES.extend(EX_CREATE_ID_ATTRIBUTES.keys())
+
     def list_nodes(self):
         return self._list_resources('/v1/server/list', self._to_node)
 
@@ -142,13 +162,75 @@ class VultrNodeDriver(NodeDriver):
     def list_images(self):
         return self._list_resources('/v1/os/list', self._to_image)
 
-    def create_node(self, name, size, image, location, ex_ssh_key_ids=None):
+    def create_node(self, name, size, image, location, ex_ssh_key_ids=None,
+                    ex_create_attr=None):
+        """
+        Create a node
+
+        :param name: Name for the new node
+        :type name: ``str``
+
+        :param size: Size of the new node
+        :type size: :class:`NodeSize`
+
+        :param image: Image for the new node
+        :type image: :class:`NodeImage`
+
+        :param location: Location of the new node
+        :type location: :class:`NodeLocation`
+
+        :param ex_ssh_key_ids: IDs of the SSH keys to initialize
+        :type ex_sshkeyid: ``list`` of ``str``
+
+        :param ex_create_attr: Extra attributes for node creation
+        :type ex_create_attr: ``dict``
+
+        The `ex_create_attr` parameter can include the following dictionary
+        key and value pairs:
+
+        * `ipxe_chain_url`: ``str`` for specifying URL to boot via IPXE
+        * `iso_id`: ``str`` the ID of a specific ISO to mount,
+          only meaningful with the `Custom` `NodeImage`
+        * `script_id`: ``int`` ID of a startup script to execute on boot,
+          only meaningful when the `NodeImage` is not `Custom`
+        * 'snapshot_id`: ``str`` Snapshot ID to restore for the initial
+          installation, only meaningful with the `Snapshot` `NodeImage`
+        * `enable_ipv6`: ``bool`` Whether an IPv6 subnet should be assigned
+        * `enable_private_network`: ``bool`` Whether private networking
+          support should be added
+        * `label`: ``str`` Text label to be shown in the control panel
+        * `auto_backups`: ``bool`` Whether automatic backups should be enabled
+        * `app_id`: ``int`` App ID to launch if launching an application,
+          only meaningful when the `NodeImage` is `Application`
+        * `userdata`: ``str`` Base64 encoded cloud-init user-data
+        * `notify_activate`: ``bool`` Whether an activation email should be
+          sent when the server is ready
+        * `ddos_protection`: ``bool`` Whether DDOS protection should be enabled
+        * `reserved_ip_v4`: ``str`` IP address of the floating IP to use as
+          the main IP of this server
+        * `hostname`: ``str`` The hostname to assign to this server
+        * `tag`: ``str`` The tag to assign to this server
+
+        :return: The newly created node.
+        :rtype: :class:`Node`
+
+        """
         params = {'DCID': location.id, 'VPSPLANID': size.id,
                   'OSID': image.id, 'label': name}
 
         if ex_ssh_key_ids is not None:
             params['SSHKEYID'] = ','.join(ex_ssh_key_ids)
 
+        ex_create_attr = ex_create_attr or {}
+        for key, value in ex_create_attr.items():
+            if key in self.EX_CREATE_ATTRIBUTES:
+                if key in self.EX_CREATE_YES_NO_ATTRIBUTES:
+                    params[key] = 'yes' if value else 'no'
+                else:
+                    if key in self.EX_CREATE_ID_ATTRIBUTES:
+                        key = self.EX_CREATE_ID_ATTRIBUTES[key]
+                    params[key] = value
+
         result = self.connection.post('/v1/server/create', params)
         if result.status != httplib.OK:
             return False

http://git-wip-us.apache.org/repos/asf/libcloud/blob/0664519f/libcloud/test/compute/fixtures/vultr/create_node.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/vultr/create_node.json b/libcloud/test/compute/fixtures/vultr/create_node.json
new file mode 100644
index 0000000..57aa548
--- /dev/null
+++ b/libcloud/test/compute/fixtures/vultr/create_node.json
@@ -0,0 +1,3 @@
+{
+  "SUBID": "1"
+}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/0664519f/libcloud/test/compute/test_vultr.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_vultr.py b/libcloud/test/compute/test_vultr.py
index 538e62f..919aabf 100644
--- a/libcloud/test/compute/test_vultr.py
+++ b/libcloud/test/compute/test_vultr.py
@@ -79,6 +79,14 @@ class VultrTests(LibcloudTestCase):
         result = self.driver.reboot_node(node)
         self.assertTrue(result)
 
+    def test_create_node_success(self):
+        test_size = self.driver.list_sizes()[0]
+        test_image = self.driver.list_images()[0]
+        test_location = self.driver.list_locations()[0]
+        created_node = self.driver.create_node('test-node', test_size,
+                                               test_image, test_location)
+        self.assertEqual(created_node.id, "1")
+
     def test_destroy_node_success(self):
         node = self.driver.list_nodes()[0]
         result = self.driver.destroy_node(node)
@@ -121,6 +129,10 @@ class VultrMockHttp(MockHttpTestCase):
         body = self.fixtures.load('list_nodes.json')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
+    def _v1_server_create(self, method, url, body, headers):
+        body = self.fixtures.load('create_node.json')
+        return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
     def _v1_server_destroy(self, method, url, body, headers):
         return (httplib.OK, "", {}, httplib.responses[httplib.OK])
 


[2/5] libcloud git commit: changes for #917

Posted by an...@apache.org.
changes for #917


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/e263144c
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/e263144c
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/e263144c

Branch: refs/heads/trunk
Commit: e263144c4b1ff757510a71422214d8c974afbafb
Parents: 0664519
Author: Anthony Shaw <an...@apache.org>
Authored: Mon Oct 24 13:13:01 2016 +0100
Committer: Anthony Shaw <an...@apache.org>
Committed: Mon Oct 24 13:13:01 2016 +0100

----------------------------------------------------------------------
 CHANGES.rst | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/e263144c/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index 2ef010e..4e5ae43 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -8,6 +8,10 @@ Changes in current version of Apache Libcloud
 Compute
 ~~~~~~~
 
+- [vultr] Extra Attributes for Node Creation on Vultr
+  (GITHUB-917)
+  [Fahri Cihan Demirci]
+
 - [vultr] Implement SSH Key Create/Delete Methods for Vultr
   (GITHUB-914)
   [Fahri Cihan Demirci]


[4/5] libcloud git commit: Fix Docker Driver install_image response parsing and update test fixtures Closes #918

Posted by an...@apache.org.
Fix Docker Driver install_image response parsing and update test fixtures
Closes #918


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/d59e52c3
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/d59e52c3
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/d59e52c3

Branch: refs/heads/trunk
Commit: d59e52c3229808981a2d0e4d9a8eeb5ef78f5821
Parents: e263144
Author: ptzianos <pa...@gmail.com>
Authored: Thu Oct 20 15:49:20 2016 +0200
Committer: Anthony Shaw <an...@apache.org>
Committed: Mon Oct 24 13:27:24 2016 +0100

----------------------------------------------------------------------
 libcloud/container/drivers/docker.py            |  28 ++-
 .../docker/linux_121/container_a68.json         | 163 -------------
 .../fixtures/docker/linux_121/containers.json   | 143 -----------
 .../docker/linux_121/create_container.json      |   4 -
 .../fixtures/docker/linux_121/create_image.json |   1 -
 .../fixtures/docker/linux_121/images.json       |  50 ----
 .../fixtures/docker/linux_121/logs.txt          |   1 -
 .../fixtures/docker/linux_121/search.json       | 202 ----------------
 .../fixtures/docker/linux_121/version.json      |  10 -
 .../docker/linux_124/container_a68.json         | 163 +++++++++++++
 .../fixtures/docker/linux_124/containers.json   | 143 +++++++++++
 .../docker/linux_124/create_container.json      |   4 +
 .../fixtures/docker/linux_124/create_image.txt  | 238 +++++++++++++++++++
 .../fixtures/docker/linux_124/images.json       |  50 ++++
 .../fixtures/docker/linux_124/logs.txt          |   1 +
 .../fixtures/docker/linux_124/search.json       | 202 ++++++++++++++++
 .../fixtures/docker/linux_124/version.json      |  10 +
 .../fixtures/docker/mac_124/create_image.json   |   1 -
 .../fixtures/docker/mac_124/create_image.txt    | 238 +++++++++++++++++++
 libcloud/test/container/test_docker.py          |  52 ++--
 20 files changed, 1094 insertions(+), 610 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/container/drivers/docker.py
----------------------------------------------------------------------
diff --git a/libcloud/container/drivers/docker.py b/libcloud/container/drivers/docker.py
index faf5117..ac5c0a1 100644
--- a/libcloud/container/drivers/docker.py
+++ b/libcloud/container/drivers/docker.py
@@ -54,7 +54,11 @@ class DockerResponse(JsonResponse):
             # an error, but response status could still be 200
             content_type = self.headers.get('content-type', 'application/json')
             if content_type == 'application/json' or content_type == '':
-                body = json.loads(self.body)
+                if self.headers.get('transfer-encoding') == 'chunked':
+                    body = [json.loads(chunk) for chunk in
+                            self.body.strip().replace('\r', '').split('\n')]
+                else:
+                    body = json.loads(self.body)
             else:
                 body = self.body
         except ValueError:
@@ -210,14 +214,20 @@ class DockerContainerDriver(ContainerDriver):
                                          method='POST')
         if "errorDetail" in result.body:
             raise DockerException(None, result.body)
-        try:
-            # get image id
-            image_id = re.findall(
-                r'{"status":"Download complete"'
-                r',"progressDetail":{},"id":"\w+"}',
-                result.body)[-1]
-            image_id = json.loads(image_id).get('id')
-        except:
+        image_id = None
+
+        # the response is slightly different if the image is already present
+        # and it's not downloaded. both messages below indicate that the image
+        # is available for use to the daemon
+        if re.search(r'Downloaded newer image', result.body) or \
+                re.search(r'"Status: Image is up to date', result.body):
+            if re.search(r'sha256:(?P<id>[a-z0-9]{64})', result.body):
+                image_id = re.findall(r'sha256:(?P<id>[a-z0-9]{64})',
+                                      result.body)[-1]
+
+        # if there is a failure message or if there is not an image id in the
+        # response then throw an exception.
+        if image_id is None:
             raise DockerException(None, 'failed to install image')
 
         image = ContainerImage(

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/container_a68.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/container_a68.json b/libcloud/test/container/fixtures/docker/linux_121/container_a68.json
deleted file mode 100644
index 88282ec..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/container_a68.json
+++ /dev/null
@@ -1,163 +0,0 @@
-{
-  "Id": "a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303",
-  "Created": "2015-12-23T01:05:40.56937184Z",
-  "Path": "/entrypoint.sh",
-  "Args": [
-    "None"
-  ],
-  "State": {
-    "Status": "exited",
-    "Running": false,
-    "Paused": false,
-    "Restarting": false,
-    "OOMKilled": false,
-    "Dead": false,
-    "Pid": 0,
-    "ExitCode": 127,
-    "Error": "",
-    "StartedAt": "2015-12-23T01:06:29.018395755Z",
-    "FinishedAt": "2015-12-23T01:06:30.144487212Z"
-  },
-  "Image": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
-  "ResolvConfPath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/resolv.conf",
-  "HostnamePath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/hostname",
-  "HostsPath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/hosts",
-  "LogPath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303-json.log",
-  "Name": "/gigantic_goldberg",
-  "RestartCount": 0,
-  "Driver": "aufs",
-  "ExecDriver": "native-0.2",
-  "MountLabel": "",
-  "ProcessLabel": "",
-  "AppArmorProfile": "",
-  "ExecIDs": null,
-  "HostConfig": {
-    "Binds": null,
-    "ContainerIDFile": "",
-    "LxcConf": null,
-    "Memory": 0,
-    "MemoryReservation": 0,
-    "MemorySwap": 0,
-    "KernelMemory": 0,
-    "CpuShares": 0,
-    "CpuPeriod": 0,
-    "CpusetCpus": "",
-    "CpusetMems": "",
-    "CpuQuota": 0,
-    "BlkioWeight": 0,
-    "OomKillDisable": false,
-    "MemorySwappiness": null,
-    "Privileged": false,
-    "PortBindings": {},
-    "Links": null,
-    "PublishAllPorts": true,
-    "Dns": null,
-    "DnsOptions": null,
-    "DnsSearch": null,
-    "ExtraHosts": null,
-    "VolumesFrom": null,
-    "Devices": null,
-    "NetworkMode": "default",
-    "IpcMode": "",
-    "PidMode": "",
-    "UTSMode": "",
-    "CapAdd": null,
-    "CapDrop": null,
-    "GroupAdd": null,
-    "RestartPolicy": {
-      "Name": "",
-      "MaximumRetryCount": 0
-    },
-    "SecurityOpt": null,
-    "ReadonlyRootfs": false,
-    "Ulimits": null,
-    "LogConfig": {
-      "Type": "json-file",
-      "Config": {}
-    },
-    "CgroupParent": "",
-    "ConsoleSize": [
-      0,
-      0
-    ],
-    "VolumeDriver": ""
-  },
-  "GraphDriver": {
-    "Name": "aufs",
-    "Data": null
-  },
-  "Mounts": [
-    {
-      "Name": "b1a70d8e1ebd7d5865e59ff91cf06357e3ef4d829af44c31675c2d0a24894444",
-      "Source": "/var/lib/docker/volumes/b1a70d8e1ebd7d5865e59ff91cf06357e3ef4d829af44c31675c2d0a24894444/_data",
-      "Destination": "/data/db",
-      "Driver": "local",
-      "Mode": "",
-      "RW": true
-    }
-  ],
-  "Config": {
-    "Hostname": "a68c1872c746",
-    "Domainname": "",
-    "User": "",
-    "AttachStdin": true,
-    "AttachStdout": true,
-    "AttachStderr": true,
-    "ExposedPorts": {
-      "27017/tcp": {}
-    },
-    "Tty": true,
-    "OpenStdin": true,
-    "StdinOnce": false,
-    "Env": [
-      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
-      "GPG_KEYS=DFFA3DCF326E302C4787673A01C4E7FAAAB2461C \t42F3E95A2C4F08279C4960ADD68FA50FEA312927",
-      "MONGO_MAJOR=3.2",
-      "MONGO_VERSION=3.2.0"
-    ],
-    "Cmd": [
-      "None"
-    ],
-    "Image": "mongo:latest",
-    "Volumes": {
-      "/data/db": {}
-    },
-    "WorkingDir": "",
-    "Entrypoint": [
-      "/entrypoint.sh"
-    ],
-    "OnBuild": null,
-    "Labels": {}
-  },
-  "NetworkSettings": {
-    "Bridge": "",
-    "SandboxID": "",
-    "HairpinMode": false,
-    "LinkLocalIPv6Address": "",
-    "LinkLocalIPv6PrefixLen": 0,
-    "Ports": null,
-    "SandboxKey": "",
-    "SecondaryIPAddresses": null,
-    "SecondaryIPv6Addresses": null,
-    "EndpointID": "",
-    "Gateway": "",
-    "GlobalIPv6Address": "",
-    "GlobalIPv6PrefixLen": 0,
-    "IPAddress": "",
-    "IPPrefixLen": 0,
-    "IPv6Gateway": "",
-    "MacAddress": "",
-    "Networks": {
-      "bridge": {
-        "EndpointID": "",
-        "Gateway": "",
-        "IPAddress": "",
-        "IPPrefixLen": 0,
-        "IPv6Gateway": "",
-        "GlobalIPv6Address": "",
-        "GlobalIPv6PrefixLen": 0,
-        "MacAddress": ""
-      }
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/containers.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/containers.json b/libcloud/test/container/fixtures/docker/linux_121/containers.json
deleted file mode 100644
index 3228e3f..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/containers.json
+++ /dev/null
@@ -1,143 +0,0 @@
-[
-  {
-    "Id": "160936dc54fe8c332095676d9379003534b8cddd7565fa63018996e06dae1b6b",
-    "Names": [
-      "/hubot"
-    ],
-    "Image": "stackstorm/hubot",
-    "ImageID": "05c5761707b3970a9bf17c00886176add79ac087b4d6a500ac87985bf8ec07b1",
-    "Command": "/app/bin/hubot",
-    "Created": 1450130345,
-    "Ports": [],
-    "Labels": {},
-    "Status": "Exited (137) 11 minutes ago",
-    "HostConfig": {
-      "NetworkMode": "bridge"
-    }
-  },
-  {
-    "Id": "f159072147ee7d253e21ec8fd2778a27ac29d7fc5f865641900d16665b46215a",
-    "Names": [
-      "/mongo"
-    ],
-    "Image": "mongo",
-    "ImageID": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
-    "Command": "/entrypoint.sh mongod",
-    "Created": 1450130332,
-    "Ports": [],
-    "Labels": {},
-    "Status": "Exited (14) 2 hours ago",
-    "HostConfig": {
-      "NetworkMode": "bridge"
-    }
-  },
-  {
-    "Id": "e687b33f9ced0153104308e6ff7a2138b8cc026fa4085d31da831a02ed0dc03d",
-    "Names": [
-      "/rabbitmq"
-    ],
-    "Image": "rabbitmq",
-    "ImageID": "448afeda0388b18c6f3be18c7aaece29e0f8dbdfab30364e678c382bab1037c5",
-    "Command": "/docker-entrypoint.sh rabbitmq-server",
-    "Created": 1450130331,
-    "Ports": [
-      {
-        "IP": "0.0.0.0",
-        "PrivatePort": 5672,
-        "PublicPort": 5672,
-        "Type": "tcp"
-      },
-      {
-        "PrivatePort": 25672,
-        "Type": "tcp"
-      },
-      {
-        "PrivatePort": 4369,
-        "Type": "tcp"
-      },
-      {
-        "PrivatePort": 5671,
-        "Type": "tcp"
-      }
-    ],
-    "Labels": {},
-    "Status": "Exited (137) 11 minutes ago",
-    "HostConfig": {
-      "NetworkMode": "bridge"
-    }
-  },
-  {
-    "Id": "b82c16423c6dbb7cd1564f8fc413c822df45cc0c7aa35c24683a1329af6ec102",
-    "Names": [
-      "/fervent_bhabha"
-    ],
-    "Image": "rabbitmq",
-    "ImageID": "448afeda0388b18c6f3be18c7aaece29e0f8dbdfab30364e678c382bab1037c5",
-    "Command": "/docker-entrypoint.sh rabbitmq-server",
-    "Created": 1450059506,
-    "Ports": [
-      {
-        "PrivatePort": 4369,
-        "Type": "tcp"
-      },
-      {
-        "PrivatePort": 5671,
-        "Type": "tcp"
-      },
-      {
-        "IP": "0.0.0.0",
-        "PrivatePort": 5672,
-        "PublicPort": 5672,
-        "Type": "tcp"
-      },
-      {
-        "PrivatePort": 25672,
-        "Type": "tcp"
-      }
-    ],
-    "Labels": {},
-    "Status": "Dead",
-    "HostConfig": {
-      "NetworkMode": "bridge"
-    }
-  },
-  {
-    "Id": "8cc5481aa4621578f8dd2c942d74e27e75170c6899ea012db7a44ea5f1ba2069",
-    "Names": [
-      "/suspicious_swirles"
-    ],
-    "Image": "mongo",
-    "ImageID": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
-    "Command": "/entrypoint.sh mongod",
-    "Created": 1450059505,
-    "Ports": [
-      {
-        "IP": "0.0.0.0",
-        "PrivatePort": 27017,
-        "PublicPort": 27017,
-        "Type": "tcp"
-      }
-    ],
-    "Labels": {},
-    "Status": "Dead",
-    "HostConfig": {
-      "NetworkMode": "bridge"
-    }
-  },
-  {
-    "Id": "598b3e4d15a406390baaa2947f910e7b52b810a4120028692ed309247f2e8346",
-    "Names": [
-      "/mongodata"
-    ],
-    "Image": "mongo",
-    "ImageID": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
-    "Command": "/entrypoint.sh /bin/true",
-    "Created": 1449637213,
-    "Ports": [],
-    "Labels": {},
-    "Status": "Created",
-    "HostConfig": {
-      "NetworkMode": "default"
-    }
-  }
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/create_container.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/create_container.json b/libcloud/test/container/fixtures/docker/linux_121/create_container.json
deleted file mode 100644
index e05a941..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/create_container.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "Id": "a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303",
-  "Warnings": null
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/create_image.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/create_image.json b/libcloud/test/container/fixtures/docker/linux_121/create_image.json
deleted file mode 100644
index 4509f55..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/create_image.json
+++ /dev/null
@@ -1 +0,0 @@
-{"status":"Download complete","progressDetail":{},"id":"cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/images.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/images.json b/libcloud/test/container/fixtures/docker/linux_121/images.json
deleted file mode 100644
index ac04cf3..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/images.json
+++ /dev/null
@@ -1,50 +0,0 @@
-[
-  {
-    "Id": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
-    "ParentId": "3e408cde1b7f6276b9ead7b8111d80a367f9223dfbbd4102ea89a5fc42947960",
-    "RepoTags": [
-      "mongo:latest"
-    ],
-    "RepoDigests": [],
-    "Created": 1449618009,
-    "Size": 0,
-    "VirtualSize": 316957672,
-    "Labels": null
-  },
-  {
-    "Id": "05c5761707b3970a9bf17c00886176add79ac087b4d6a500ac87985bf8ec07b1",
-    "ParentId": "be7965ce1bef5d2e3b27efb3f4fe2253683bc7144d2ebae614e9e7155066c833",
-    "RepoTags": [
-      "stackstorm/hubot:latest"
-    ],
-    "RepoDigests": [],
-    "Created": 1449466772,
-    "Size": 0,
-    "VirtualSize": 550102318,
-    "Labels": {}
-  },
-  {
-    "Id": "448afeda0388b18c6f3be18c7aaece29e0f8dbdfab30364e678c382bab1037c5",
-    "ParentId": "67edbf589f9af9b2c6f87e8481ec0299c50bfce5f9b98b95316c7235494c7bea",
-    "RepoTags": [
-      "rabbitmq:latest"
-    ],
-    "RepoDigests": [],
-    "Created": 1449312753,
-    "Size": 0,
-    "VirtualSize": 304310861,
-    "Labels": null
-  },
-  {
-    "Id": "9da5438fedb2e9a1e11a3361c4a53e0801ed1f8f4c014d83a5a514f0c60892bf",
-    "ParentId": "64ccc5e9d20c638849eadddab4f23204c3fcdd62d497cdbd0ecf44d863b086c8",
-    "RepoTags": [
-      "mongo:2.4.14"
-    ],
-    "RepoDigests": [],
-    "Created": 1449299455,
-    "Size": 0,
-    "VirtualSize": 344445131,
-    "Labels": null
-  }
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/logs.txt
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/logs.txt b/libcloud/test/container/fixtures/docker/linux_121/logs.txt
deleted file mode 100644
index 12c3a44..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/logs.txt
+++ /dev/null
@@ -1 +0,0 @@
-/entrypoint.sh: line 19: exec: None: not found

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/search.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/search.json b/libcloud/test/container/fixtures/docker/linux_121/search.json
deleted file mode 100644
index dd9454c..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/search.json
+++ /dev/null
@@ -1,202 +0,0 @@
-[
-  {
-    "star_count": 1502,
-    "is_official": true,
-    "name": "mysql",
-    "is_trusted": false,
-    "is_automated": false,
-    "description": "MySQL is a widely used, open-source relational database management system (RDBMS)."
-  },
-  {
-    "star_count": 80,
-    "is_official": false,
-    "name": "mysql/mysql-server",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "Optimized MySQL Server Docker images. Created, maintained and supported by the MySQL team at Oracle"
-  },
-  {
-    "star_count": 31,
-    "is_official": false,
-    "name": "centurylink/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "Image containing mysql. Optimized to be linked to another image/container."
-  },
-  {
-    "star_count": 6,
-    "is_official": false,
-    "name": "appcontainers/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "CentOS/Ubuntu/Debian based customizible MySQL 5.5 Container - 284MB/283MB/245MB - Updated 12/14/2015"
-  },
-  {
-    "star_count": 2,
-    "is_official": false,
-    "name": "alterway/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "Docker Mysql"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "tozd/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL (MariaDB fork) Docker image."
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "wenzizone/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "mysql"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "dockerizedrupal/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "docker-mysql"
-  },
-  {
-    "star_count": 2,
-    "is_official": false,
-    "name": "azukiapp/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "Docker image to run MySQL by Azuki - http://azk.io"
-  },
-  {
-    "star_count": 1,
-    "is_official": false,
-    "name": "phpmentors/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL server image"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "lancehudson/docker-mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL is a widely used, open-source relational database management system (RDBMS)."
-  },
-  {
-    "star_count": 1,
-    "is_official": false,
-    "name": "bahmni/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "Mysql container for bahmni.  Contains the openmrs database"
-  },
-  {
-    "star_count": 2,
-    "is_official": false,
-    "name": "yfix/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "Yfix docker built mysql"
-  },
-  {
-    "star_count": 23,
-    "is_official": false,
-    "name": "sameersbn/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": ""
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "nanobox/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL service for nanobox.io"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "withinboredom/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "A MySQL container using s6 and Consul -- built on tatum/mysql"
-  },
-  {
-    "star_count": 4,
-    "is_official": false,
-    "name": "marvambass/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL Server based on Ubuntu 14.04"
-  },
-  {
-    "star_count": 14,
-    "is_official": false,
-    "name": "google/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL server for Google Compute Engine"
-  },
-  {
-    "star_count": 1,
-    "is_official": false,
-    "name": "frodenas/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "A Docker Image for MySQL"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "ahmet2mir/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "This is a Debian based image with MySQL server installed listening on port 3306. "
-  },
-  {
-    "star_count": 25,
-    "is_official": false,
-    "name": "wnameless/mysql-phpmyadmin",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL + phpMyAdmin\nhttps://index.docker.io/u/wnameless/mysql-phpmyadmin/"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "drupaldocker/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL for Drupal"
-  },
-  {
-    "star_count": 0,
-    "is_official": false,
-    "name": "tetraweb/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": ""
-  },
-  {
-    "star_count": 1,
-    "is_official": false,
-    "name": "boomtownroi/mysql-dev",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "A mysql box with consul integration for development. Based on tatum box"
-  },
-  {
-    "star_count": 5,
-    "is_official": false,
-    "name": "ioggstream/mysql",
-    "is_trusted": true,
-    "is_automated": true,
-    "description": "MySQL Image with Master-Slave replication"
-  }
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_121/version.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_121/version.json b/libcloud/test/container/fixtures/docker/linux_121/version.json
deleted file mode 100644
index 3b51d72..0000000
--- a/libcloud/test/container/fixtures/docker/linux_121/version.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "Version": "1.9.1",
-  "ApiVersion": "1.21",
-  "GitCommit": "a34a1d5",
-  "GoVersion": "go1.4.3",
-  "Os": "linux",
-  "Arch": "amd64",
-  "KernelVersion": "3.13.0-46-generic",
-  "BuildTime": "Fri Nov 20 17:56:04 UTC 2015"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/container_a68.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/container_a68.json b/libcloud/test/container/fixtures/docker/linux_124/container_a68.json
new file mode 100644
index 0000000..88282ec
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/container_a68.json
@@ -0,0 +1,163 @@
+{
+  "Id": "a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303",
+  "Created": "2015-12-23T01:05:40.56937184Z",
+  "Path": "/entrypoint.sh",
+  "Args": [
+    "None"
+  ],
+  "State": {
+    "Status": "exited",
+    "Running": false,
+    "Paused": false,
+    "Restarting": false,
+    "OOMKilled": false,
+    "Dead": false,
+    "Pid": 0,
+    "ExitCode": 127,
+    "Error": "",
+    "StartedAt": "2015-12-23T01:06:29.018395755Z",
+    "FinishedAt": "2015-12-23T01:06:30.144487212Z"
+  },
+  "Image": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
+  "ResolvConfPath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/resolv.conf",
+  "HostnamePath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/hostname",
+  "HostsPath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/hosts",
+  "LogPath": "/var/lib/docker/containers/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303/a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303-json.log",
+  "Name": "/gigantic_goldberg",
+  "RestartCount": 0,
+  "Driver": "aufs",
+  "ExecDriver": "native-0.2",
+  "MountLabel": "",
+  "ProcessLabel": "",
+  "AppArmorProfile": "",
+  "ExecIDs": null,
+  "HostConfig": {
+    "Binds": null,
+    "ContainerIDFile": "",
+    "LxcConf": null,
+    "Memory": 0,
+    "MemoryReservation": 0,
+    "MemorySwap": 0,
+    "KernelMemory": 0,
+    "CpuShares": 0,
+    "CpuPeriod": 0,
+    "CpusetCpus": "",
+    "CpusetMems": "",
+    "CpuQuota": 0,
+    "BlkioWeight": 0,
+    "OomKillDisable": false,
+    "MemorySwappiness": null,
+    "Privileged": false,
+    "PortBindings": {},
+    "Links": null,
+    "PublishAllPorts": true,
+    "Dns": null,
+    "DnsOptions": null,
+    "DnsSearch": null,
+    "ExtraHosts": null,
+    "VolumesFrom": null,
+    "Devices": null,
+    "NetworkMode": "default",
+    "IpcMode": "",
+    "PidMode": "",
+    "UTSMode": "",
+    "CapAdd": null,
+    "CapDrop": null,
+    "GroupAdd": null,
+    "RestartPolicy": {
+      "Name": "",
+      "MaximumRetryCount": 0
+    },
+    "SecurityOpt": null,
+    "ReadonlyRootfs": false,
+    "Ulimits": null,
+    "LogConfig": {
+      "Type": "json-file",
+      "Config": {}
+    },
+    "CgroupParent": "",
+    "ConsoleSize": [
+      0,
+      0
+    ],
+    "VolumeDriver": ""
+  },
+  "GraphDriver": {
+    "Name": "aufs",
+    "Data": null
+  },
+  "Mounts": [
+    {
+      "Name": "b1a70d8e1ebd7d5865e59ff91cf06357e3ef4d829af44c31675c2d0a24894444",
+      "Source": "/var/lib/docker/volumes/b1a70d8e1ebd7d5865e59ff91cf06357e3ef4d829af44c31675c2d0a24894444/_data",
+      "Destination": "/data/db",
+      "Driver": "local",
+      "Mode": "",
+      "RW": true
+    }
+  ],
+  "Config": {
+    "Hostname": "a68c1872c746",
+    "Domainname": "",
+    "User": "",
+    "AttachStdin": true,
+    "AttachStdout": true,
+    "AttachStderr": true,
+    "ExposedPorts": {
+      "27017/tcp": {}
+    },
+    "Tty": true,
+    "OpenStdin": true,
+    "StdinOnce": false,
+    "Env": [
+      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
+      "GPG_KEYS=DFFA3DCF326E302C4787673A01C4E7FAAAB2461C \t42F3E95A2C4F08279C4960ADD68FA50FEA312927",
+      "MONGO_MAJOR=3.2",
+      "MONGO_VERSION=3.2.0"
+    ],
+    "Cmd": [
+      "None"
+    ],
+    "Image": "mongo:latest",
+    "Volumes": {
+      "/data/db": {}
+    },
+    "WorkingDir": "",
+    "Entrypoint": [
+      "/entrypoint.sh"
+    ],
+    "OnBuild": null,
+    "Labels": {}
+  },
+  "NetworkSettings": {
+    "Bridge": "",
+    "SandboxID": "",
+    "HairpinMode": false,
+    "LinkLocalIPv6Address": "",
+    "LinkLocalIPv6PrefixLen": 0,
+    "Ports": null,
+    "SandboxKey": "",
+    "SecondaryIPAddresses": null,
+    "SecondaryIPv6Addresses": null,
+    "EndpointID": "",
+    "Gateway": "",
+    "GlobalIPv6Address": "",
+    "GlobalIPv6PrefixLen": 0,
+    "IPAddress": "",
+    "IPPrefixLen": 0,
+    "IPv6Gateway": "",
+    "MacAddress": "",
+    "Networks": {
+      "bridge": {
+        "EndpointID": "",
+        "Gateway": "",
+        "IPAddress": "",
+        "IPPrefixLen": 0,
+        "IPv6Gateway": "",
+        "GlobalIPv6Address": "",
+        "GlobalIPv6PrefixLen": 0,
+        "MacAddress": ""
+      }
+    }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/containers.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/containers.json b/libcloud/test/container/fixtures/docker/linux_124/containers.json
new file mode 100644
index 0000000..3228e3f
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/containers.json
@@ -0,0 +1,143 @@
+[
+  {
+    "Id": "160936dc54fe8c332095676d9379003534b8cddd7565fa63018996e06dae1b6b",
+    "Names": [
+      "/hubot"
+    ],
+    "Image": "stackstorm/hubot",
+    "ImageID": "05c5761707b3970a9bf17c00886176add79ac087b4d6a500ac87985bf8ec07b1",
+    "Command": "/app/bin/hubot",
+    "Created": 1450130345,
+    "Ports": [],
+    "Labels": {},
+    "Status": "Exited (137) 11 minutes ago",
+    "HostConfig": {
+      "NetworkMode": "bridge"
+    }
+  },
+  {
+    "Id": "f159072147ee7d253e21ec8fd2778a27ac29d7fc5f865641900d16665b46215a",
+    "Names": [
+      "/mongo"
+    ],
+    "Image": "mongo",
+    "ImageID": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
+    "Command": "/entrypoint.sh mongod",
+    "Created": 1450130332,
+    "Ports": [],
+    "Labels": {},
+    "Status": "Exited (14) 2 hours ago",
+    "HostConfig": {
+      "NetworkMode": "bridge"
+    }
+  },
+  {
+    "Id": "e687b33f9ced0153104308e6ff7a2138b8cc026fa4085d31da831a02ed0dc03d",
+    "Names": [
+      "/rabbitmq"
+    ],
+    "Image": "rabbitmq",
+    "ImageID": "448afeda0388b18c6f3be18c7aaece29e0f8dbdfab30364e678c382bab1037c5",
+    "Command": "/docker-entrypoint.sh rabbitmq-server",
+    "Created": 1450130331,
+    "Ports": [
+      {
+        "IP": "0.0.0.0",
+        "PrivatePort": 5672,
+        "PublicPort": 5672,
+        "Type": "tcp"
+      },
+      {
+        "PrivatePort": 25672,
+        "Type": "tcp"
+      },
+      {
+        "PrivatePort": 4369,
+        "Type": "tcp"
+      },
+      {
+        "PrivatePort": 5671,
+        "Type": "tcp"
+      }
+    ],
+    "Labels": {},
+    "Status": "Exited (137) 11 minutes ago",
+    "HostConfig": {
+      "NetworkMode": "bridge"
+    }
+  },
+  {
+    "Id": "b82c16423c6dbb7cd1564f8fc413c822df45cc0c7aa35c24683a1329af6ec102",
+    "Names": [
+      "/fervent_bhabha"
+    ],
+    "Image": "rabbitmq",
+    "ImageID": "448afeda0388b18c6f3be18c7aaece29e0f8dbdfab30364e678c382bab1037c5",
+    "Command": "/docker-entrypoint.sh rabbitmq-server",
+    "Created": 1450059506,
+    "Ports": [
+      {
+        "PrivatePort": 4369,
+        "Type": "tcp"
+      },
+      {
+        "PrivatePort": 5671,
+        "Type": "tcp"
+      },
+      {
+        "IP": "0.0.0.0",
+        "PrivatePort": 5672,
+        "PublicPort": 5672,
+        "Type": "tcp"
+      },
+      {
+        "PrivatePort": 25672,
+        "Type": "tcp"
+      }
+    ],
+    "Labels": {},
+    "Status": "Dead",
+    "HostConfig": {
+      "NetworkMode": "bridge"
+    }
+  },
+  {
+    "Id": "8cc5481aa4621578f8dd2c942d74e27e75170c6899ea012db7a44ea5f1ba2069",
+    "Names": [
+      "/suspicious_swirles"
+    ],
+    "Image": "mongo",
+    "ImageID": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
+    "Command": "/entrypoint.sh mongod",
+    "Created": 1450059505,
+    "Ports": [
+      {
+        "IP": "0.0.0.0",
+        "PrivatePort": 27017,
+        "PublicPort": 27017,
+        "Type": "tcp"
+      }
+    ],
+    "Labels": {},
+    "Status": "Dead",
+    "HostConfig": {
+      "NetworkMode": "bridge"
+    }
+  },
+  {
+    "Id": "598b3e4d15a406390baaa2947f910e7b52b810a4120028692ed309247f2e8346",
+    "Names": [
+      "/mongodata"
+    ],
+    "Image": "mongo",
+    "ImageID": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
+    "Command": "/entrypoint.sh /bin/true",
+    "Created": 1449637213,
+    "Ports": [],
+    "Labels": {},
+    "Status": "Created",
+    "HostConfig": {
+      "NetworkMode": "default"
+    }
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/create_container.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/create_container.json b/libcloud/test/container/fixtures/docker/linux_124/create_container.json
new file mode 100644
index 0000000..e05a941
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/create_container.json
@@ -0,0 +1,4 @@
+{
+  "Id": "a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303",
+  "Warnings": null
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/create_image.txt
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/create_image.txt b/libcloud/test/container/fixtures/docker/linux_124/create_image.txt
new file mode 100644
index 0000000..9eeee42
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/create_image.txt
@@ -0,0 +1,238 @@
+{"status":"Pulling from library/ubuntu","id":"12.04"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"36cef014d5d4"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Waiting","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Waiting","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Downloading","progressDetail":{"current":419,"total":419},"progress":"[==================================================\u003e]    419 B/419 B","id":"3e32dbf1ab94"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Download complete","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Downloading","progressDetail":{"current":16384,"total":57935},"progress":"[==============\u003e                                    ] 16.38 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Downloading","progressDetail":{"current":32768,"total":57935},"progress":"[============================\u003e                      ] 32.77 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Downloading","progressDetail":{"current":57935,"total":57935},"progress":"[==================================================\u003e] 57.94 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Download complete","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Downloading","progressDetail":{"current":162,"total":162},"progress":"[==================================================\u003e]    162 B/162 B","id":"56e70ac3b314"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Download complete","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Downloading","progressDetail":{"current":682,"total":682},"progress":"[==================================================\u003e]    682 B/682 B","id":"44710c456ffc"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Download complete","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Downloading","progressDetail":{"current":392563,"total":39081844},"progress":"[\u003e                                                  ] 392.6 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":783955,"total":39081844},"progress":"[=\u003e                                                 ]   784 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":1178995,"total":39081844},"progress":"[=\u003e                                                 ] 1.179 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":1572211,"total":39081844},"progress":"[==\u003e                                                ] 1.572 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":1965427,"total":39081844},"progress":"[==\u003e                                                ] 1.965 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":2358643,"total":39081844},"progress":"[===\u003e                                               ] 2.359 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":2751859,"total":39081844},"progress":"[===\u003e                                               ] 2.752 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":3145075,"total":39081844},"progress":"[====\u003e                                              ] 3.145 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":3538291,"total":39081844},"progress":"[====\u003e                                              ] 3.538 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":3931507,"total":39081844},"progress":"[=====\u003e                                             ] 3.932 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":4324723,"total":39081844},"progress":"[=====\u003e                                             ] 4.325 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":4717939,"total":39081844},"progress":"[======\u003e                                            ] 4.718 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":5111155,"total":39081844},"progress":"[======\u003e                                            ] 5.111 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":5504371,"total":39081844},"progress":"[=======\u003e                                           ] 5.504 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":5897587,"total":39081844},"progress":"[=======\u003e                                           ] 5.898 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":6290803,"total":39081844},"progress":"[========\u003e                                          ] 6.291 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":6684019,"total":39081844},"progress":"[========\u003e                                          ] 6.684 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":7077235,"total":39081844},"progress":"[=========\u003e                                         ] 7.077 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":7470451,"total":39081844},"progress":"[=========\u003e                                         ]  7.47 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":7863667,"total":39081844},"progress":"[==========\u003e                                        ] 7.864 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":8256883,"total":39081844},"progress":"[==========\u003e                                        ] 8.257 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":8650099,"total":39081844},"progress":"[===========\u003e                                       ]  8.65 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":9043315,"total":39081844},"progress":"[===========\u003e                                       ] 9.043 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":9436531,"total":39081844},"progress":"[============\u003e                                      ] 9.437 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":9829747,"total":39081844},"progress":"[============\u003e                                      ]  9.83 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":10222963,"total":39081844},"progress":"[=============\u003e                                     ] 10.22 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":10616179,"total":39081844},"progress":"[=============\u003e                                     ] 10.62 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":11009395,"total":39081844},"progress":"[==============\u003e                                    ] 11.01 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":11402611,"total":39081844},"progress":"[==============\u003e                                    ]  11.4 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":11795827,"total":39081844},"progress":"[===============\u003e                                   ]  11.8 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":12189043,"total":39081844},"progress":"[===============\u003e                                   ] 12.19 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":12582259,"total":39081844},"progress":"[================\u003e                                  ] 12.58 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":12975475,"total":39081844},"progress":"[================\u003e                                  ] 12.98 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":13368691,"total":39081844},"progress":"[=================\u003e                                 ] 13.37 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":13761907,"total":39081844},"progress":"[=================\u003e                                 ] 13.76 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":14155123,"total":39081844},"progress":"[==================\u003e                                ] 14.16 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":14548339,"total":39081844},"progress":"[==================\u003e                                ] 14.55 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":14941555,"total":39081844},"progress":"[===================\u003e                               ] 14.94 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":15334771,"total":39081844},"progress":"[===================\u003e                               ] 15.33 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":15727987,"total":39081844},"progress":"[====================\u003e                              ] 15.73 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":16121203,"total":39081844},"progress":"[====================\u003e                              ] 16.12 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":16514419,"total":39081844},"progress":"[=====================\u003e                             ] 16.51 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":16907635,"total":39081844},"progress":"[=====================\u003e                             ] 16.91 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":17300851,"total":39081844},"progress":"[======================\u003e                            ]  17.3 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":17694067,"total":39081844},"progress":"[======================\u003e                            ] 17.69 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":18087283,"total":39081844},"progress":"[=======================\u003e                           ] 18.09 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":18480499,"total":39081844},"progress":"[=======================\u003e                           ] 18.48 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":18873715,"total":39081844},"progress":"[========================\u003e                          ] 18.87 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":19266931,"total":39081844},"progress":"[========================\u003e                          ] 19.27 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":19660147,"total":39081844},"progress":"[=========================\u003e                         ] 19.66 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":20053363,"total":39081844},"progress":"[=========================\u003e                         ] 20.05 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":20446579,"total":39081844},"progress":"[==========================\u003e                        ] 20.45 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":20839795,"total":39081844},"progress":"[==========================\u003e                        ] 20.84 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":21233011,"total":39081844},"progress":"[===========================\u003e                       ] 21.23 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":21626227,"total":39081844},"progress":"[===========================\u003e                       ] 21.63 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":22019443,"total":39081844},"progress":"[============================\u003e                      ] 22.02 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":22412659,"total":39081844},"progress":"[============================\u003e                      ] 22.41 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":22805875,"total":39081844},"progress":"[=============================\u003e                     ] 22.81 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":23199091,"total":39081844},"progress":"[=============================\u003e                     ]  23.2 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":23592307,"total":39081844},"progress":"[==============================\u003e                    ] 23.59 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":23985523,"total":39081844},"progress":"[==============================\u003e                    ] 23.99 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":24378739,"total":39081844},"progress":"[===============================\u003e                   ] 24.38 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":24771955,"total":39081844},"progress":"[===============================\u003e                   ] 24.77 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":25165171,"total":39081844},"progress":"[================================\u003e                  ] 25.17 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":25558387,"total":39081844},"progress":"[================================\u003e                  ] 25.56 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":25951603,"total":39081844},"progress":"[=================================\u003e                 ] 25.95 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":26344819,"total":39081844},"progress":"[=================================\u003e                 ] 26.34 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":26738035,"total":39081844},"progress":"[==================================\u003e                ] 26.74 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":27131251,"total":39081844},"progress":"[==================================\u003e                ] 27.13 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":27524467,"total":39081844},"progress":"[===================================\u003e               ] 27.52 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":27917683,"total":39081844},"progress":"[===================================\u003e               ] 27.92 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":28310899,"total":39081844},"progress":"[====================================\u003e              ] 28.31 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":28704115,"total":39081844},"progress":"[====================================\u003e              ]  28.7 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":29097331,"total":39081844},"progress":"[=====================================\u003e             ]  29.1 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":29490547,"total":39081844},"progress":"[=====================================\u003e             ] 29.49 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":29883763,"total":39081844},"progress":"[======================================\u003e            ] 29.88 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":30276979,"total":39081844},"progress":"[======================================\u003e            ] 30.28 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":30670195,"total":39081844},"progress":"[=======================================\u003e           ] 30.67 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":31063411,"total":39081844},"progress":"[=======================================\u003e           ] 31.06 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":31456627,"total":39081844},"progress":"[========================================\u003e          ] 31.46 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":31849843,"total":39081844},"progress":"[========================================\u003e          ] 31.85 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":32243059,"total":39081844},"progress":"[=========================================\u003e         ] 32.24 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":32636275,"total":39081844},"progress":"[=========================================\u003e         ] 32.64 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":33029491,"total":39081844},"progress":"[==========================================\u003e        ] 33.03 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":33422707,"total":39081844},"progress":"[==========================================\u003e        ] 33.42 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":33815923,"total":39081844},"progress":"[===========================================\u003e       ] 33.82 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":34209139,"total":39081844},"progress":"[===========================================\u003e       ] 34.21 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":34602355,"total":39081844},"progress":"[============================================\u003e      ]  34.6 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":34995571,"total":39081844},"progress":"[============================================\u003e      ]    35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":35388787,"total":39081844},"progress":"[=============================================\u003e     ] 35.39 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":35782003,"total":39081844},"progress":"[=============================================\u003e     ] 35.78 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":36175219,"total":39081844},"progress":"[==============================================\u003e    ] 36.18 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":36568435,"total":39081844},"progress":"[==============================================\u003e    ] 36.57 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":36961651,"total":39081844},"progress":"[===============================================\u003e   ] 36.96 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":37354867,"total":39081844},"progress":"[===============================================\u003e   ] 37.35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":37748083,"total":39081844},"progress":"[================================================\u003e  ] 37.75 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":38141299,"total":39081844},"progress":"[================================================\u003e  ] 38.14 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":38534515,"total":39081844},"progress":"[=================================================\u003e ] 38.53 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":38927731,"total":39081844},"progress":"[=================================================\u003e ] 38.93 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Download complete","progressDetail":{},"id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":393216,"total":39081844},"progress":"[\u003e                                                  ] 393.2 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":786432,"total":39081844},"progress":"[=\u003e                                                 ] 786.4 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":1179648,"total":39081844},"progress":"[=\u003e                                                 ]  1.18 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":1572864,"total":39081844},"progress":"[==\u003e                                                ] 1.573 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":1966080,"total":39081844},"progress":"[==\u003e                                                ] 1.966 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":2359296,"total":39081844},"progress":"[===\u003e                                               ] 2.359 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":2752512,"total":39081844},"progress":"[===\u003e                                               ] 2.753 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":3145728,"total":39081844},"progress":"[====\u003e                                              ] 3.146 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":3538944,"total":39081844},"progress":"[====\u003e                                              ] 3.539 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":3932160,"total":39081844},"progress":"[=====\u003e                                             ] 3.932 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":4325376,"total":39081844},"progress":"[=====\u003e                                             ] 4.325 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":4718592,"total":39081844},"progress":"[======\u003e                                            ] 4.719 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":5111808,"total":39081844},"progress":"[======\u003e                                            ] 5.112 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":5505024,"total":39081844},"progress":"[=======\u003e                                           ] 5.505 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":5898240,"total":39081844},"progress":"[=======\u003e                                           ] 5.898 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":6291456,"total":39081844},"progress":"[========\u003e                                          ] 6.291 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":6684672,"total":39081844},"progress":"[========\u003e                                          ] 6.685 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":7077888,"total":39081844},"progress":"[=========\u003e                                         ] 7.078 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":7471104,"total":39081844},"progress":"[=========\u003e                                         ] 7.471 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":7864320,"total":39081844},"progress":"[==========\u003e                                        ] 7.864 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":8257536,"total":39081844},"progress":"[==========\u003e                                        ] 8.258 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":8650752,"total":39081844},"progress":"[===========\u003e                                       ] 8.651 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":9043968,"total":39081844},"progress":"[===========\u003e                                       ] 9.044 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":9437184,"total":39081844},"progress":"[============\u003e                                      ] 9.437 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":9830400,"total":39081844},"progress":"[============\u003e                                      ]  9.83 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":10223616,"total":39081844},"progress":"[=============\u003e                                     ] 10.22 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":10616832,"total":39081844},"progress":"[=============\u003e                                     ] 10.62 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":11010048,"total":39081844},"progress":"[==============\u003e                                    ] 11.01 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":11403264,"total":39081844},"progress":"[==============\u003e                                    ]  11.4 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":11796480,"total":39081844},"progress":"[===============\u003e                                   ]  11.8 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":12189696,"total":39081844},"progress":"[===============\u003e                                   ] 12.19 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":12582912,"total":39081844},"progress":"[================\u003e                                  ] 12.58 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":12976128,"total":39081844},"progress":"[================\u003e                                  ] 12.98 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":13369344,"total":39081844},"progress":"[=================\u003e                                 ] 13.37 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":13762560,"total":39081844},"progress":"[=================\u003e                                 ] 13.76 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":14155776,"total":39081844},"progress":"[==================\u003e                                ] 14.16 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":14548992,"total":39081844},"progress":"[==================\u003e                                ] 14.55 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":14942208,"total":39081844},"progress":"[===================\u003e                               ] 14.94 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":15335424,"total":39081844},"progress":"[===================\u003e                               ] 15.34 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":15728640,"total":39081844},"progress":"[====================\u003e                              ] 15.73 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":16121856,"total":39081844},"progress":"[====================\u003e                              ] 16.12 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":16515072,"total":39081844},"progress":"[=====================\u003e                             ] 16.52 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":16908288,"total":39081844},"progress":"[=====================\u003e                             ] 16.91 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":17301504,"total":39081844},"progress":"[======================\u003e                            ]  17.3 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":17694720,"total":39081844},"progress":"[======================\u003e                            ] 17.69 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":18087936,"total":39081844},"progress":"[=======================\u003e                           ] 18.09 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":18481152,"total":39081844},"progress":"[=======================\u003e                           ] 18.48 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":18874368,"total":39081844},"progress":"[========================\u003e                          ] 18.87 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":19267584,"total":39081844},"progress":"[========================\u003e                          ] 19.27 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":19660800,"total":39081844},"progress":"[=========================\u003e                         ] 19.66 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":20054016,"total":39081844},"progress":"[=========================\u003e                         ] 20.05 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":20447232,"total":39081844},"progress":"[==========================\u003e                        ] 20.45 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":20840448,"total":39081844},"progress":"[==========================\u003e                        ] 20.84 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":21233664,"total":39081844},"progress":"[===========================\u003e                       ] 21.23 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":21626880,"total":39081844},"progress":"[===========================\u003e                       ] 21.63 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":22020096,"total":39081844},"progress":"[============================\u003e                      ] 22.02 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":22413312,"total":39081844},"progress":"[============================\u003e                      ] 22.41 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":22806528,"total":39081844},"progress":"[=============================\u003e                     ] 22.81 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":23199744,"total":39081844},"progress":"[=============================\u003e                     ]  23.2 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":23592960,"total":39081844},"progress":"[==============================\u003e                    ] 23.59 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":23986176,"total":39081844},"progress":"[==============================\u003e                    ] 23.99 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":24379392,"total":39081844},"progress":"[===============================\u003e                   ] 24.38 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":24772608,"total":39081844},"progress":"[===============================\u003e                   ] 24.77 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":25165824,"total":39081844},"progress":"[================================\u003e                  ] 25.17 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":25559040,"total":39081844},"progress":"[================================\u003e                  ] 25.56 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":25952256,"total":39081844},"progress":"[=================================\u003e                 ] 25.95 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":26345472,"total":39081844},"progress":"[=================================\u003e                 ] 26.35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":26738688,"total":39081844},"progress":"[==================================\u003e                ] 26.74 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":27131904,"total":39081844},"progress":"[==================================\u003e                ] 27.13 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":27525120,"total":39081844},"progress":"[===================================\u003e               ] 27.53 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":27918336,"total":39081844},"progress":"[===================================\u003e               ] 27.92 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":28311552,"total":39081844},"progress":"[====================================\u003e              ] 28.31 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":28704768,"total":39081844},"progress":"[====================================\u003e              ]  28.7 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":29097984,"total":39081844},"progress":"[=====================================\u003e             ]  29.1 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":29491200,"total":39081844},"progress":"[=====================================\u003e             ] 29.49 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":29884416,"total":39081844},"progress":"[======================================\u003e            ] 29.88 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":30277632,"total":39081844},"progress":"[======================================\u003e            ] 30.28 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":30670848,"total":39081844},"progress":"[=======================================\u003e           ] 30.67 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":31064064,"total":39081844},"progress":"[=======================================\u003e           ] 31.06 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":31457280,"total":39081844},"progress":"[========================================\u003e          ] 31.46 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":31850496,"total":39081844},"progress":"[========================================\u003e          ] 31.85 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":32243712,"total":39081844},"progress":"[=========================================\u003e         ] 32.24 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":32636928,"total":39081844},"progress":"[=========================================\u003e         ] 32.64 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":33030144,"total":39081844},"progress":"[==========================================\u003e        ] 33.03 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":33423360,"total":39081844},"progress":"[==========================================\u003e        ] 33.42 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":33816576,"total":39081844},"progress":"[===========================================\u003e       ] 33.82 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":34209792,"total":39081844},"progress":"[===========================================\u003e       ] 34.21 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":34603008,"total":39081844},"progress":"[============================================\u003e      ]  34.6 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":34996224,"total":39081844},"progress":"[============================================\u003e      ]    35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":35389440,"total":39081844},"progress":"[=============================================\u003e     ] 35.39 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":35782656,"total":39081844},"progress":"[=============================================\u003e     ] 35.78 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":36175872,"total":39081844},"progress":"[==============================================\u003e    ] 36.18 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":36569088,"total":39081844},"progress":"[==============================================\u003e    ] 36.57 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":36962304,"total":39081844},"progress":"[===============================================\u003e   ] 36.96 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":37355520,"total":39081844},"progress":"[===============================================\u003e   ] 37.36 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":37748736,"total":39081844},"progress":"[================================================\u003e  ] 37.75 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":38141952,"total":39081844},"progress":"[================================================\u003e  ] 38.14 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":38535168,"total":39081844},"progress":"[=================================================\u003e ] 38.54 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":38928384,"total":39081844},"progress":"[=================================================\u003e ] 38.93 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":39081844,"total":39081844},"progress":"[==================================================\u003e] 39.08 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Pull complete","progressDetail":{},"id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":32768,"total":57935},"progress":"[============================\u003e                      ] 32.77 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Extracting","progressDetail":{"current":57935,"total":57935},"progress":"[==================================================\u003e] 57.94 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Extracting","progressDetail":{"current":57935,"total":57935},"progress":"[==================================================\u003e] 57.94 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Pull complete","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Extracting","progressDetail":{"current":419,"total":419},"progress":"[==================================================\u003e]    419 B/419 B","id":"3e32dbf1ab94"}
+{"status":"Extracting","progressDetail":{"current":419,"total":419},"progress":"[==================================================\u003e]    419 B/419 B","id":"3e32dbf1ab94"}
+{"status":"Pull complete","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Extracting","progressDetail":{"current":682,"total":682},"progress":"[==================================================\u003e]    682 B/682 B","id":"44710c456ffc"}
+{"status":"Extracting","progressDetail":{"current":682,"total":682},"progress":"[==================================================\u003e]    682 B/682 B","id":"44710c456ffc"}
+{"status":"Pull complete","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Extracting","progressDetail":{"current":162,"total":162},"progress":"[==================================================\u003e]    162 B/162 B","id":"56e70ac3b314"}
+{"status":"Extracting","progressDetail":{"current":162,"total":162},"progress":"[==================================================\u003e]    162 B/162 B","id":"56e70ac3b314"}
+{"status":"Pull complete","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Digest: sha256:992069aee4016783df6345315302fa59681aae51a8eeb2f889dea59290f21787"}
+{"status":"Status: Downloaded newer image for ubuntu:12.04"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/images.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/images.json b/libcloud/test/container/fixtures/docker/linux_124/images.json
new file mode 100644
index 0000000..ac04cf3
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/images.json
@@ -0,0 +1,50 @@
+[
+  {
+    "Id": "cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0",
+    "ParentId": "3e408cde1b7f6276b9ead7b8111d80a367f9223dfbbd4102ea89a5fc42947960",
+    "RepoTags": [
+      "mongo:latest"
+    ],
+    "RepoDigests": [],
+    "Created": 1449618009,
+    "Size": 0,
+    "VirtualSize": 316957672,
+    "Labels": null
+  },
+  {
+    "Id": "05c5761707b3970a9bf17c00886176add79ac087b4d6a500ac87985bf8ec07b1",
+    "ParentId": "be7965ce1bef5d2e3b27efb3f4fe2253683bc7144d2ebae614e9e7155066c833",
+    "RepoTags": [
+      "stackstorm/hubot:latest"
+    ],
+    "RepoDigests": [],
+    "Created": 1449466772,
+    "Size": 0,
+    "VirtualSize": 550102318,
+    "Labels": {}
+  },
+  {
+    "Id": "448afeda0388b18c6f3be18c7aaece29e0f8dbdfab30364e678c382bab1037c5",
+    "ParentId": "67edbf589f9af9b2c6f87e8481ec0299c50bfce5f9b98b95316c7235494c7bea",
+    "RepoTags": [
+      "rabbitmq:latest"
+    ],
+    "RepoDigests": [],
+    "Created": 1449312753,
+    "Size": 0,
+    "VirtualSize": 304310861,
+    "Labels": null
+  },
+  {
+    "Id": "9da5438fedb2e9a1e11a3361c4a53e0801ed1f8f4c014d83a5a514f0c60892bf",
+    "ParentId": "64ccc5e9d20c638849eadddab4f23204c3fcdd62d497cdbd0ecf44d863b086c8",
+    "RepoTags": [
+      "mongo:2.4.14"
+    ],
+    "RepoDigests": [],
+    "Created": 1449299455,
+    "Size": 0,
+    "VirtualSize": 344445131,
+    "Labels": null
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/logs.txt
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/logs.txt b/libcloud/test/container/fixtures/docker/linux_124/logs.txt
new file mode 100644
index 0000000..12c3a44
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/logs.txt
@@ -0,0 +1 @@
+/entrypoint.sh: line 19: exec: None: not found

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/search.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/search.json b/libcloud/test/container/fixtures/docker/linux_124/search.json
new file mode 100644
index 0000000..dd9454c
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/search.json
@@ -0,0 +1,202 @@
+[
+  {
+    "star_count": 1502,
+    "is_official": true,
+    "name": "mysql",
+    "is_trusted": false,
+    "is_automated": false,
+    "description": "MySQL is a widely used, open-source relational database management system (RDBMS)."
+  },
+  {
+    "star_count": 80,
+    "is_official": false,
+    "name": "mysql/mysql-server",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "Optimized MySQL Server Docker images. Created, maintained and supported by the MySQL team at Oracle"
+  },
+  {
+    "star_count": 31,
+    "is_official": false,
+    "name": "centurylink/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "Image containing mysql. Optimized to be linked to another image/container."
+  },
+  {
+    "star_count": 6,
+    "is_official": false,
+    "name": "appcontainers/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "CentOS/Ubuntu/Debian based customizible MySQL 5.5 Container - 284MB/283MB/245MB - Updated 12/14/2015"
+  },
+  {
+    "star_count": 2,
+    "is_official": false,
+    "name": "alterway/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "Docker Mysql"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "tozd/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL (MariaDB fork) Docker image."
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "wenzizone/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "mysql"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "dockerizedrupal/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "docker-mysql"
+  },
+  {
+    "star_count": 2,
+    "is_official": false,
+    "name": "azukiapp/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "Docker image to run MySQL by Azuki - http://azk.io"
+  },
+  {
+    "star_count": 1,
+    "is_official": false,
+    "name": "phpmentors/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL server image"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "lancehudson/docker-mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL is a widely used, open-source relational database management system (RDBMS)."
+  },
+  {
+    "star_count": 1,
+    "is_official": false,
+    "name": "bahmni/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "Mysql container for bahmni.  Contains the openmrs database"
+  },
+  {
+    "star_count": 2,
+    "is_official": false,
+    "name": "yfix/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "Yfix docker built mysql"
+  },
+  {
+    "star_count": 23,
+    "is_official": false,
+    "name": "sameersbn/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": ""
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "nanobox/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL service for nanobox.io"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "withinboredom/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "A MySQL container using s6 and Consul -- built on tatum/mysql"
+  },
+  {
+    "star_count": 4,
+    "is_official": false,
+    "name": "marvambass/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL Server based on Ubuntu 14.04"
+  },
+  {
+    "star_count": 14,
+    "is_official": false,
+    "name": "google/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL server for Google Compute Engine"
+  },
+  {
+    "star_count": 1,
+    "is_official": false,
+    "name": "frodenas/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "A Docker Image for MySQL"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "ahmet2mir/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "This is a Debian based image with MySQL server installed listening on port 3306. "
+  },
+  {
+    "star_count": 25,
+    "is_official": false,
+    "name": "wnameless/mysql-phpmyadmin",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL + phpMyAdmin\nhttps://index.docker.io/u/wnameless/mysql-phpmyadmin/"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "drupaldocker/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL for Drupal"
+  },
+  {
+    "star_count": 0,
+    "is_official": false,
+    "name": "tetraweb/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": ""
+  },
+  {
+    "star_count": 1,
+    "is_official": false,
+    "name": "boomtownroi/mysql-dev",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "A mysql box with consul integration for development. Based on tatum box"
+  },
+  {
+    "star_count": 5,
+    "is_official": false,
+    "name": "ioggstream/mysql",
+    "is_trusted": true,
+    "is_automated": true,
+    "description": "MySQL Image with Master-Slave replication"
+  }
+]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/linux_124/version.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/linux_124/version.json b/libcloud/test/container/fixtures/docker/linux_124/version.json
new file mode 100644
index 0000000..3b51d72
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/linux_124/version.json
@@ -0,0 +1,10 @@
+{
+  "Version": "1.9.1",
+  "ApiVersion": "1.21",
+  "GitCommit": "a34a1d5",
+  "GoVersion": "go1.4.3",
+  "Os": "linux",
+  "Arch": "amd64",
+  "KernelVersion": "3.13.0-46-generic",
+  "BuildTime": "Fri Nov 20 17:56:04 UTC 2015"
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/mac_124/create_image.json
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/mac_124/create_image.json b/libcloud/test/container/fixtures/docker/mac_124/create_image.json
deleted file mode 100644
index 4509f55..0000000
--- a/libcloud/test/container/fixtures/docker/mac_124/create_image.json
+++ /dev/null
@@ -1 +0,0 @@
-{"status":"Download complete","progressDetail":{},"id":"cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0"}
\ No newline at end of file


[3/5] libcloud git commit: Fix Docker Driver install_image response parsing and update test fixtures Closes #918

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/fixtures/docker/mac_124/create_image.txt
----------------------------------------------------------------------
diff --git a/libcloud/test/container/fixtures/docker/mac_124/create_image.txt b/libcloud/test/container/fixtures/docker/mac_124/create_image.txt
new file mode 100644
index 0000000..9eeee42
--- /dev/null
+++ b/libcloud/test/container/fixtures/docker/mac_124/create_image.txt
@@ -0,0 +1,238 @@
+{"status":"Pulling from library/ubuntu","id":"12.04"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"36cef014d5d4"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Pulling fs layer","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Waiting","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Waiting","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Downloading","progressDetail":{"current":419,"total":419},"progress":"[==================================================\u003e]    419 B/419 B","id":"3e32dbf1ab94"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Download complete","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Downloading","progressDetail":{"current":16384,"total":57935},"progress":"[==============\u003e                                    ] 16.38 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Downloading","progressDetail":{"current":32768,"total":57935},"progress":"[============================\u003e                      ] 32.77 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Downloading","progressDetail":{"current":57935,"total":57935},"progress":"[==================================================\u003e] 57.94 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Download complete","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Downloading","progressDetail":{"current":162,"total":162},"progress":"[==================================================\u003e]    162 B/162 B","id":"56e70ac3b314"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Download complete","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Downloading","progressDetail":{"current":682,"total":682},"progress":"[==================================================\u003e]    682 B/682 B","id":"44710c456ffc"}
+{"status":"Verifying Checksum","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Download complete","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Downloading","progressDetail":{"current":392563,"total":39081844},"progress":"[\u003e                                                  ] 392.6 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":783955,"total":39081844},"progress":"[=\u003e                                                 ]   784 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":1178995,"total":39081844},"progress":"[=\u003e                                                 ] 1.179 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":1572211,"total":39081844},"progress":"[==\u003e                                                ] 1.572 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":1965427,"total":39081844},"progress":"[==\u003e                                                ] 1.965 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":2358643,"total":39081844},"progress":"[===\u003e                                               ] 2.359 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":2751859,"total":39081844},"progress":"[===\u003e                                               ] 2.752 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":3145075,"total":39081844},"progress":"[====\u003e                                              ] 3.145 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":3538291,"total":39081844},"progress":"[====\u003e                                              ] 3.538 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":3931507,"total":39081844},"progress":"[=====\u003e                                             ] 3.932 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":4324723,"total":39081844},"progress":"[=====\u003e                                             ] 4.325 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":4717939,"total":39081844},"progress":"[======\u003e                                            ] 4.718 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":5111155,"total":39081844},"progress":"[======\u003e                                            ] 5.111 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":5504371,"total":39081844},"progress":"[=======\u003e                                           ] 5.504 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":5897587,"total":39081844},"progress":"[=======\u003e                                           ] 5.898 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":6290803,"total":39081844},"progress":"[========\u003e                                          ] 6.291 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":6684019,"total":39081844},"progress":"[========\u003e                                          ] 6.684 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":7077235,"total":39081844},"progress":"[=========\u003e                                         ] 7.077 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":7470451,"total":39081844},"progress":"[=========\u003e                                         ]  7.47 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":7863667,"total":39081844},"progress":"[==========\u003e                                        ] 7.864 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":8256883,"total":39081844},"progress":"[==========\u003e                                        ] 8.257 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":8650099,"total":39081844},"progress":"[===========\u003e                                       ]  8.65 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":9043315,"total":39081844},"progress":"[===========\u003e                                       ] 9.043 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":9436531,"total":39081844},"progress":"[============\u003e                                      ] 9.437 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":9829747,"total":39081844},"progress":"[============\u003e                                      ]  9.83 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":10222963,"total":39081844},"progress":"[=============\u003e                                     ] 10.22 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":10616179,"total":39081844},"progress":"[=============\u003e                                     ] 10.62 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":11009395,"total":39081844},"progress":"[==============\u003e                                    ] 11.01 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":11402611,"total":39081844},"progress":"[==============\u003e                                    ]  11.4 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":11795827,"total":39081844},"progress":"[===============\u003e                                   ]  11.8 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":12189043,"total":39081844},"progress":"[===============\u003e                                   ] 12.19 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":12582259,"total":39081844},"progress":"[================\u003e                                  ] 12.58 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":12975475,"total":39081844},"progress":"[================\u003e                                  ] 12.98 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":13368691,"total":39081844},"progress":"[=================\u003e                                 ] 13.37 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":13761907,"total":39081844},"progress":"[=================\u003e                                 ] 13.76 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":14155123,"total":39081844},"progress":"[==================\u003e                                ] 14.16 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":14548339,"total":39081844},"progress":"[==================\u003e                                ] 14.55 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":14941555,"total":39081844},"progress":"[===================\u003e                               ] 14.94 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":15334771,"total":39081844},"progress":"[===================\u003e                               ] 15.33 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":15727987,"total":39081844},"progress":"[====================\u003e                              ] 15.73 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":16121203,"total":39081844},"progress":"[====================\u003e                              ] 16.12 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":16514419,"total":39081844},"progress":"[=====================\u003e                             ] 16.51 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":16907635,"total":39081844},"progress":"[=====================\u003e                             ] 16.91 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":17300851,"total":39081844},"progress":"[======================\u003e                            ]  17.3 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":17694067,"total":39081844},"progress":"[======================\u003e                            ] 17.69 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":18087283,"total":39081844},"progress":"[=======================\u003e                           ] 18.09 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":18480499,"total":39081844},"progress":"[=======================\u003e                           ] 18.48 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":18873715,"total":39081844},"progress":"[========================\u003e                          ] 18.87 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":19266931,"total":39081844},"progress":"[========================\u003e                          ] 19.27 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":19660147,"total":39081844},"progress":"[=========================\u003e                         ] 19.66 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":20053363,"total":39081844},"progress":"[=========================\u003e                         ] 20.05 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":20446579,"total":39081844},"progress":"[==========================\u003e                        ] 20.45 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":20839795,"total":39081844},"progress":"[==========================\u003e                        ] 20.84 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":21233011,"total":39081844},"progress":"[===========================\u003e                       ] 21.23 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":21626227,"total":39081844},"progress":"[===========================\u003e                       ] 21.63 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":22019443,"total":39081844},"progress":"[============================\u003e                      ] 22.02 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":22412659,"total":39081844},"progress":"[============================\u003e                      ] 22.41 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":22805875,"total":39081844},"progress":"[=============================\u003e                     ] 22.81 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":23199091,"total":39081844},"progress":"[=============================\u003e                     ]  23.2 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":23592307,"total":39081844},"progress":"[==============================\u003e                    ] 23.59 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":23985523,"total":39081844},"progress":"[==============================\u003e                    ] 23.99 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":24378739,"total":39081844},"progress":"[===============================\u003e                   ] 24.38 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":24771955,"total":39081844},"progress":"[===============================\u003e                   ] 24.77 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":25165171,"total":39081844},"progress":"[================================\u003e                  ] 25.17 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":25558387,"total":39081844},"progress":"[================================\u003e                  ] 25.56 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":25951603,"total":39081844},"progress":"[=================================\u003e                 ] 25.95 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":26344819,"total":39081844},"progress":"[=================================\u003e                 ] 26.34 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":26738035,"total":39081844},"progress":"[==================================\u003e                ] 26.74 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":27131251,"total":39081844},"progress":"[==================================\u003e                ] 27.13 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":27524467,"total":39081844},"progress":"[===================================\u003e               ] 27.52 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":27917683,"total":39081844},"progress":"[===================================\u003e               ] 27.92 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":28310899,"total":39081844},"progress":"[====================================\u003e              ] 28.31 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":28704115,"total":39081844},"progress":"[====================================\u003e              ]  28.7 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":29097331,"total":39081844},"progress":"[=====================================\u003e             ]  29.1 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":29490547,"total":39081844},"progress":"[=====================================\u003e             ] 29.49 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":29883763,"total":39081844},"progress":"[======================================\u003e            ] 29.88 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":30276979,"total":39081844},"progress":"[======================================\u003e            ] 30.28 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":30670195,"total":39081844},"progress":"[=======================================\u003e           ] 30.67 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":31063411,"total":39081844},"progress":"[=======================================\u003e           ] 31.06 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":31456627,"total":39081844},"progress":"[========================================\u003e          ] 31.46 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":31849843,"total":39081844},"progress":"[========================================\u003e          ] 31.85 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":32243059,"total":39081844},"progress":"[=========================================\u003e         ] 32.24 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":32636275,"total":39081844},"progress":"[=========================================\u003e         ] 32.64 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":33029491,"total":39081844},"progress":"[==========================================\u003e        ] 33.03 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":33422707,"total":39081844},"progress":"[==========================================\u003e        ] 33.42 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":33815923,"total":39081844},"progress":"[===========================================\u003e       ] 33.82 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":34209139,"total":39081844},"progress":"[===========================================\u003e       ] 34.21 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":34602355,"total":39081844},"progress":"[============================================\u003e      ]  34.6 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":34995571,"total":39081844},"progress":"[============================================\u003e      ]    35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":35388787,"total":39081844},"progress":"[=============================================\u003e     ] 35.39 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":35782003,"total":39081844},"progress":"[=============================================\u003e     ] 35.78 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":36175219,"total":39081844},"progress":"[==============================================\u003e    ] 36.18 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":36568435,"total":39081844},"progress":"[==============================================\u003e    ] 36.57 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":36961651,"total":39081844},"progress":"[===============================================\u003e   ] 36.96 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":37354867,"total":39081844},"progress":"[===============================================\u003e   ] 37.35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":37748083,"total":39081844},"progress":"[================================================\u003e  ] 37.75 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":38141299,"total":39081844},"progress":"[================================================\u003e  ] 38.14 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":38534515,"total":39081844},"progress":"[=================================================\u003e ] 38.53 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Downloading","progressDetail":{"current":38927731,"total":39081844},"progress":"[=================================================\u003e ] 38.93 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Download complete","progressDetail":{},"id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":393216,"total":39081844},"progress":"[\u003e                                                  ] 393.2 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":786432,"total":39081844},"progress":"[=\u003e                                                 ] 786.4 kB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":1179648,"total":39081844},"progress":"[=\u003e                                                 ]  1.18 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":1572864,"total":39081844},"progress":"[==\u003e                                                ] 1.573 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":1966080,"total":39081844},"progress":"[==\u003e                                                ] 1.966 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":2359296,"total":39081844},"progress":"[===\u003e                                               ] 2.359 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":2752512,"total":39081844},"progress":"[===\u003e                                               ] 2.753 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":3145728,"total":39081844},"progress":"[====\u003e                                              ] 3.146 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":3538944,"total":39081844},"progress":"[====\u003e                                              ] 3.539 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":3932160,"total":39081844},"progress":"[=====\u003e                                             ] 3.932 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":4325376,"total":39081844},"progress":"[=====\u003e                                             ] 4.325 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":4718592,"total":39081844},"progress":"[======\u003e                                            ] 4.719 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":5111808,"total":39081844},"progress":"[======\u003e                                            ] 5.112 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":5505024,"total":39081844},"progress":"[=======\u003e                                           ] 5.505 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":5898240,"total":39081844},"progress":"[=======\u003e                                           ] 5.898 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":6291456,"total":39081844},"progress":"[========\u003e                                          ] 6.291 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":6684672,"total":39081844},"progress":"[========\u003e                                          ] 6.685 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":7077888,"total":39081844},"progress":"[=========\u003e                                         ] 7.078 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":7471104,"total":39081844},"progress":"[=========\u003e                                         ] 7.471 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":7864320,"total":39081844},"progress":"[==========\u003e                                        ] 7.864 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":8257536,"total":39081844},"progress":"[==========\u003e                                        ] 8.258 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":8650752,"total":39081844},"progress":"[===========\u003e                                       ] 8.651 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":9043968,"total":39081844},"progress":"[===========\u003e                                       ] 9.044 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":9437184,"total":39081844},"progress":"[============\u003e                                      ] 9.437 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":9830400,"total":39081844},"progress":"[============\u003e                                      ]  9.83 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":10223616,"total":39081844},"progress":"[=============\u003e                                     ] 10.22 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":10616832,"total":39081844},"progress":"[=============\u003e                                     ] 10.62 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":11010048,"total":39081844},"progress":"[==============\u003e                                    ] 11.01 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":11403264,"total":39081844},"progress":"[==============\u003e                                    ]  11.4 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":11796480,"total":39081844},"progress":"[===============\u003e                                   ]  11.8 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":12189696,"total":39081844},"progress":"[===============\u003e                                   ] 12.19 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":12582912,"total":39081844},"progress":"[================\u003e                                  ] 12.58 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":12976128,"total":39081844},"progress":"[================\u003e                                  ] 12.98 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":13369344,"total":39081844},"progress":"[=================\u003e                                 ] 13.37 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":13762560,"total":39081844},"progress":"[=================\u003e                                 ] 13.76 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":14155776,"total":39081844},"progress":"[==================\u003e                                ] 14.16 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":14548992,"total":39081844},"progress":"[==================\u003e                                ] 14.55 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":14942208,"total":39081844},"progress":"[===================\u003e                               ] 14.94 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":15335424,"total":39081844},"progress":"[===================\u003e                               ] 15.34 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":15728640,"total":39081844},"progress":"[====================\u003e                              ] 15.73 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":16121856,"total":39081844},"progress":"[====================\u003e                              ] 16.12 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":16515072,"total":39081844},"progress":"[=====================\u003e                             ] 16.52 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":16908288,"total":39081844},"progress":"[=====================\u003e                             ] 16.91 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":17301504,"total":39081844},"progress":"[======================\u003e                            ]  17.3 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":17694720,"total":39081844},"progress":"[======================\u003e                            ] 17.69 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":18087936,"total":39081844},"progress":"[=======================\u003e                           ] 18.09 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":18481152,"total":39081844},"progress":"[=======================\u003e                           ] 18.48 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":18874368,"total":39081844},"progress":"[========================\u003e                          ] 18.87 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":19267584,"total":39081844},"progress":"[========================\u003e                          ] 19.27 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":19660800,"total":39081844},"progress":"[=========================\u003e                         ] 19.66 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":20054016,"total":39081844},"progress":"[=========================\u003e                         ] 20.05 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":20447232,"total":39081844},"progress":"[==========================\u003e                        ] 20.45 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":20840448,"total":39081844},"progress":"[==========================\u003e                        ] 20.84 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":21233664,"total":39081844},"progress":"[===========================\u003e                       ] 21.23 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":21626880,"total":39081844},"progress":"[===========================\u003e                       ] 21.63 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":22020096,"total":39081844},"progress":"[============================\u003e                      ] 22.02 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":22413312,"total":39081844},"progress":"[============================\u003e                      ] 22.41 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":22806528,"total":39081844},"progress":"[=============================\u003e                     ] 22.81 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":23199744,"total":39081844},"progress":"[=============================\u003e                     ]  23.2 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":23592960,"total":39081844},"progress":"[==============================\u003e                    ] 23.59 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":23986176,"total":39081844},"progress":"[==============================\u003e                    ] 23.99 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":24379392,"total":39081844},"progress":"[===============================\u003e                   ] 24.38 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":24772608,"total":39081844},"progress":"[===============================\u003e                   ] 24.77 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":25165824,"total":39081844},"progress":"[================================\u003e                  ] 25.17 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":25559040,"total":39081844},"progress":"[================================\u003e                  ] 25.56 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":25952256,"total":39081844},"progress":"[=================================\u003e                 ] 25.95 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":26345472,"total":39081844},"progress":"[=================================\u003e                 ] 26.35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":26738688,"total":39081844},"progress":"[==================================\u003e                ] 26.74 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":27131904,"total":39081844},"progress":"[==================================\u003e                ] 27.13 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":27525120,"total":39081844},"progress":"[===================================\u003e               ] 27.53 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":27918336,"total":39081844},"progress":"[===================================\u003e               ] 27.92 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":28311552,"total":39081844},"progress":"[====================================\u003e              ] 28.31 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":28704768,"total":39081844},"progress":"[====================================\u003e              ]  28.7 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":29097984,"total":39081844},"progress":"[=====================================\u003e             ]  29.1 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":29491200,"total":39081844},"progress":"[=====================================\u003e             ] 29.49 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":29884416,"total":39081844},"progress":"[======================================\u003e            ] 29.88 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":30277632,"total":39081844},"progress":"[======================================\u003e            ] 30.28 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":30670848,"total":39081844},"progress":"[=======================================\u003e           ] 30.67 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":31064064,"total":39081844},"progress":"[=======================================\u003e           ] 31.06 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":31457280,"total":39081844},"progress":"[========================================\u003e          ] 31.46 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":31850496,"total":39081844},"progress":"[========================================\u003e          ] 31.85 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":32243712,"total":39081844},"progress":"[=========================================\u003e         ] 32.24 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":32636928,"total":39081844},"progress":"[=========================================\u003e         ] 32.64 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":33030144,"total":39081844},"progress":"[==========================================\u003e        ] 33.03 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":33423360,"total":39081844},"progress":"[==========================================\u003e        ] 33.42 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":33816576,"total":39081844},"progress":"[===========================================\u003e       ] 33.82 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":34209792,"total":39081844},"progress":"[===========================================\u003e       ] 34.21 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":34603008,"total":39081844},"progress":"[============================================\u003e      ]  34.6 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":34996224,"total":39081844},"progress":"[============================================\u003e      ]    35 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":35389440,"total":39081844},"progress":"[=============================================\u003e     ] 35.39 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":35782656,"total":39081844},"progress":"[=============================================\u003e     ] 35.78 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":36175872,"total":39081844},"progress":"[==============================================\u003e    ] 36.18 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":36569088,"total":39081844},"progress":"[==============================================\u003e    ] 36.57 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":36962304,"total":39081844},"progress":"[===============================================\u003e   ] 36.96 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":37355520,"total":39081844},"progress":"[===============================================\u003e   ] 37.36 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":37748736,"total":39081844},"progress":"[================================================\u003e  ] 37.75 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":38141952,"total":39081844},"progress":"[================================================\u003e  ] 38.14 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":38535168,"total":39081844},"progress":"[=================================================\u003e ] 38.54 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":38928384,"total":39081844},"progress":"[=================================================\u003e ] 38.93 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":39081844,"total":39081844},"progress":"[==================================================\u003e] 39.08 MB/39.08 MB","id":"36cef014d5d4"}
+{"status":"Pull complete","progressDetail":{},"id":"36cef014d5d4"}
+{"status":"Extracting","progressDetail":{"current":32768,"total":57935},"progress":"[============================\u003e                      ] 32.77 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Extracting","progressDetail":{"current":57935,"total":57935},"progress":"[==================================================\u003e] 57.94 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Extracting","progressDetail":{"current":57935,"total":57935},"progress":"[==================================================\u003e] 57.94 kB/57.94 kB","id":"0d99ad4de1d2"}
+{"status":"Pull complete","progressDetail":{},"id":"0d99ad4de1d2"}
+{"status":"Extracting","progressDetail":{"current":419,"total":419},"progress":"[==================================================\u003e]    419 B/419 B","id":"3e32dbf1ab94"}
+{"status":"Extracting","progressDetail":{"current":419,"total":419},"progress":"[==================================================\u003e]    419 B/419 B","id":"3e32dbf1ab94"}
+{"status":"Pull complete","progressDetail":{},"id":"3e32dbf1ab94"}
+{"status":"Extracting","progressDetail":{"current":682,"total":682},"progress":"[==================================================\u003e]    682 B/682 B","id":"44710c456ffc"}
+{"status":"Extracting","progressDetail":{"current":682,"total":682},"progress":"[==================================================\u003e]    682 B/682 B","id":"44710c456ffc"}
+{"status":"Pull complete","progressDetail":{},"id":"44710c456ffc"}
+{"status":"Extracting","progressDetail":{"current":162,"total":162},"progress":"[==================================================\u003e]    162 B/162 B","id":"56e70ac3b314"}
+{"status":"Extracting","progressDetail":{"current":162,"total":162},"progress":"[==================================================\u003e]    162 B/162 B","id":"56e70ac3b314"}
+{"status":"Pull complete","progressDetail":{},"id":"56e70ac3b314"}
+{"status":"Digest: sha256:992069aee4016783df6345315302fa59681aae51a8eeb2f889dea59290f21787"}
+{"status":"Status: Downloaded newer image for ubuntu:12.04"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/libcloud/blob/d59e52c3/libcloud/test/container/test_docker.py
----------------------------------------------------------------------
diff --git a/libcloud/test/container/test_docker.py b/libcloud/test/container/test_docker.py
index 73c9f4e..32c7127 100644
--- a/libcloud/test/container/test_docker.py
+++ b/libcloud/test/container/test_docker.py
@@ -31,7 +31,7 @@ class DockerContainerDriverTestCase(unittest.TestCase):
 
     def setUp(self):
         # Create a test driver for each version
-        versions = ('linux_121', 'mac_124')
+        versions = ('linux_124', 'mac_124')
         self.drivers = []
         for version in versions:
             DockerContainerDriver.connectionCls.conn_classes = (
@@ -55,7 +55,7 @@ class DockerContainerDriverTestCase(unittest.TestCase):
         for driver in self.drivers:
             image = driver.install_image('ubuntu:12.04')
             self.assertTrue(image is not None)
-            self.assertEqual(image.id, 'cf55d61f5307b7a18a45980971d6cfd40b737dd661879c4a6b3f2aecc3bc37b0')
+            self.assertEqual(image.id, '992069aee4016783df6345315302fa59681aae51a8eeb2f889dea59290f21787')
 
     def test_list_containers(self):
         for driver in self.drivers:
@@ -124,54 +124,54 @@ class DockerMockHttp(MockHttp):
     def _version(
             self, method, url, body, headers):
         if method == 'GET':
-            body = self.fixtures.load('linux_121/version.json')
+            body = self.fixtures.load('linux_124/version.json')
         else:
             raise AssertionError('Unsupported method')
         return (httplib.OK, body, {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_images_search(
+    def _vlinux_124_images_search(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/search.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/search.json'), {}, httplib.responses[httplib.OK])
 
     def _vmac_124_images_search(
             self, method, url, body, headers):
         return (httplib.OK, self.fixtures.load('mac_124/search.json'), {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_images_json(
+    def _vlinux_124_images_json(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/images.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/images.json'), {}, httplib.responses[httplib.OK])
 
     def _vmac_124_images_json(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/images.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/images.json'), {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_images_create(
+    def _vlinux_124_images_create(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/create_image.json'), {'Content-Type': 'application/json'},
+        return (httplib.OK, self.fixtures.load('linux_124/create_image.txt'), {'Content-Type': 'application/json', 'transfer-encoding': 'chunked'},
                 httplib.responses[httplib.OK])
 
     def _vmac_124_images_create(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('mac_124/create_image.json'), {'Content-Type': 'application/json'},
+        return (httplib.OK, self.fixtures.load('mac_124/create_image.txt'), {'Content-Type': 'application/json', 'transfer-encoding': 'chunked'},
                 httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_json(
+    def _vlinux_124_containers_json(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/containers.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/containers.json'), {}, httplib.responses[httplib.OK])
 
     def _vmac_124_containers_json(
             self, method, url, body, headers):
         return (httplib.OK, self.fixtures.load('mac_124/containers.json'), {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_create(
+    def _vlinux_124_containers_create(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/create_container.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/create_container.json'), {}, httplib.responses[httplib.OK])
 
     def _vmac_124_containers_create(
             self, method, url, body, headers):
         return (httplib.OK, self.fixtures.load('mac_124/create_container.json'), {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303(
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
@@ -179,7 +179,7 @@ class DockerMockHttp(MockHttp):
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_start(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_start(
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
@@ -187,7 +187,7 @@ class DockerMockHttp(MockHttp):
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_restart(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_restart(
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
@@ -195,7 +195,7 @@ class DockerMockHttp(MockHttp):
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_rename(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_rename(
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
@@ -203,7 +203,7 @@ class DockerMockHttp(MockHttp):
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_stop(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_stop(
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
@@ -211,21 +211,21 @@ class DockerMockHttp(MockHttp):
             self, method, url, body, headers):
         return (httplib.NO_CONTENT, '', {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_json(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_json(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/container_a68.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/container_a68.json'), {}, httplib.responses[httplib.OK])
 
     def _vmac_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_json(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/container_a68.json'), {}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/container_a68.json'), {}, httplib.responses[httplib.OK])
 
-    def _vlinux_121_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_logs(
+    def _vlinux_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_logs(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/logs.txt'), {'content-type': 'text/plain'}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/logs.txt'), {'content-type': 'text/plain'}, httplib.responses[httplib.OK])
 
     def _vmac_124_containers_a68c1872c74630522c7aa74b85558b06824c5e672cee334296c50fb209825303_logs(
             self, method, url, body, headers):
-        return (httplib.OK, self.fixtures.load('linux_121/logs.txt'), {'content-type': 'text/plain'}, httplib.responses[httplib.OK])
+        return (httplib.OK, self.fixtures.load('linux_124/logs.txt'), {'content-type': 'text/plain'}, httplib.responses[httplib.OK])
 
 if __name__ == '__main__':
     sys.exit(unittest.main())


[5/5] libcloud git commit: changes for #918

Posted by an...@apache.org.
changes for #918


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/d6ec8912
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/d6ec8912
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/d6ec8912

Branch: refs/heads/trunk
Commit: d6ec8912350a71f0d22c633e1c0b64a8bb752262
Parents: d59e52c
Author: Anthony Shaw <an...@apache.org>
Authored: Mon Oct 24 13:29:36 2016 +0100
Committer: Anthony Shaw <an...@apache.org>
Committed: Mon Oct 24 13:29:36 2016 +0100

----------------------------------------------------------------------
 CHANGES.rst | 11 +++++++++++
 1 file changed, 11 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/d6ec8912/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index 4e5ae43..bfb38a1 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -37,6 +37,17 @@ Compute
   (GITHUB-856
   [Tom Melendez]
 
+Container
+~~~~~~~~~
+
+- [docker] As reported in the corresponding bug, the docker daemon will respond in an install_image call with all the messages
+  produced during the procedure parsed as json docs. In that case the response headers also contain the value 'transfer-encoding':'chunked'.
+  That kind of response can now be parsed properly by the DockerResponse parse_body method. Also, another small change is that previously
+  the id of the new image was marked in the json document as id, but now it's marked as sha256, so the regex used to discover the id
+  has been updated.
+  (GITHUB-918)
+  [Pavlos Tzianos]
+
 Storage
 ~~~~~~~