diff --git a/plugins/modules/hcloud_certificate.py b/plugins/modules/hcloud_certificate.py index 9b6c686..7c827ef 100644 --- a/plugins/modules/hcloud_certificate.py +++ b/plugins/modules/hcloud_certificate.py @@ -165,7 +165,7 @@ class AnsibleHcloudCertificate(Hcloud): self.module.params.get("name") ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_certificate(self): @@ -182,27 +182,29 @@ class AnsibleHcloudCertificate(Hcloud): if not self.module.check_mode: try: self.client.certificates.create(**params) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_certificate() def _update_certificate(self): - name = self.module.params.get("name") - if name is not None and self.hcloud_certificate.name != name: - self.module.fail_on_missing_params( - required_params=["id"] - ) - if not self.module.check_mode: - self.hcloud_certificate.update(name=name) - self._mark_as_changed() - - labels = self.module.params.get("labels") - if labels is not None and self.hcloud_certificate.labels != labels: - if not self.module.check_mode: - self.hcloud_certificate.update(labels=labels) - self._mark_as_changed() + try: + name = self.module.params.get("name") + if name is not None and self.hcloud_certificate.name != name: + self.module.fail_on_missing_params( + required_params=["id"] + ) + if not self.module.check_mode: + self.hcloud_certificate.update(name=name) + self._mark_as_changed() + labels = self.module.params.get("labels") + if labels is not None and self.hcloud_certificate.labels != labels: + if not self.module.check_mode: + self.hcloud_certificate.update(labels=labels) + self._mark_as_changed() + except Exception as e: + self.module.fail_json(msg=e.message) self._get_certificate() def present_certificate(self): @@ -216,7 +218,10 @@ class AnsibleHcloudCertificate(Hcloud): self._get_certificate() if self.hcloud_certificate is not None: if not self.module.check_mode: - self.client.certificates.delete(self.hcloud_certificate) + try: + self.client.certificates.delete(self.hcloud_certificate) + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_certificate = None diff --git a/plugins/modules/hcloud_certificate_info.py b/plugins/modules/hcloud_certificate_info.py index 479613a..d265339 100644 --- a/plugins/modules/hcloud_certificate_info.py +++ b/plugins/modules/hcloud_certificate_info.py @@ -134,7 +134,7 @@ class AnsibleHcloudCertificateInfo(Hcloud): else: self.hcloud_certificate_info = self.client.certificates.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_datacenter_info.py b/plugins/modules/hcloud_datacenter_info.py index 6c53672..d3614f6 100644 --- a/plugins/modules/hcloud_datacenter_info.py +++ b/plugins/modules/hcloud_datacenter_info.py @@ -123,7 +123,7 @@ class AnsibleHcloudDatacenterInfo(Hcloud): else: self.hcloud_datacenter_info = self.client.datacenters.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_floating_ip.py b/plugins/modules/hcloud_floating_ip.py index 5cba5d5..62e3849 100644 --- a/plugins/modules/hcloud_floating_ip.py +++ b/plugins/modules/hcloud_floating_ip.py @@ -207,40 +207,41 @@ class AnsibleHcloudFloatingIP(Hcloud): self.hcloud_floating_ip = self.client.floating_ips.get_by_name( self.module.params.get("name") ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_floating_ip(self): self.module.fail_on_missing_params( required_params=["type"] ) + try: + params = { + "description": self.module.params.get("description"), + "type": self.module.params.get("type"), + "name": self.module.params.get("name"), + } + if self.module.params.get("home_location") is not None: + params["home_location"] = self.client.locations.get_by_name( + self.module.params.get("home_location") + ) + elif self.module.params.get("server") is not None: + params["server"] = self.client.servers.get_by_name( + self.module.params.get("server") + ) + else: + self.module.fail_json(msg="one of the following is required: home_location, server") - params = { - "description": self.module.params.get("description"), - "type": self.module.params.get("type"), - "name": self.module.params.get("name"), - } - if self.module.params.get("home_location") is not None: - params["home_location"] = self.client.locations.get_by_name( - self.module.params.get("home_location") - ) - elif self.module.params.get("server") is not None: - params["server"] = self.client.servers.get_by_name( - self.module.params.get("server") - ) - else: - self.module.fail_json(msg="one of the following is required: home_location, server") - - if self.module.params.get("labels") is not None: - params["labels"] = self.module.params.get("labels") - if not self.module.check_mode: - resp = self.client.floating_ips.create(**params) - self.hcloud_floating_ip = resp.floating_ip - - delete_protection = self.module.params.get("delete_protection") - if delete_protection is not None: - self.hcloud_floating_ip.change_protection(delete=delete_protection).wait_until_finished() + if self.module.params.get("labels") is not None: + params["labels"] = self.module.params.get("labels") + if not self.module.check_mode: + resp = self.client.floating_ips.create(**params) + self.hcloud_floating_ip = resp.floating_ip + delete_protection = self.module.params.get("delete_protection") + if delete_protection is not None: + self.hcloud_floating_ip.change_protection(delete=delete_protection).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_floating_ip() @@ -290,7 +291,7 @@ class AnsibleHcloudFloatingIP(Hcloud): self._mark_as_changed() self._get_floating_ip() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def present_floating_ip(self): @@ -314,7 +315,7 @@ class AnsibleHcloudFloatingIP(Hcloud): ) self._mark_as_changed() self.hcloud_floating_ip = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_floating_ip_info.py b/plugins/modules/hcloud_floating_ip_info.py index ea335d1..c69a5ff 100644 --- a/plugins/modules/hcloud_floating_ip_info.py +++ b/plugins/modules/hcloud_floating_ip_info.py @@ -147,7 +147,7 @@ class AnsibleHcloudFloatingIPInfo(Hcloud): else: self.hcloud_floating_ip_info = self.client.floating_ips.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_image_info.py b/plugins/modules/hcloud_image_info.py index 658c0fa..476f06e 100644 --- a/plugins/modules/hcloud_image_info.py +++ b/plugins/modules/hcloud_image_info.py @@ -158,7 +158,7 @@ class AnsibleHcloudImageInfo(Hcloud): self.hcloud_image_info = self.client.images.get_all(**params) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_load_balancer.py b/plugins/modules/hcloud_load_balancer.py index 6e08054..24b4cdc 100644 --- a/plugins/modules/hcloud_load_balancer.py +++ b/plugins/modules/hcloud_load_balancer.py @@ -187,7 +187,7 @@ class AnsibleHcloudLoadBalancer(Hcloud): self.hcloud_load_balancer = self.client.load_balancers.get_by_name( self.module.params.get("name") ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_load_balancer(self): @@ -195,33 +195,34 @@ class AnsibleHcloudLoadBalancer(Hcloud): self.module.fail_on_missing_params( required_params=["name", "load_balancer_type"] ) + try: + params = { + "name": self.module.params.get("name"), + "load_balancer_type": self.client.load_balancer_types.get_by_name( + self.module.params.get("load_balancer_type") + ), + "labels": self.module.params.get("labels"), + } - params = { - "name": self.module.params.get("name"), - "load_balancer_type": self.client.load_balancer_types.get_by_name( - self.module.params.get("load_balancer_type") - ), - "labels": self.module.params.get("labels"), - } + if self.module.params.get("location") is None and self.module.params.get("network_zone") is None: + self.module.fail_json(msg="one of the following is required: location, network_zone") + elif self.module.params.get("location") is not None and self.module.params.get("network_zone") is None: + params["location"] = self.client.locations.get_by_name( + self.module.params.get("location") + ) + elif self.module.params.get("location") is None and self.module.params.get("network_zone") is not None: + params["network_zone"] = self.module.params.get("network_zone") - if self.module.params.get("location") is None and self.module.params.get("network_zone") is None: - self.module.fail_json(msg="one of the following is required: location, network_zone") - elif self.module.params.get("location") is not None and self.module.params.get("network_zone") is None: - params["location"] = self.client.locations.get_by_name( - self.module.params.get("location") - ) - elif self.module.params.get("location") is None and self.module.params.get("network_zone") is not None: - params["network_zone"] = self.module.params.get("network_zone") - - if not self.module.check_mode: - resp = self.client.load_balancers.create(**params) - resp.action.wait_until_finished(max_retries=1000) - - delete_protection = self.module.params.get("delete_protection") - if delete_protection is not None: - self._get_load_balancer() - self.hcloud_load_balancer.change_protection(delete=delete_protection).wait_until_finished() + if not self.module.check_mode: + resp = self.client.load_balancers.create(**params) + resp.action.wait_until_finished(max_retries=1000) + delete_protection = self.module.params.get("delete_protection") + if delete_protection is not None: + self._get_load_balancer() + self.hcloud_load_balancer.change_protection(delete=delete_protection).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_load_balancer() @@ -261,7 +262,7 @@ class AnsibleHcloudLoadBalancer(Hcloud): self._mark_as_changed() self._get_load_balancer() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def present_load_balancer(self): @@ -279,7 +280,7 @@ class AnsibleHcloudLoadBalancer(Hcloud): self.client.load_balancers.delete(self.hcloud_load_balancer) self._mark_as_changed() self.hcloud_load_balancer = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_load_balancer_info.py b/plugins/modules/hcloud_load_balancer_info.py index b9463f5..2f93d8e 100644 --- a/plugins/modules/hcloud_load_balancer_info.py +++ b/plugins/modules/hcloud_load_balancer_info.py @@ -370,7 +370,7 @@ class AnsibleHcloudLoadBalancerInfo(Hcloud): self.hcloud_load_balancer_info = self.client.load_balancers.get_all(**params) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_load_balancer_network.py b/plugins/modules/hcloud_load_balancer_network.py index 542c3e8..a0a69c4 100644 --- a/plugins/modules/hcloud_load_balancer_network.py +++ b/plugins/modules/hcloud_load_balancer_network.py @@ -125,7 +125,7 @@ class AnsibleHcloudLoadBalancerNetwork(Hcloud): self.hcloud_network = self.client.networks.get_by_name(self.module.params.get("network")) self.hcloud_load_balancer = self.client.load_balancers.get_by_name(self.module.params.get("load_balancer")) self.hcloud_load_balancer_network = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _get_load_balancer_network(self): @@ -144,7 +144,7 @@ class AnsibleHcloudLoadBalancerNetwork(Hcloud): if not self.module.check_mode: try: self.hcloud_load_balancer.attach_to_network(**params).wait_until_finished() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._mark_as_changed() @@ -162,9 +162,13 @@ class AnsibleHcloudLoadBalancerNetwork(Hcloud): self._get_load_balancer_network() if self.hcloud_load_balancer_network is not None and self.hcloud_load_balancer is not None: if not self.module.check_mode: - self.hcloud_load_balancer.detach_from_network( - self.hcloud_load_balancer_network.network).wait_until_finished() - self._mark_as_changed() + try: + self.hcloud_load_balancer.detach_from_network( + self.hcloud_load_balancer_network.network).wait_until_finished() + self._mark_as_changed() + except Exception as e: + self.module.fail_json(msg=e.message) + self.hcloud_load_balancer_network = None @staticmethod diff --git a/plugins/modules/hcloud_load_balancer_service.py b/plugins/modules/hcloud_load_balancer_service.py index 4ef4634..ae41e00 100644 --- a/plugins/modules/hcloud_load_balancer_service.py +++ b/plugins/modules/hcloud_load_balancer_service.py @@ -344,7 +344,7 @@ class AnsibleHcloudLoadBalancerService(Hcloud): self.module.params.get("load_balancer") ) self._get_load_balancer_service() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_load_balancer_service(self): @@ -377,7 +377,7 @@ class AnsibleHcloudLoadBalancerService(Hcloud): try: self.hcloud_load_balancer.add_service(LoadBalancerService(**params)).wait_until_finished( max_retries=1000) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_load_balancer() @@ -403,11 +403,11 @@ class AnsibleHcloudLoadBalancerService(Hcloud): hcloud_cert = self.client.certificates.get_by_name( certificate ) - except APIException: + except Exception: hcloud_cert = self.client.certificates.get_by_id( certificate ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) service_http.certificates.append(hcloud_cert) @@ -475,7 +475,7 @@ class AnsibleHcloudLoadBalancerService(Hcloud): if not self.module.check_mode: self.hcloud_load_balancer.update_service(LoadBalancerService(**params)).wait_until_finished( max_retries=1000) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._get_load_balancer() @@ -499,8 +499,11 @@ class AnsibleHcloudLoadBalancerService(Hcloud): self._get_load_balancer() if self.hcloud_load_balancer_service is not None: if not self.module.check_mode: - self.hcloud_load_balancer.delete_service(self.hcloud_load_balancer_service).wait_until_finished( - max_retries=1000) + try: + self.hcloud_load_balancer.delete_service(self.hcloud_load_balancer_service).wait_until_finished( + max_retries=1000) + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_load_balancer_service = None except APIException as e: diff --git a/plugins/modules/hcloud_load_balancer_target.py b/plugins/modules/hcloud_load_balancer_target.py index e1afde8..5e5f8d1 100644 --- a/plugins/modules/hcloud_load_balancer_target.py +++ b/plugins/modules/hcloud_load_balancer_target.py @@ -181,7 +181,7 @@ class AnsibleHcloudLoadBalancerTarget(Hcloud): if self.module.params.get("type") == "server": self.hcloud_server = self.client.servers.get_by_name(self.module.params.get("server")) self.hcloud_load_balancer_target = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _get_load_balancer_target(self): @@ -226,7 +226,7 @@ class AnsibleHcloudLoadBalancerTarget(Hcloud): if not self.module.check_mode: try: self.hcloud_load_balancer.add_target(**params).wait_until_finished() - except APIException as e: + except Exception as e: if e.code == "locked" or e.code == "conflict": self._create_load_balancer_target() else: @@ -269,7 +269,10 @@ class AnsibleHcloudLoadBalancerTarget(Hcloud): target = LoadBalancerTarget(type=self.module.params.get("type"), ip=LoadBalancerTargetIP(ip=self.module.params.get("ip")), use_private_ip=False) - self.hcloud_load_balancer.remove_target(target).wait_until_finished() + try: + self.hcloud_load_balancer.remove_target(target).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_load_balancer_target = None diff --git a/plugins/modules/hcloud_load_balancer_type_info.py b/plugins/modules/hcloud_load_balancer_type_info.py index 9645009..ac46286 100644 --- a/plugins/modules/hcloud_load_balancer_type_info.py +++ b/plugins/modules/hcloud_load_balancer_type_info.py @@ -132,7 +132,7 @@ class AnsibleHcloudLoadBalancerTypeInfo(Hcloud): else: self.hcloud_load_balancer_type_info = self.client.load_balancer_types.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_location_info.py b/plugins/modules/hcloud_location_info.py index 21f4774..6278abf 100644 --- a/plugins/modules/hcloud_location_info.py +++ b/plugins/modules/hcloud_location_info.py @@ -122,7 +122,7 @@ class AnsibleHcloudLocationInfo(Hcloud): else: self.hcloud_location_info = self.client.locations.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_network.py b/plugins/modules/hcloud_network.py index f99a7fd..d583b74 100644 --- a/plugins/modules/hcloud_network.py +++ b/plugins/modules/hcloud_network.py @@ -144,7 +144,7 @@ class AnsibleHcloudNetwork(Hcloud): self.hcloud_network = self.client.networks.get_by_name( self.module.params.get("name") ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_network(self): @@ -157,15 +157,16 @@ class AnsibleHcloudNetwork(Hcloud): "ip_range": self.module.params.get("ip_range"), "labels": self.module.params.get("labels"), } + try: + if not self.module.check_mode: + self.client.networks.create(**params) - if not self.module.check_mode: - self.client.networks.create(**params) - - delete_protection = self.module.params.get("delete_protection") - if delete_protection is not None: - self._get_network() - self.hcloud_network.change_protection(delete=delete_protection).wait_until_finished() - + delete_protection = self.module.params.get("delete_protection") + if delete_protection is not None: + self._get_network() + self.hcloud_network.change_protection(delete=delete_protection).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_network() @@ -188,7 +189,7 @@ class AnsibleHcloudNetwork(Hcloud): if not self.module.check_mode: self.hcloud_network.change_protection(delete=delete_protection).wait_until_finished() self._mark_as_changed() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._get_network() @@ -206,7 +207,7 @@ class AnsibleHcloudNetwork(Hcloud): if not self.module.check_mode: self.client.networks.delete(self.hcloud_network) self._mark_as_changed() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self.hcloud_network = None diff --git a/plugins/modules/hcloud_network_info.py b/plugins/modules/hcloud_network_info.py index 56c5ce2..dd66b5e 100644 --- a/plugins/modules/hcloud_network_info.py +++ b/plugins/modules/hcloud_network_info.py @@ -264,7 +264,7 @@ class AnsibleHcloudNetworkInfo(Hcloud): else: self.hcloud_network_info = self.client.networks.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_rdns.py b/plugins/modules/hcloud_rdns.py index 8bbfaed..4b1d603 100644 --- a/plugins/modules/hcloud_rdns.py +++ b/plugins/modules/hcloud_rdns.py @@ -147,7 +147,7 @@ class AnsibleHcloudReverseDNS(Hcloud): self.hcloud_resource = self.client.floating_ips.get_by_name( self.module.params.get("floating_ip") ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _get_rdns(self): @@ -198,8 +198,10 @@ class AnsibleHcloudReverseDNS(Hcloud): } if not self.module.check_mode: - self.hcloud_resource.change_dns_ptr(**params).wait_until_finished() - + try: + self.hcloud_resource.change_dns_ptr(**params).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_resource() self._get_rdns() @@ -213,8 +215,10 @@ class AnsibleHcloudReverseDNS(Hcloud): } if not self.module.check_mode: - self.hcloud_resource.change_dns_ptr(**params).wait_until_finished() - + try: + self.hcloud_resource.change_dns_ptr(**params).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_resource() self._get_rdns() @@ -232,7 +236,10 @@ class AnsibleHcloudReverseDNS(Hcloud): self._get_rdns() if self.hcloud_rdns is not None: if not self.module.check_mode: - self.hcloud_resource.change_dns_ptr(ip=self.hcloud_rdns['ip_address'], dns_ptr=None) + try: + self.hcloud_resource.change_dns_ptr(ip=self.hcloud_rdns['ip_address'], dns_ptr=None) + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_rdns = None diff --git a/plugins/modules/hcloud_route.py b/plugins/modules/hcloud_route.py index fce3844..318df3c 100644 --- a/plugins/modules/hcloud_route.py +++ b/plugins/modules/hcloud_route.py @@ -120,7 +120,7 @@ class AnsibleHcloudRoute(Hcloud): try: self.hcloud_network = self.client.networks.get_by_name(self.module.params.get("network")) self.hcloud_route = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _get_route(self): @@ -139,7 +139,7 @@ class AnsibleHcloudRoute(Hcloud): if not self.module.check_mode: try: self.hcloud_network.add_route(route=route).wait_until_finished() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._mark_as_changed() @@ -157,7 +157,10 @@ class AnsibleHcloudRoute(Hcloud): self._get_route() if self.hcloud_route is not None and self.hcloud_network is not None: if not self.module.check_mode: - self.hcloud_network.delete_route(self.hcloud_route).wait_until_finished() + try: + self.hcloud_network.delete_route(self.hcloud_route).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_route = None diff --git a/plugins/modules/hcloud_server.py b/plugins/modules/hcloud_server.py index 4cc4887..849f273 100644 --- a/plugins/modules/hcloud_server.py +++ b/plugins/modules/hcloud_server.py @@ -297,7 +297,7 @@ class AnsibleHcloudServer(Hcloud): self.hcloud_server = self.client.servers.get_by_name( self.module.params.get("name") ) - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_server(self): @@ -345,27 +345,30 @@ class AnsibleHcloudServer(Hcloud): ) if not self.module.check_mode: - resp = self.client.servers.create(**params) - self.result["root_password"] = resp.root_password - resp.action.wait_until_finished(max_retries=1000) - [action.wait_until_finished() for action in resp.next_actions] + try: + resp = self.client.servers.create(**params) + self.result["root_password"] = resp.root_password + resp.action.wait_until_finished(max_retries=1000) + [action.wait_until_finished() for action in resp.next_actions] - rescue_mode = self.module.params.get("rescue_mode") - if rescue_mode: - self._get_server() - self._set_rescue_mode(rescue_mode) + rescue_mode = self.module.params.get("rescue_mode") + if rescue_mode: + self._get_server() + self._set_rescue_mode(rescue_mode) - backups = self.module.params.get("backups") - if backups: - self._get_server() - self.hcloud_server.enable_backup().wait_until_finished() + backups = self.module.params.get("backups") + if backups: + self._get_server() + self.hcloud_server.enable_backup().wait_until_finished() - delete_protection = self.module.params.get("delete_protection") - rebuild_protection = self.module.params.get("rebuild_protection") - if delete_protection is not None and rebuild_protection is not None: - self._get_server() - self.hcloud_server.change_protection(delete=delete_protection, - rebuild=rebuild_protection).wait_until_finished() + delete_protection = self.module.params.get("delete_protection") + rebuild_protection = self.module.params.get("rebuild_protection") + if delete_protection is not None and rebuild_protection is not None: + self._get_server() + self.hcloud_server.change_protection(delete=delete_protection, + rebuild=rebuild_protection).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_server() @@ -434,7 +437,7 @@ class AnsibleHcloudServer(Hcloud): rebuild=rebuild_protection).wait_until_finished() self._mark_as_changed() self._get_server() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _set_rescue_mode(self, rescue_mode): @@ -456,7 +459,7 @@ class AnsibleHcloudServer(Hcloud): self.client.servers.power_on(self.hcloud_server).wait_until_finished() self._mark_as_changed() self._get_server() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def stop_server(self): @@ -466,7 +469,7 @@ class AnsibleHcloudServer(Hcloud): self.client.servers.power_off(self.hcloud_server).wait_until_finished() self._mark_as_changed() self._get_server() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def rebuild_server(self): @@ -480,7 +483,7 @@ class AnsibleHcloudServer(Hcloud): self._mark_as_changed() self._get_server() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def present_server(self): @@ -498,7 +501,7 @@ class AnsibleHcloudServer(Hcloud): self.client.servers.delete(self.hcloud_server).wait_until_finished() self._mark_as_changed() self.hcloud_server = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_server_info.py b/plugins/modules/hcloud_server_info.py index f99d1c8..80fb61d 100644 --- a/plugins/modules/hcloud_server_info.py +++ b/plugins/modules/hcloud_server_info.py @@ -180,7 +180,7 @@ class AnsibleHcloudServerInfo(Hcloud): else: self.hcloud_server_info = self.client.servers.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_server_network.py b/plugins/modules/hcloud_server_network.py index 285b2fe..b606349 100644 --- a/plugins/modules/hcloud_server_network.py +++ b/plugins/modules/hcloud_server_network.py @@ -145,7 +145,7 @@ class AnsibleHcloudServerNetwork(Hcloud): self.hcloud_network = self.client.networks.get_by_name(self.module.params.get("network")) self.hcloud_server = self.client.servers.get_by_name(self.module.params.get("server")) self.hcloud_server_network = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _get_server_network(self): @@ -166,7 +166,7 @@ class AnsibleHcloudServerNetwork(Hcloud): if not self.module.check_mode: try: self.hcloud_server.attach_to_network(**params).wait_until_finished() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._mark_as_changed() @@ -204,7 +204,10 @@ class AnsibleHcloudServerNetwork(Hcloud): self._get_server_network() if self.hcloud_server_network is not None and self.hcloud_server is not None: if not self.module.check_mode: - self.hcloud_server.detach_from_network(self.hcloud_server_network.network).wait_until_finished() + try: + self.hcloud_server.detach_from_network(self.hcloud_server_network.network).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_server_network = None diff --git a/plugins/modules/hcloud_server_type_info.py b/plugins/modules/hcloud_server_type_info.py index 5b575d9..19659e1 100644 --- a/plugins/modules/hcloud_server_type_info.py +++ b/plugins/modules/hcloud_server_type_info.py @@ -140,7 +140,7 @@ class AnsibleHcloudServerTypeInfo(Hcloud): else: self.hcloud_server_type_info = self.client.server_types.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_ssh_key.py b/plugins/modules/hcloud_ssh_key.py index df13922..60500a7 100644 --- a/plugins/modules/hcloud_ssh_key.py +++ b/plugins/modules/hcloud_ssh_key.py @@ -206,7 +206,10 @@ class AnsibleHcloudSSHKey(Hcloud): self._get_ssh_key() if self.hcloud_ssh_key is not None: if not self.module.check_mode: - self.client.ssh_keys.delete(self.hcloud_ssh_key) + try: + self.client.ssh_keys.delete(self.hcloud_ssh_key) + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_ssh_key = None diff --git a/plugins/modules/hcloud_ssh_key_info.py b/plugins/modules/hcloud_ssh_key_info.py index ad2b4fd..46cd334 100644 --- a/plugins/modules/hcloud_ssh_key_info.py +++ b/plugins/modules/hcloud_ssh_key_info.py @@ -129,7 +129,7 @@ class AnsibleHcloudSSHKeyInfo(Hcloud): else: self.hcloud_ssh_key_info = self.client.ssh_keys.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_subnetwork.py b/plugins/modules/hcloud_subnetwork.py index fd19980..79210b4 100644 --- a/plugins/modules/hcloud_subnetwork.py +++ b/plugins/modules/hcloud_subnetwork.py @@ -160,7 +160,7 @@ class AnsibleHcloudSubnetwork(Hcloud): try: self.hcloud_network = self.client.networks.get_by_name(self.module.params.get("network")) self.hcloud_subnetwork = None - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _get_subnetwork(self): @@ -184,7 +184,7 @@ class AnsibleHcloudSubnetwork(Hcloud): if not self.module.check_mode: try: self.hcloud_network.add_subnet(subnet=NetworkSubnet(**params)).wait_until_finished() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) self._mark_as_changed() @@ -202,7 +202,10 @@ class AnsibleHcloudSubnetwork(Hcloud): self._get_subnetwork() if self.hcloud_subnetwork is not None and self.hcloud_network is not None: if not self.module.check_mode: - self.hcloud_network.delete_subnet(self.hcloud_subnetwork).wait_until_finished() + try: + self.hcloud_network.delete_subnet(self.hcloud_subnetwork).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self.hcloud_subnetwork = None diff --git a/plugins/modules/hcloud_volume.py b/plugins/modules/hcloud_volume.py index 2835937..a43fdbb 100644 --- a/plugins/modules/hcloud_volume.py +++ b/plugins/modules/hcloud_volume.py @@ -206,7 +206,7 @@ class AnsibleHcloudVolume(Hcloud): self.hcloud_volume = self.client.volumes.get_by_name( self.module.params.get("name") ) - except hcloud.APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def _create_volume(self): @@ -228,14 +228,16 @@ class AnsibleHcloudVolume(Hcloud): self.module.fail_json(msg="server or location is required") if not self.module.check_mode: - resp = self.client.volumes.create(**params) - resp.action.wait_until_finished() - [action.wait_until_finished() for action in resp.next_actions] - delete_protection = self.module.params.get("delete_protection") - if delete_protection is not None: - self._get_volume() - self.hcloud_volume.change_protection(delete=delete_protection).wait_until_finished() - + try: + resp = self.client.volumes.create(**params) + resp.action.wait_until_finished() + [action.wait_until_finished() for action in resp.next_actions] + delete_protection = self.module.params.get("delete_protection") + if delete_protection is not None: + self._get_volume() + self.hcloud_volume.change_protection(delete=delete_protection).wait_until_finished() + except Exception as e: + self.module.fail_json(msg=e.message) self._mark_as_changed() self._get_volume() @@ -277,7 +279,7 @@ class AnsibleHcloudVolume(Hcloud): self._mark_as_changed() self._get_volume() - except hcloud.APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) def present_volume(self): @@ -295,7 +297,7 @@ class AnsibleHcloudVolume(Hcloud): self.client.volumes.delete(self.hcloud_volume) self._mark_as_changed() self.hcloud_volume = None - except hcloud.APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/plugins/modules/hcloud_volume_info.py b/plugins/modules/hcloud_volume_info.py index 3006ea5..3621776 100644 --- a/plugins/modules/hcloud_volume_info.py +++ b/plugins/modules/hcloud_volume_info.py @@ -147,7 +147,7 @@ class AnsibleHcloudVolumeInfo(Hcloud): else: self.hcloud_volume_info = self.client.volumes.get_all() - except APIException as e: + except Exception as e: self.module.fail_json(msg=e.message) @staticmethod diff --git a/tests/integration/targets/hcloud_floating_ip/tasks/main.yml b/tests/integration/targets/hcloud_floating_ip/tasks/main.yml index 70f23e3..b5354a3 100644 --- a/tests/integration/targets/hcloud_floating_ip/tasks/main.yml +++ b/tests/integration/targets/hcloud_floating_ip/tasks/main.yml @@ -62,6 +62,20 @@ - result is failed - 'result.msg == "one of the following is required: id, name"' + +- name: test invalid type + hcloud_floating_ip: + name: "{{ hcloud_floating_ip_name }}" + type: ipv5 + home_location: "fsn1" + register: result + ignore_errors: yes +- name: verify invalid type + assert: + that: + - result is failed + - 'result.msg == "one of the following is required: id, name"' + - name: test create Floating IP with check mode hcloud_floating_ip: name: "{{ hcloud_floating_ip_name }}"