Skip to content

Commit 4f545a2

Browse files
author
Faustas
committed
Wip updates
1 parent 8f7d7d2 commit 4f545a2

File tree

6 files changed

+132
-12
lines changed

6 files changed

+132
-12
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"network":
3+
{
4+
"ip_networks":
5+
{
6+
"ip_network":
7+
[
8+
{
9+
"address": "172.16.0.0/22",
10+
"dhcp": "yes",
11+
"dhcp_bootfile_url":
12+
"tftp://172.16.0.253/pxelinux.0",
13+
"dhcp_default_route": "no",
14+
"dhcp_dns": ["172.16.0.10", "172.16.1.10"],
15+
"family": "IPv4", "gateway": "172.16.0.1"}]},
16+
"name": "test network modify",
17+
"router": "04b65749-61e2-4f08-a259-c75afbe81abf",
18+
"type": "private",
19+
"uuid": "036df3d0-8629-4549-984e-dc86fc3fa1b0",
20+
"zone": "fi-hel1"}
21+
}

test/json_data/network_post.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"network":
3+
{
4+
"ip_networks":
5+
{
6+
"ip_network":
7+
[
8+
{
9+
"address": "172.16.0.0/22",
10+
"dhcp": "yes",
11+
"dhcp_bootfile_url": "tftp://172.16.0.253/pxelinux.0",
12+
"dhcp_default_route": "no",
13+
"dhcp_dns": ["172.16.0.10", "172.16.1.10"],
14+
"family": "IPv4", "gateway": "172.16.0.1"}]},
15+
"name": "test network",
16+
"router": "04b65749-61e2-4f08-a259-c75afbe81abf",
17+
"type": "private",
18+
"uuid": "036df3d0-8629-4549-984e-dc86fc3fa1b0",
19+
"zone": "fi-hel1"}
20+
}

test/test_network.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ def test_get_networks(self, manager):
1313
data = Mock.mock_get('network')
1414
networks = manager.get_networks()
1515

16+
for network in networks:
17+
assert type(network).__name__ == "Network"
18+
1619
@responses.activate
1720
def test_get_network(self, manager):
1821
data = Mock.mock_get('network/03000000-0000-4000-8001-000000000000')
@@ -23,6 +26,54 @@ def test_get_network(self, manager):
2326
assert network.type == 'public'
2427
assert network.zone == 'fi-hel1'
2528

29+
@responses.activate
30+
def test_create_network(self, manager):
31+
data = Mock.mock_post('network')
32+
network = manager.create_network(
33+
name='test network',
34+
zone='fi-hel1',
35+
address='172.16.0.0/22',
36+
dhcp='yes',
37+
family='IPv4',
38+
router='04b65749-61e2-4f08-a259-c75afbe81abf',
39+
dhcp_default_route='no',
40+
dhcp_dns=["172.16.0.10", "172.16.1.10"],
41+
dhcp_bootfile_url='tftp://172.16.0.253/pxelinux.0',
42+
gateway='172.16.0.1'
43+
)
44+
45+
assert type(network).__name__ == "Network"
46+
assert network.uuid == '036df3d0-8629-4549-984e-dc86fc3fa1b0'
47+
assert network.type == 'private'
48+
assert network.zone == 'fi-hel1'
49+
50+
@responses.activate
51+
def test_modify_network(self, manager):
52+
data = Mock.mock_put('network/036df3d0-8629-4549-984e-dc86fc3fa1b0')
53+
network = manager.modify_network(
54+
uuid='036df3d0-8629-4549-984e-dc86fc3fa1b0',
55+
dhcp='yes',
56+
family='IPv4',
57+
router='04b65749-61e2-4f08-a259-c75afbe81abf',
58+
name='test network modify',
59+
dhcp_default_route='no',
60+
dhcp_dns=["172.16.0.10", "172.16.1.10"],
61+
dhcp_bootfile_url='tftp://172.16.0.253/pxelinux.0',
62+
gateway='172.16.0.1'
63+
)
64+
65+
assert type(network).__name__ == "test network modify"
66+
assert network.uuid == '036df3d0-8629-4549-984e-dc86fc3fa1b0'
67+
assert network.type == 'private'
68+
assert network.zone == 'fi-hel1'
69+
70+
@responses.activate
71+
def test_delete_network(sekf, manager):
72+
data = Mock.mock_delete('network/03000000-0000-4000-8001-000000000000')
73+
res = manager.delete_network('03000000-0000-4000-8001-000000000000')
74+
75+
assert res == {}
76+
2677
@responses.activate
2778
def test_get_routers(self, manager):
2879
data = Mock.mock_get('router')

