|
3 | 3 |
|
4 | 4 | from hcloud.actions.client import BoundAction |
5 | 5 | from hcloud.core.domain import add_meta_to_result |
| 6 | +from hcloud.firewalls.client import BoundFirewall |
6 | 7 | from hcloud.floating_ips.client import BoundFloatingIP |
7 | 8 | from hcloud.isos.client import BoundIso |
8 | 9 | from hcloud.servers.domain import Server, CreateServerResponse, ResetPasswordResponse, EnableRescueResponse, \ |
9 | | - RequestConsoleResponse, PublicNetwork, IPv4Address, IPv6Network, PrivateNet |
| 10 | + RequestConsoleResponse, PublicNetwork, IPv4Address, IPv6Network, PrivateNet, PublicNetworkFirewall |
10 | 11 | from hcloud.volumes.client import BoundVolume |
11 | 12 | from hcloud.images.domain import CreateImageResponse |
12 | 13 | from hcloud.images.client import BoundImage |
@@ -48,11 +49,21 @@ def __init__(self, client, data, complete=True): |
48 | 49 | ipv6_network = IPv6Network(**public_net['ipv6']) |
49 | 50 | floating_ips = [BoundFloatingIP(client._client.floating_ips, {"id": floating_ip}, complete=False) for |
50 | 51 | floating_ip in public_net['floating_ips']] |
51 | | - data['public_net'] = PublicNetwork(ipv4=ipv4_address, ipv6=ipv6_network, floating_ips=floating_ips) |
| 52 | + firewalls = [ |
| 53 | + PublicNetworkFirewall( |
| 54 | + BoundFirewall(client._client.firewalls, {"id": firewall["id"]}, complete=False), |
| 55 | + status=firewall["status"] |
| 56 | + ) for firewall in public_net.get("firewalls", []) |
| 57 | + ] |
| 58 | + data['public_net'] = PublicNetwork(ipv4=ipv4_address, ipv6=ipv6_network, floating_ips=floating_ips, |
| 59 | + firewalls=firewalls) |
52 | 60 |
|
53 | 61 | private_nets = data.get("private_net") |
54 | 62 | if private_nets: |
55 | | - private_nets = [PrivateNet(network=BoundNetwork(client._client.networks, {"id": private_net['network']}, complete=False), ip=private_net['ip'], alias_ips=private_net['alias_ips'], mac_address=private_net['mac_address']) for private_net in private_nets] |
| 63 | + private_nets = [PrivateNet( |
| 64 | + network=BoundNetwork(client._client.networks, {"id": private_net['network']}, complete=False), |
| 65 | + ip=private_net['ip'], alias_ips=private_net['alias_ips'], mac_address=private_net['mac_address']) for |
| 66 | + private_net in private_nets] |
56 | 67 | data['private_net'] = private_nets |
57 | 68 |
|
58 | 69 | super(BoundServer, self).__init__(client, data, complete) |
@@ -392,6 +403,7 @@ def create(self, |
392 | 403 | image, # type: Image |
393 | 404 | ssh_keys=None, # type: Optional[List[SSHKey]] |
394 | 405 | volumes=None, # type: Optional[List[Volume]] |
| 406 | + firewalls=None, # type: Optional[List[Firewall]] |
395 | 407 | networks=None, # type: Optional[List[Network]] |
396 | 408 | user_data=None, # type: Optional[str] |
397 | 409 | labels=None, # type: Optional[Dict[str, str]] |
@@ -444,6 +456,8 @@ def create(self, |
444 | 456 | data['volumes'] = [volume.id for volume in volumes] |
445 | 457 | if networks is not None: |
446 | 458 | data['networks'] = [network.id for network in networks] |
| 459 | + if firewalls is not None: |
| 460 | + data['firewalls'] = [firewall.id for firewall in firewalls] |
447 | 461 | if user_data is not None: |
448 | 462 | data['user_data'] = user_data |
449 | 463 | if labels is not None: |
|
0 commit comments