@@ -21,7 +21,7 @@ def __init__(self, client, data, complete=True):
2121 data ['routes' ] = routes
2222
2323 from hcloud .servers .client import BoundServer
24- servers = data .get ("servers" ,[])
24+ servers = data .get ("servers" , [])
2525 if servers is not None :
2626 servers = [BoundServer (client ._client .servers , {"id" : server }, complete = False ) for server in servers ]
2727 data ['servers' ] = servers
@@ -76,6 +76,36 @@ def get_actions(self, status=None, sort=None):
7676 """
7777 return self ._client .get_actions (self , status , sort )
7878
79+ def add_subnet (self , subnet ):
80+ # type: (NetworkSubnet) -> List[BoundAction]
81+ return self ._client .add_subnet (self , subnet = subnet )
82+
83+ def remove_subnet (self , subnet ):
84+ # type: (NetworkSubnet) -> List[BoundAction]
85+ return self ._client .remove_subnet (self , subnet = subnet )
86+
87+ def add_route (self , route ):
88+ # type: (NetworkRoute) -> List[BoundAction]
89+ return self ._client .add_route (self , route = route )
90+
91+ def remove_route (self , route ):
92+ # type: (NetworkRoute) -> List[BoundAction]
93+ return self ._client .remove_route (self , route = route )
94+
95+ def change_ip_range (self , ip_range ):
96+ # type: (str) -> List[BoundAction]
97+ return self ._client .change_ip_range (self , ip_range = ip_range )
98+
99+ def change_protection (self , delete = None ):
100+ # type: (Optional[bool]) -> BoundAction
101+ """Changes the protection configuration of a network.
102+
103+ :param delete: boolean
104+ If True, prevents the network from being deleted
105+ :return: :class:`BoundAction <hcloud.actions.client.BoundAction>`
106+ """
107+ return self ._client .change_protection (self , delete = delete )
108+
79109
80110class NetworksClient (ClientEntityBase , GetEntityByNameMixin ):
81111 results_list_attribute_name = "networks"
@@ -274,3 +304,46 @@ def get_actions(self, network, status=None, sort=None):
274304 return super (NetworksClient , self ).get_actions (
275305 network , status = status , sort = sort
276306 )
307+
308+ def add_subnet (self , network , subnet ):
309+ # type: (Union[Network, BoundNetwork], NetworkSubnet) -> List[BoundAction]
310+ # TODO
311+ pass
312+
313+ def remove_subnet (self , network , subnet ):
314+ # type: (Union[Network, BoundNetwork], NetworkSubnet) -> List[BoundAction]
315+ # TODO
316+ pass
317+
318+ def add_route (self , network , route ):
319+ # type: (Union[Network, BoundNetwork], NetworkRoute) -> List[BoundAction]
320+ # TODO
321+ pass
322+
323+ def remove_route (self , network , route ):
324+ # type: (Union[Network, BoundNetwork], NetworkRoute) -> List[BoundAction]
325+ # TODO
326+ pass
327+
328+ def change_ip_range (self , network , ip_range ):
329+ # type: (Union[Network, BoundNetwork], str) -> List[BoundAction]
330+ # TODO
331+ pass
332+
333+ def change_protection (self , network , delete = None ):
334+ # type: (Union[Network, BoundNetwork], Optional[bool]) -> BoundAction
335+ """Changes the protection configuration of a network.
336+
337+ :param network: :class:`BoundNetwork <hcloud.networks.client.BoundNetwork>` or :class:`Network <hcloud.networks.domain.Network>`
338+ :param delete: boolean
339+ If True, prevents the network from being deleted
340+ :return: :class:`BoundAction <hcloud.actions.client.BoundAction>`
341+ """
342+ data = {}
343+ if delete is not None :
344+ data .update ({"delete" : delete })
345+
346+ response = self ._client .request (
347+ url = "/networks/{network_id}/actions/change_protection" .format (network_id = network .id ),
348+ method = "POST" , json = data )
349+ return BoundAction (self ._client .actions , response ['action' ])
0 commit comments