Пример #1
0
    def test_delete_subnet(self, hetzner_client, bound_network, generic_action):
        hetzner_client.request.return_value = generic_action
        subnet = NetworkSubnet(ip_range="10.0.1.0/24")
        action = bound_network.delete_subnet(subnet)
        hetzner_client.request.assert_called_with(url="/networks/14/actions/delete_subnet", method="POST",
                                                  json={"ip_range": "10.0.1.0/24"})

        assert action.id == 1
        assert action.progress == 0
Пример #2
0
    def test_add_subnet(self, hetzner_client, bound_network, generic_action):
        hetzner_client.request.return_value = generic_action
        subnet = NetworkSubnet(type="cloud", ip_range="10.0.1.0/24", network_zone="eu-central")
        action = bound_network.add_subnet(subnet)
        hetzner_client.request.assert_called_with(url="/networks/14/actions/add_subnet", method="POST",
                                                  json={"type": "cloud", "ip_range": "10.0.1.0/24",
                                                        "network_zone": "eu-central"})

        assert action.id == 1
        assert action.progress == 0
Пример #3
0
    def realise_modify_subnets(self, allow_recreate: bool) -> None:
        defn: NetworkOptions = self.get_defn().config

        prev_subnets = set(self._state.get("subnets", ()))
        final_subnets = set(defn.subnets)

        for ip_range in prev_subnets - final_subnets:
            self.logger.log(f"deleting subnet {ip_range}")
            self.wait_on_action(self.get_client().networks.delete_subnet(
                network=Network(self.resource_id),
                subnet=NetworkSubnet(ip_range, "cloud", "eu-central"),
            ))

        for ip_range in final_subnets - prev_subnets:
            self.logger.log(f"adding subnet {ip_range}")
            self.wait_on_action(self.get_client().networks.add_subnet(
                network=Network(self.resource_id),
                subnet=NetworkSubnet(ip_range, "cloud", "eu-central"),
            ))

        with self.depl._db:
            self._state["subnets"] = list(defn.subnets)
    def _create_subnetwork(self):
        subnet = NetworkSubnet(
            ip_range=self.module.params.get("ip_range"),
            type=self.module.params.get('type'),
            network_zone=self.module.params.get('network_zone')
        )

        if not self.module.check_mode:
            try:
                self.hcloud_network.add_subnet(subnet=subnet).wait_until_finished()
            except APIException as e:
                self.module.fail_json(msg=e.message)

        self._mark_as_changed()
        self._get_network()
        self._get_subnetwork()
Пример #5
0
    def _create_subnetwork(self):
        params = {
            "ip_range": self.module.params.get("ip_range"),
            "type": self.module.params.get('type'),
            "network_zone": self.module.params.get('network_zone')
        }
        if self.module.params.get('type') == NetworkSubnet.TYPE_VSWITCH:
            self.module.fail_on_missing_params(required_params=["vswitch_id"])
            params["vswitch_id"] = self.module.params.get('vswitch_id')

        if not self.module.check_mode:
            try:
                self.hcloud_network.add_subnet(subnet=NetworkSubnet(
                    **params)).wait_until_finished()
            except Exception as e:
                self.module.fail_json(msg=e.message)

        self._mark_as_changed()
        self._get_network()
        self._get_subnetwork()
Пример #6
0
    async def _create_network(self, ip_range: str) -> BoundNetwork:

        self._log.info('Creating network ...')

        _ = self._client.networks.create(
            name=f'{self._prefix:s}-network',
            ip_range=ip_range,
            subnets=[
                NetworkSubnet(
                    ip_range=ip_range,
                    type='cloud',
                    network_zone='eu-central',
                )
            ],
        )

        self._log.info('Getting handle on network ...')

        return self._client.networks.get_by_name(
            name=f'{self._prefix:s}-network', )
Пример #7
0
    def __init__(self, client, data, complete=True):
        subnets = data.get("subnets", [])
        if subnets is not None:
            subnets = [NetworkSubnet.from_dict(subnet) for subnet in subnets]
            data['subnets'] = subnets

        routes = data.get("routes", [])
        if routes is not None:
            routes = [NetworkRoute.from_dict(route) for route in routes]
            data['routes'] = routes

        from hcloud.servers.client import BoundServer
        servers = data.get("servers", [])
        if servers is not None:
            servers = [
                BoundServer(client._client.servers, {"id": server},
                            complete=False) for server in servers
            ]
            data['servers'] = servers

        super(BoundNetwork, self).__init__(client, data, complete)
Пример #8
0
 def network_subnet(self):
     return NetworkSubnet(type="server", ip_range="10.0.1.0/24", network_zone="eu-central")
Пример #9
0
 def network_vswitch_subnet(self):
     return NetworkSubnet(type=NetworkSubnet.TYPE_VSWITCH,
                          ip_range="10.0.1.0/24",
                          network_zone="eu-central",
                          vswitch_id=123)
Пример #10
0
 def network_subnet(self):
     return NetworkSubnet(type=NetworkSubnet.TYPE_CLOUD,
                          ip_range="10.0.1.0/24",
                          network_zone="eu-central")