hyperb 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +12 -0
  3. data/.gitignore +12 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +41 -0
  6. data/Dockerfile +7 -0
  7. data/Gemfile +16 -0
  8. data/LICENSE.txt +21 -0
  9. data/Makefile +16 -0
  10. data/README.md +188 -0
  11. data/Rakefile +24 -0
  12. data/circle.yml +13 -0
  13. data/examples/README.md +367 -0
  14. data/examples/auth-gcr-registry.md +19 -0
  15. data/examples/compose.md +75 -0
  16. data/examples/handling-errors.md +54 -0
  17. data/examples/streaming-logs.md +28 -0
  18. data/examples/streaming-stats.md +25 -0
  19. data/hyperb.gemspec +30 -0
  20. data/lib/hyperb.rb +4 -0
  21. data/lib/hyperb/api.rb +22 -0
  22. data/lib/hyperb/auth_object.rb +42 -0
  23. data/lib/hyperb/client.rb +32 -0
  24. data/lib/hyperb/compose/compose.rb +116 -0
  25. data/lib/hyperb/containers/container.rb +27 -0
  26. data/lib/hyperb/containers/containers.rb +251 -0
  27. data/lib/hyperb/error.rb +44 -0
  28. data/lib/hyperb/hyper_version.rb +12 -0
  29. data/lib/hyperb/images/image.rb +13 -0
  30. data/lib/hyperb/images/images.rb +108 -0
  31. data/lib/hyperb/network/fips.rb +102 -0
  32. data/lib/hyperb/request.rb +129 -0
  33. data/lib/hyperb/services/services.rb +59 -0
  34. data/lib/hyperb/snapshots/snapshot.rb +12 -0
  35. data/lib/hyperb/snapshots/snapshots.rb +39 -0
  36. data/lib/hyperb/utils.rb +39 -0
  37. data/lib/hyperb/version.rb +3 -0
  38. data/lib/hyperb/volumes/volume.rb +16 -0
  39. data/lib/hyperb/volumes/volumes.rb +67 -0
  40. data/spec/auth_object_spec.rb +45 -0
  41. data/spec/client_spec.rb +27 -0
  42. data/spec/compose_spec.rb +145 -0
  43. data/spec/container_spec.rb +25 -0
  44. data/spec/containers_spec.rb +442 -0
  45. data/spec/create_snapshot.rb +30 -0
  46. data/spec/error_spec.rb +18 -0
  47. data/spec/fixtures/auth_obj.json +12 -0
  48. data/spec/fixtures/compose_rm.json +1 -0
  49. data/spec/fixtures/compose_up.json +1 -0
  50. data/spec/fixtures/container_stats.json +78 -0
  51. data/spec/fixtures/containers.json +160 -0
  52. data/spec/fixtures/create_container.json +4 -0
  53. data/spec/fixtures/create_image.json +1 -0
  54. data/spec/fixtures/create_service.json +35 -0
  55. data/spec/fixtures/create_snapshot.json +8 -0
  56. data/spec/fixtures/fip_allocate.json +7 -0
  57. data/spec/fixtures/fips_ls.json +14 -0
  58. data/spec/fixtures/images.json +32 -0
  59. data/spec/fixtures/inspect_container.json +159 -0
  60. data/spec/fixtures/inspect_image.json +89 -0
  61. data/spec/fixtures/inspect_volume.json +11 -0
  62. data/spec/fixtures/remove_container.json +1 -0
  63. data/spec/fixtures/remove_image.json +5 -0
  64. data/spec/fixtures/volumes.json +13 -0
  65. data/spec/helper.rb +36 -0
  66. data/spec/image_spec.rb +17 -0
  67. data/spec/images_spec.rb +133 -0
  68. data/spec/network_spec.rb +106 -0
  69. data/spec/request_spec.rb +41 -0
  70. data/spec/services_spec.rb +193 -0
  71. data/spec/version_spec.rb +7 -0
  72. data/spec/volumes_spec.rb +88 -0
  73. metadata +74 -3
