Skip to content

Commit d4d3d0e

Browse files
Add Image.size_gigabytes and tests for Image.
1 parent 5bdbf08 commit d4d3d0e

File tree

10 files changed

+176
-11
lines changed

10 files changed

+176
-11
lines changed

digitalocean/Droplet.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ class Droplet(BaseAPI):
5151
action_ids: [int] - list of ids of actions
5252
features: [str] - list of enabled features. e.g.
5353
[u'private_networking', u'virtio']
54-
min_size: str - minumum size of droplet that can bew created from a
55-
snapshot of this droplet
5654
image: dict - details of image used to create this droplet
5755
ip_address: str - public ip addresses
5856
private_ip_address: str - private ip address

digitalocean/Image.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@ def __init__(self, *args, **kwargs):
88
self.name = None
99
self.distribution = None
1010
self.slug = None
11-
self.min_size = None
11+
self.min_disk_size = None
1212
self.public = None
1313
self.regions = []
1414
self.created_at = None
15+
self.size_gigabytes = None
1516

1617
super(Image, self).__init__(*args, **kwargs)
1718

digitalocean/tests/data/images/all.json

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"regions": [
1010
"nyc1"
1111
],
12-
"created_at": "2014-07-29T14:35:40Z"
12+
"created_at": "2014-07-29T14:35:40Z",
13+
"min_disk_size": 20,
14+
"size_gigabytes": 1.34
1315
},
1416
{
1517
"id": 449676376,
@@ -20,7 +22,9 @@
2022
"regions": [
2123
"nyc1"
2224
],
23-
"created_at": "2014-07-29T14:35:40Z"
25+
"created_at": "2014-07-29T14:35:40Z",
26+
"min_disk_size": 20,
27+
"size_gigabytes": 1.48
2428
},
2529
{
2630
"id": 449676856,
@@ -32,7 +36,9 @@
3236
"nyc1",
3337
"nyc3"
3438
],
35-
"created_at": "2014-08-18T16:35:40Z"
39+
"created_at": "2014-08-18T16:35:40Z",
40+
"min_disk_size": 20,
41+
"size_gigabytes": 2.34
3642
}
3743
],
3844
"meta": {

digitalocean/tests/data/images/app.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
],
2020
"created_at": "2015-03-24T17:10:43Z",
2121
"min_disk_size": 20,
22-
"type": "snapshot"
22+
"type": "snapshot",
23+
"size_gigabytes": 1.36
2324
},
2425
{
2526
"id": 11162594,
@@ -40,7 +41,8 @@
4041
],
4142
"created_at": "2015-03-25T19:00:05Z",
4243
"min_disk_size": 20,
43-
"type": "snapshot"
44+
"type": "snapshot",
45+
"size_gigabytes": 1.34
4446
}
4547
],
4648
"meta": {

digitalocean/tests/data/images/distro.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"regions": [
1010
"nyc1"
1111
],
12-
"created_at": "2014-07-29T14:35:40Z"
12+
"created_at": "2014-07-29T14:35:40Z",
13+
"min_disk_size": 20,
14+
"size_gigabytes": 1.34
1315
},
1416
{
1517
"id": 449676376,
@@ -20,7 +22,9 @@
2022
"regions": [
2123
"nyc1"
2224
],
23-
"created_at": "2014-07-29T14:35:40Z"
25+
"created_at": "2014-07-29T14:35:40Z",
26+
"min_disk_size": 20,
27+
"size_gigabytes": 1.38
2428
}
2529
],
2630
"meta": {

digitalocean/tests/data/images/private.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"nyc1",
1111
"nyc3"
1212
],
13-
"created_at": "2014-08-18T16:35:40Z"
13+
"created_at": "2014-08-18T16:35:40Z",
14+
"size_gigabytes": 1.34
1415
}
1516
],
1617
"meta": {
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"image":
3+
{
4+
"id": 449676856,
5+
"name": "Descriptive name",
6+
"distribution": "Ubuntu",
7+
"slug": "",
8+
"public": false,
9+
"regions": [
10+
"nyc1",
11+
"nyc3"
12+
],
13+
"created_at": "2014-08-18T16:35:40Z",
14+
"min_disk_size": 20,
15+
"size_gigabytes": 2.34
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"image":
3+
{
4+
"id": 449676856,
5+
"name": "My Snapshot",
6+
"distribution": "Ubuntu",
7+
"slug": "",
8+
"public": false,
9+
"regions": [
10+
"nyc1",
11+
"nyc3"
12+
],
13+
"created_at": "2014-08-18T16:35:40Z",
14+
"min_disk_size": 20,
15+
"size_gigabytes": 2.34
16+
}
17+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"action": {
3+
"id": 68212728,
4+
"status": "in-progress",
5+
"type": "transfer",
6+
"started_at": "2015-10-15T17:45:44Z",
7+
"completed_at": null,
8+
"resource_id": 449676856,
9+
"resource_type": "image",
10+
"region": {
11+
"name": "New York 3",
12+
"slug": "nyc3",
13+
"sizes": [
14+
"512mb",
15+
"1gb",
16+
"2gb",
17+
"4gb",
18+
"8gb",
19+
"16gb",
20+
"32gb",
21+
"48gb",
22+
"64gb"
23+
],
24+
"features": [
25+
"private_networking",
26+
"backups",
27+
"ipv6",
28+
"metadata"
29+
],
30+
"available": true
31+
},
32+
"region_slug": "nyc3"
33+
}
34+
}

digitalocean/tests/test_image.py

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import unittest
2+
import responses
3+
import digitalocean
4+
5+
from .BaseTest import BaseTest
6+
7+
8+
class TestImage(BaseTest):
9+
10+
def setUp(self):
11+
super(TestImage, self).setUp()
12+
self.image = digitalocean.Image(id=449676856, token=self.token)
13+
14+
@responses.activate
15+
def test_load(self):
16+
data = self.load_from_file('images/single.json')
17+
18+
responses.add(responses.GET,
19+
'{}images/{}'.format(self.base_url, self.image.id),
20+
body=data,
21+
status=200,
22+
content_type='application/json')
23+
24+
self.image.load()
25+
26+
self.assertEqual(responses.calls[0].request.url,
27+
self.base_url + 'images/449676856')
28+
self.assertEqual(self.image.id, 449676856)
29+
self.assertEqual(self.image.name, 'My Snapshot')
30+
self.assertEqual(self.image.distribution, 'Ubuntu')
31+
self.assertEqual(self.image.public, False)
32+
self.assertEqual(self.image.created_at, "2014-08-18T16:35:40Z")
33+
self.assertEqual(self.image.size_gigabytes, 2.34)
34+
self.assertEqual(self.image.min_disk_size, 20)
35+
36+
@responses.activate
37+
def test_destroy(self):
38+
responses.add(responses.DELETE,
39+
'{}images/{}/'.format(self.base_url, self.image.id),
40+
status=204,
41+
content_type='application/json')
42+
43+
self.image.destroy()
44+
45+
self.assertEqual(responses.calls[0].request.url,
46+
self.base_url + 'images/449676856/')
47+
48+
@responses.activate
49+
def test_transfer(self):
50+
data = self.load_from_file('images/transfer.json')
51+
52+
responses.add(responses.POST,
53+
'{}images/{}/actions/'.format(
54+
self.base_url, self.image.id),
55+
body=data,
56+
status=201,
57+
content_type='application/json')
58+
59+
res = self.image.transfer(new_region_slug='lon1')
60+
61+
self.assertEqual(responses.calls[0].request.url,
62+
self.base_url + 'images/449676856/actions/')
63+
self.assertEqual(res['action']['type'], 'transfer')
64+
self.assertEqual(res['action']['status'], 'in-progress')
65+
self.assertEqual(res['action']['id'], 68212728)
66+
67+
@responses.activate
68+
def test_rename(self):
69+
data = self.load_from_file('images/rename.json')
70+
71+
responses.add(responses.PUT,
72+
'{}images/{}'.format(self.base_url, self.image.id),
73+
body=data,
74+
status=200,
75+
content_type='application/json')
76+
77+
res = self.image.rename(new_name='Descriptive name')
78+
79+
self.assertEqual(responses.calls[0].request.url,
80+
self.base_url + 'images/449676856')
81+
self.assertEqual(res['image']['name'], 'Descriptive name')
82+
83+
84+
if __name__ == '__main__':
85+
unittest.main()

0 commit comments

Comments
 (0)