upcloud_api/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@
2626
from upcloud_api.interface import Interface
2727
from upcloud_api.router import Router
2828
from upcloud_api.host import Host
29+
from upcloud_api.ip_network import IpNetwork
2930
from upcloud_api.cloud_manager.cloud_manager import CloudManager

upcloud_api/cloud_manager/network_mixin.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from __future__ import division
44
from __future__ import absolute_import
55

6-
from upcloud_api import Network, Interface, Router
6+
from upcloud_api import Network, Interface, Router, IpNetwork
77

88

99
class NetworkManager(object):
@@ -16,25 +16,28 @@ def get_networks(self, zone=None):
1616
Get a list of all networks.
1717
Zone can be passed to return networks in a specific zone
1818
"""
19-
url = '/network/?zone={0}'.format(zone) if zone else '/network/'
19+
url = '/network/?zone={0}'.format(zone) if zone else '/network'
2020
res = self.get_request(url)
21-
print(res)
22-
return [Network(**network) for network in res['networks']['network']]
21+
networks = [Network(**network) for network in res['networks']['network']]
22+
for network in networks:
23+
network.ip_networks = [IpNetwork(**n) for n in network.ip_networks.get('ip_network')]
24+
return networks
2325

2426
def get_network(self, uuid):
2527
"""
2628
Retrieves the details of a specific network.
2729
"""
2830
url = '/network/{0}'.format(uuid)
2931
res = self.get_request(url)
30-
print(res)
31-
return Network(**res['network'])
32+
network = Network(**res['network'])
33+
network.ip_networks = [IpNetwork(**n) for n in network.ip_networks.get('ip_network')]
34+
return network
3235

3336
def create_network(self, name, zone, address, dhcp, family, router=None, dhcp_default_route=None, dhcp_dns=None, dhcp_bootfile_url=None, gateway=None):
3437
"""
3538
Creates a new SDN private network that cloud servers from the same zone can be attached to.
3639
"""
37-
url = '/network/'
40+
url = '/network'
3841
body = {
3942
'network': {
4043
'name': name,
@@ -52,13 +55,13 @@ def create_network(self, name, zone, address, dhcp, family, router=None, dhcp_de
5255
if router:
5356
body['network']['router'] = router
5457
if dhcp_default_route:
55-
body['network']['ip_networks']['network']['dhcp_default_route'] = dhcp_default_route
58+
body['network']['ip_networks']['ip_network']['dhcp_default_route'] = dhcp_default_route
5659
if dhcp_dns:
57-
body['network']['ip_networks']['network']['dhcp_dns'] = dhcp_dns
60+
body['network']['ip_networks']['ip_network']['dhcp_dns'] = dhcp_dns
5861
if dhcp_bootfile_url:
59-
body['network']['ip_networks']['network']['dhcp_bootfile_url'] = dhcp_bootfile_url
62+
body['network']['ip_networks']['ip_network']['dhcp_bootfile_url'] = dhcp_bootfile_url
6063
if gateway:
61-
body['network']['ip_networks']['network']['gateway'] = gateway
64+
body['network']['ip_networks']['ip_network']['gateway'] = gateway
6265
res = self.post_request(url, body)
6366
return Network(**res['network'])
6467

@@ -89,7 +92,9 @@ def modify_network(self, uuid, dhcp, family, name=None, router=None, dhcp_defaul
8992
if gateway:
9093
body['network']['ip_networks']['ip_network']['gateway'] = gateway
9194
res = self.put_request(url, body)
92-
return Network(**res['network'])
95+
network = Network(**res['network'])
96+
network.ip_networks = [IpNetwork(**n) for n in network.ip_networks.get('ip_network')]
97+
return network
9398

9499
def delete_network(self, uuid):
95100
"""

upcloud_api/ip_network.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from __future__ import unicode_literals
2+
from __future__ import print_function
3+
from __future__ import division
4+
from __future__ import absolute_import
5+
6+
from upcloud_api import UpCloudResource
7+
from upcloud_api.utils import assignIfExists
8+
9+
10+
class IpNetwork(UpCloudResource):
11+
"""
12+
Class representation of UpCloud Ip Network.
13+
"""
14+
15+
ATTRIBUTES = {
16+
'address': None,
17+
'dhcp': None,
18+
'dhcp_default_route': None,
19+
'dhcp_dns': [],
20+
'family': None,
21+
'gateway': None
22+
}

0 commit comments

Comments
 (0)