@@ -0,0 +1,30 @@
1
+ require 'helper'
2
+ require 'http'
3
+
4
+ RSpec.describe Hyperb::Snapshots do
5
+
6
+ before do
7
+ @client = Hyperb::Client.new(access_key: 'key', secret_key: '123')
8
+ @base_path = Hyperb::Request::BASE_URL + Hyperb::Request::VERSION + '/snapshots'
9
+ end
10
+
11
+ describe '#create_snapshot' do
12
+
13
+ it 'should raise ArgumentError if volume argument missing' do
14
+ expect { @client.create_snapshot name: 'name' }.to raise_error(ArgumentError)
15
+ end
16
+
17
+ it 'should raise ArgumentError if name argument missing' do
18
+ expect { @client.create_snapshot volume: 'volume-id' }.to raise_error(ArgumentError)
19
+ end
20
+
21
+ it 'request to the correct path should be made' do
22
+ path = @base_path + '/create?volume=volumee&name=namee'
23
+ stub_request(:post, path)
24
+ .to_return(body: fixture('create_snapshot.json'))
25
+
26
+ @client.create_snapshot volume: 'volumee', name: 'namee'
27
+ expect(a_request(:post, path)).to have_been_made
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,18 @@
1
+ require "helper"
2
+
3
+ RSpec.describe Hyperb::Error do
4
+
5
+ before do
6
+ # random url for request mocking
7
+ @path = Hyperb::Request::BASE_URL + Hyperb::Request::VERSION + '/version'
8
+ @client = Hyperb::Client.new secret_key: '123', access_key: 'ak'
9
+ end
10
+
11
+ Hyperb::Error::ERRORS.each do |code, exception|
12
+ it "#{exception}" do
13
+ stub_request(:get, @path).to_return(status: code)
14
+ expect { @client.version }.to raise_error(exception)
15
+ end
16
+ end
17
+
18
+ end
@@ -0,0 +1,12 @@
1
+ {
2
+ "type": "service_account",
3
+ "project_id": "test-test-772219",
4
+ "private_key_id": "56c441e608e353555f1f5cedffb7708f777c252a",
5
+ "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCveubQwtjjcxrs\nAUkizhwUcAmNUiftM3IZkKJEpzdGts7BNxPndlJHiIXeJohbHQzQ0mCqy3Rd8B96\n71YgwYGyVq5CK0EYjKoE/aqZkpl00h8b90b6Flz3m5TxTpm\nf0HLo1ymAq/BEe0tBU4m7Qfi87gMJoMBCs8pjiXk8KRptxxzd8GjjwGegnKGsttx\nqGoZfPCRCo8lUAsi9I7NWyDJjL5oNAaKzHfKroECgYEAzAQDoV4L5SAOu5clWGk8\nVxZJENVpfLAaRpP974+a1ihZe/SRSbsdT7V4ro/K9sb9Y2DWM4cKlqK5SWPi275k\n+1BpJlKAKhPQ3xr1CseH6tamKNPcXLmA1lI2dijODgBaSBkCCx7JrVE0vk7ZHxMd\n19X74+OcaPmL+JUylP9Ck0k=\n-----END PRIVATE KEY-----\n",
6
+ "client_email": "test.iam.gserviceaccount.com",
7
+ "client_id": "666699092232077779398",
8
+ "auth_uri": "https://accounts.google.com/o/oauth2/auth",
9
+ "token_uri": "https://accounts.google.com/o/oauth2/token",
10
+ "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
11
+ "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test.iam.gserviceaccount.com"
12
+ }
@@ -0,0 +1 @@
1
+ {"status":"Project [hypercli]: Deleting project "}
@@ -0,0 +1 @@
1
+ {"status":"Project [blog]: Starting project "}
@@ -0,0 +1,78 @@
1
+ {
2
+ "read" : "2015-01-08T22:57:31.547920715Z",
3
+ "networks": {
4
+ "eth0": {
5
+ "rx_bytes": 5338,
6
+ "rx_dropped": 0,
7
+ "rx_errors": 0,
8
+ "rx_packets": 36,
9
+ "tx_bytes": 648,
10
+ "tx_dropped": 0,
11
+ "tx_errors": 0,
12
+ "tx_packets": 8
13
+ },
14
+ "eth5": {
15
+ "rx_bytes": 4641,
16
+ "rx_dropped": 0,
17
+ "rx_errors": 0,
18
+ "rx_packets": 26,
19
+ "tx_bytes": 690,
20
+ "tx_dropped": 0,
21
+ "tx_errors": 0,
22
+ "tx_packets": 9
23
+ }
24
+ },
25
+ "memory_stats" : {
26
+ "stats" : {
27
+ "total_pgmajfault" : 0,
28
+ "cache" : 0,
29
+ "mapped_file" : 0,
30
+ "total_inactive_file" : 0,
31
+ "pgpgout" : 414,
32
+ "rss" : 6537216,
33
+ "total_mapped_file" : 0,
34
+ "writeback" : 0,
35
+ "unevictable" : 0,
36
+ "pgpgin" : 477,
37
+ "total_unevictable" : 0,
38
+ "pgmajfault" : 0,
39
+ "total_rss" : 6537216,
40
+ "total_rss_huge" : 6291456,
41
+ "total_writeback" : 0,
42
+ "total_inactive_anon" : 0,
43
+ "rss_huge" : 6291456,
44
+ "hierarchical_memory_limit" : 67108864,
45
+ "total_pgfault" : 964,
46
+ "total_active_file" : 0,
47
+ "active_anon" : 6537216,
48
+ "total_active_anon" : 6537216,
49
+ "total_pgpgout" : 414,
50
+ "total_cache" : 0,
51
+ "inactive_anon" : 0,
52
+ "active_file" : 0,
53
+ "pgfault" : 964,
54
+ "inactive_file" : 0,
55
+ "total_pgpgin" : 477
56
+ },
57
+ "max_usage" : 6651904,
58
+ "usage" : 6537216,
59
+ "failcnt" : 0,
60
+ "limit" : 67108864
61
+ },
62
+ "blkio_stats" : {},
63
+ "cpu_stats" : {
64
+ "cpu_usage" : {
65
+ "percpu_usage" : [
66
+ 16970827,
67
+ 1839451,
68
+ 7107380,
69
+ 10571290
70
+ ],
71
+ "usage_in_usermode" : 10000000,
72
+ "total_usage" : 36488948,
73
+ "usage_in_kernelmode" : 20000000
74
+ },
75
+ "system_cpu_usage" : 20091722000000000,
76
+ "throttling_data" : {}
77
+ }
78
+ }
@@ -0,0 +1,160 @@
1
+ [
2
+ {
3
+ "Id": "52368c159761ea1832c891c128391d11ff87684b7f0aec683625296c9879dd57",
4
+ "Names":["/boring_feynman"],
5
+ "Image": "ubuntu:latest",
6
+ "ImageID": "sha256:d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
7
+ "Command": "echo 1",
8
+ "Created": 1367854155,
9
+ "Ports": [{"PrivatePort": 2222, "PublicPort": 3333, "Type": "tcp"}],
10
+ "Labels": {
11
+ "com.example.vendor": "Acme",
12
+ "com.example.license": "GPL",
13
+ "com.example.version": "1.0",
14
+ "sh.hyper.fip": "",
15
+ "sh_hyper_instancetype": "xxs"
16
+ },
17
+ "SizeRw": 12288,
18
+ "SizeRootFs": 0,
19
+ "State": "",
20
+ "Status": "Exit 0",
21
+ "HostConfig": {
22
+ "NetworkMode": "bridge"
23
+ },
24
+ "NetworkSettings": {
25
+ "Networks": {
26
+ "bridge": {
27
+ "IPAMConfig": null,
28
+ "Links": null,
29
+ "Aliases": null,
30
+ "NetworkID": "",
31
+ "EndpointID": "",
32
+ "Gateway": "172.17.0.1",
33
+ "IPAddress": "172.17.0.2",
34
+ "IPPrefixLen": 16,
35
+ "IPv6Gateway": "",
36
+ "GlobalIPv6Address": "",
37
+ "GlobalIPv6PrefixLen": 0,
38
+ "MacAddress": ""
39
+ }
40
+ }
41
+ }
42
+ },
43
+ {
44
+ "Id": "7275e7626f770a1337c5a3479d4ac628b6ddb8d3f714dc0c465b08970008f115",
45
+ "Names":["/coolName"],
46
+ "Image": "ubuntu:latest",
47
+ "ImageID": "sha256:d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
48
+ "Command": "echo 222222",
49
+ "Created": 1367854155,
50
+ "Ports": [],
51
+ "Labels": {
52
+ "sh.hyper.fip": "",
53
+ "sh_hyper_instancetype": "xxs"
54
+ },
55
+ "SizeRw": 12288,
56
+ "SizeRootFs": 0,
57
+ "State": "",
58
+ "Status": "Exit 0",
59
+ "HostConfig": {
60
+ "NetworkMode": "bridge"
61
+ },
62
+ "NetworkSettings": {
63
+ "Networks": {
64
+ "bridge": {
65
+ "IPAMConfig": null,
66
+ "Links": null,
67
+ "Aliases": null,
68
+ "NetworkID": "",
69
+ "EndpointID": "",
70
+ "Gateway": "172.17.0.1",
71
+ "IPAddress": "172.17.0.8",
72
+ "IPPrefixLen": 16,
73
+ "IPv6Gateway": "",
74
+ "GlobalIPv6Address": "",
75
+ "GlobalIPv6PrefixLen": 0,
76
+ "MacAddress": ""
77
+ }
78
+ }
79
+ }
80
+
81
+ },
82
+ {
83
+ "Id": "225fb31677846376d54eae5686ad1a11e86f033b0580ff63e678ed2f49f10e75",
84
+ "Names":["/sleepy_dog"],
85
+ "Image": "ubuntu:latest",
86
+ "ImageID": "sha256:d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
87
+ "Command": "echo 3333333333333333",
88
+ "Created": 1367854154,
89
+ "Ports":[],
90
+ "Labels": {
91
+ "sh.hyper.fip": "",
92
+ "sh_hyper_instancetype": "xxs"
93
+ },
94
+ "SizeRw":12288,
95
+ "SizeRootFs":0,
96
+ "State": "",
97
+ "Status": "Exit 0",
98
+ "HostConfig": {
99
+ "NetworkMode": "bridge"
100
+ },
101
+ "NetworkSettings": {
102
+ "Networks": {
103
+ "bridge": {
104
+ "IPAMConfig": null,
105
+ "Links": null,
106
+ "Aliases": null,
107
+ "NetworkID": "",
108
+ "EndpointID": "",
109
+ "Gateway": "172.17.0.1",
110
+ "IPAddress": "172.17.0.6",
111
+ "IPPrefixLen": 16,
112
+ "IPv6Gateway": "",
113
+ "GlobalIPv6Address": "",
114
+ "GlobalIPv6PrefixLen": 0,
115
+ "MacAddress": ""
116
+ }
117
+ }
118
+ }
119
+
120
+ },
121
+ {
122
+ "Id": "781b3089f578545224cc32a62a428563f2d4e33bccd3494e2516b3ca0cc1ffb5",
123
+ "Names":["/running_cat"],
124
+ "Image": "ubuntu:latest",
125
+ "ImageID": "sha256:d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82",
126
+ "Command": "echo 444444444444444444444444444444444",
127
+ "Created": 1367854152,
128
+ "Ports": [],
129
+ "Labels": {
130
+ "sh.hyper.fip": "",
131
+ "sh_hyper_instancetype": "xxs"
132
+ },
133
+ "SizeRw": 12288,
134
+ "SizeRootFs": 0,
135
+ "State": "",
136
+ "Status": "Exit 0",
137
+ "HostConfig": {
138
+ "NetworkMode": "bridge"
139
+ },
140
+ "NetworkSettings": {
141
+ "Networks": {
142
+ "bridge": {
143
+ "IPAMConfig": null,
144
+ "Links": null,
145
+ "Aliases": null,
146
+ "NetworkID": "",
147
+ "EndpointID": "",
148
+ "Gateway": "172.17.0.1",
149
+ "IPAddress": "172.17.0.5",
150
+ "IPPrefixLen": 16,
151
+ "IPv6Gateway": "",
152
+ "GlobalIPv6Address": "",
153
+ "GlobalIPv6PrefixLen": 0,
154
+ "MacAddress": ""
155
+ }
156
+ }
157
+ }
158
+
159
+ }
160
+ ]
@@ -0,0 +1,4 @@
1
+ {
2
+ "Id":"6501525d12b5314538c520d6f0709d04296293507952d96b2dcc61e620313ef1",
3
+ "Warnings":[]
4
+ }
@@ -0,0 +1 @@
1
+ {"status": "Pulling", "progress": "1 B/ 100 B", "progressDetail": {"current": 1, "total": 100}}
@@ -0,0 +1,35 @@
1
+ {
2
+ "Name": "http",
3
+ "Image": "nginx",
4
+ "WorkingDir": "",
5
+ "ContainerSize": "s4",
6
+ "SSLCert": "",
7
+ "NetMode": "",
8
+ "StopSignal": "",
9
+ "ServicePort": 80,
10
+ "ContainerPort": 80,
11
+ "Replicas": 2,
12
+ "HealthCheckInterval": 5,
13
+ "HealthCheckFall": 3,
14
+ "HealthCheckRise": 2,
15
+ "Algorithm": "roundrobin",
16
+ "Protocol": "http",
17
+ "Stdin": false,
18
+ "Tty": false,
19
+ "SessionAffinity": false,
20
+ "Entrypoint": null,
21
+ "Cmd": null,
22
+ "Env": null,
23
+ "Volumes": null,
24
+ "Labels": {
25
+ "app": "nginx"
26
+ },
27
+ "SecurityGroups": null,
28
+ "IP": "",
29
+ "Tenant": "b8dc36865f4b480683dabb25598d61c4",
30
+ "FIP": "",
31
+ "Message": "Service is created",
32
+ "Created": "2016-10-08T13:12:15.405946064Z",
33
+ "Status": "created",
34
+ "Containers": null
35
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "Id": "ec524bd3-97de-40dc-91d7-69ae82e5297f",
3
+ "Name": "cool-shit-2",
4
+ "Tenant": "000d86551ffa49e899d120bab0b9b7fd",
5
+ "Volume": "699d954585490d5d04db3ad050024810d6ce0c6aec177e5c229dfb8b48085d0",
6
+ "Size": 10,
7
+ "Created": "2017-08-08T22:02:56.595648385Z"
8
+ }
@@ -0,0 +1,7 @@
1
+ [
2
+ "172.16.0.6",
3
+ "172.16.0.7",
4
+ "172.16.0.8",
5
+ "172.16.0.9",
6
+ "172.16.0.10"
7
+ ]
@@ -0,0 +1,14 @@
1
+ [
2
+ {
3
+ "container": "aa733d1782c92f295ff7291817b92c37938274b5e9fc3f4202c13f2db246192b",
4
+ "service": "",
5
+ "fip": "211.98.26.101",
6
+ "name": ""
7
+ },
8
+ {
9
+ "container": "",
10
+ "fip": "211.98.26.102",
11
+ "service": "http",
12
+ "name": ""
13
+ }
14
+ ]
@@ -0,0 +1,32 @@
1
+ [
2
+ {
3
+ "Created": 1420064636,
4
+ "Id": "4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125",
5
+ "ParentId": "ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2",
6
+ "RepoDigests": [
7
+ "localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf"
8
+ ],
9
+ "RepoTags": [
10
+ "localhost:5000/test/busybox:latest",
11
+ "playdate:latest"
12
+ ],
13
+ "Size": 0,
14
+ "VirtualSize": 2429728,
15
+ "Labels": {}
16
+ },
17
+ {
18
+ "Created": 1420064610,
19
+ "Id": "4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8400",
20
+ "ParentId": "ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2",
21
+ "RepoDigests": [
22
+ "localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf"
23
+ ],
24
+ "RepoTags": [
25
+ "localhost:5000/test/busybox:latest",
26
+ "playdate:latest"
27
+ ],
28
+ "Size": 0,
29
+ "VirtualSize": 2422728,
30
+ "Labels": {}
31
+ }
32
+ ]
@@ -0,0 +1,159 @@
1
+ {
2
+ "AppArmorProfile": "",
3
+ "Args": [
4
+ "-c",
5
+ "exit 9"
6
+ ],
7
+ "Config": {
8
+ "AttachStderr": true,
9
+ "AttachStdin": false,
10
+ "AttachStdout": true,
11
+ "Cmd": [
12
+ "/bin/sh",
13
+ "-c",
14
+ "exit 9"
15
+ ],
16
+ "Domainname": "",
17
+ "Entrypoint": null,
18
+ "Env": [
19
+ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
20
+ ],
21
+ "ExposedPorts": null,
22
+ "Hostname": "ba033ac44011",
23
+ "Image": "ubuntu",
24
+ "Labels": {
25
+ "com.example.vendor": "Acme",
26
+ "com.example.license": "GPL",
27
+ "com.example.version": "1.0"
28
+ },
29
+ "MacAddress": "",
30
+ "NetworkDisabled": false,
31
+ "OnBuild": null,
32
+ "OpenStdin": false,
33
+ "StdinOnce": false,
34
+ "Tty": false,
35
+ "User": "",
36
+ "Volumes": null,
37
+ "WorkingDir": "",
38
+ "StopSignal": "SIGTERM"
39
+ },
40
+ "Created": "2015-01-06T15:47:31.485331387Z",
41
+ "Driver": "devicemapper",
42
+ "ExecDriver": "native-0.2",
43
+ "ExecIDs": null,
44
+ "HostConfig": {
45
+ "Binds": null,
46
+ "BlkioWeight": 0,
47
+ "BlkioWeightDevice": [{}],
48
+ "BlkioDeviceReadBps": [{}],
49
+ "BlkioDeviceWriteBps": [{}],
50
+ "BlkioDeviceReadIOps": [{}],
51
+ "BlkioDeviceWriteIOps": [{}],
52
+ "CapAdd": null,
53
+ "CapDrop": null,
54
+ "ContainerIDFile": "",
55
+ "CpusetCpus": "",
56
+ "CpusetMems": "",
57
+ "CpuShares": 0,
58
+ "CpuPeriod": 100000,
59
+ "Devices": [],
60
+ "Dns": null,
61
+ "DnsOptions": null,
62
+ "DnsSearch": null,
63
+ "ExtraHosts": null,
64
+ "IpcMode": "",
65
+ "Links": null,
66
+ "LxcConf": [],
67
+ "Memory": 0,
68
+ "MemorySwap": 0,
69
+ "MemoryReservation": 0,
70
+ "KernelMemory": 0,
71
+ "OomKillDisable": false,
72
+ "OomScoreAdj": 500,
73
+ "NetworkMode": "bridge",
74
+ "PortBindings": {},
75
+ "Privileged": false,
76
+ "ReadonlyRootfs": false,
77
+ "PublishAllPorts": false,
78
+ "RestartPolicy": {
79
+ "MaximumRetryCount": 2,
80
+ "Name": "on-failure"
81
+ },
82
+ "LogConfig": {
83
+ "Config": null,
84
+ "Type": "json-file"
85
+ },
86
+ "SecurityOpt": null,
87
+ "VolumesFrom": null,
88
+ "Ulimits": [{}],
89
+ "VolumeDriver": "",
90
+ "ShmSize": 67108864
91
+ },
92
+ "HostnamePath": "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/hostname",
93
+ "HostsPath": "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/hosts",
94
+ "LogPath": "/var/lib/docker/containers/1eb5fabf5a03807136561b3c00adcd2992b535d624d5e18b6cdc6a6844d9767b/1eb5fabf5a03807136561b3c00adcd2992b535d624d5e18b6cdc6a6844d9767b-json.log",
95
+ "Id": "ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39",
96
+ "Image": "04c5d3b7b0656168630d3ba35d8889bd0e9caafcaeb3004d2bfbc47e7c5d35d2",
97
+ "MountLabel": "",
98
+ "Name": "/boring_euclid",
99
+ "NetworkSettings": {
100
+ "Bridge": "",
101
+ "SandboxID": "",
102
+ "HairpinMode": false,
103
+ "LinkLocalIPv6Address": "",
104
+ "LinkLocalIPv6PrefixLen": 0,
105
+ "Ports": null,
106
+ "SandboxKey": "",
107
+ "SecondaryIPAddresses": null,
108
+ "SecondaryIPv6Addresses": null,
109
+ "EndpointID": "",
110
+ "Gateway": "",
111
+ "GlobalIPv6Address": "",
112
+ "GlobalIPv6PrefixLen": 0,
113
+ "IPAddress": "",
114
+ "IPPrefixLen": 0,
115
+ "IPv6Gateway": "",
116
+ "MacAddress": "",
117
+ "Networks": {
118
+ "bridge": {
119
+ "NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
120
+ "EndpointID": "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d",
121
+ "Gateway": "172.17.0.1",
122
+ "IPAddress": "172.17.0.2",
123
+ "IPPrefixLen": 16,
124
+ "IPv6Gateway": "",
125
+ "GlobalIPv6Address": "",
126
+ "GlobalIPv6PrefixLen": 0,
127
+ "MacAddress": "02:42:ac:12:00:02"
128
+ }
129
+ }
130
+ },
131
+ "Path": "/bin/sh",
132
+ "ProcessLabel": "",
133
+ "ResolvConfPath": "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/resolv.conf",
134
+ "RestartCount": 1,
135
+ "State": {
136
+ "Error": "",
137
+ "ExitCode": 9,
138
+ "FinishedAt": "2015-01-06T15:47:32.080254511Z",
139
+ "OOMKilled": false,
140
+ "Dead": false,
141
+ "Paused": false,
142
+ "Pid": 0,
143
+ "Restarting": false,
144
+ "Running": true,
145
+ "StartedAt": "2015-01-06T15:47:32.072697474Z",
146
+ "Status": "running"
147
+ },
148
+ "Mounts": [
149
+ {
150
+ "Name": "fac362...80535",
151
+ "Source": "/data",
152
+ "Destination": "/data",
153
+ "Driver": "local",
154
+ "Mode": "ro,Z",
155
+ "RW": false,
156
+ "Propagation": ""
157
+ }
158
+ ]
159
+ }