From 96199be96b0cc6fea10d7c23f69f42b1a7d7b184 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20K=C3=A4mmerling?=
 <4281581+LKaemmerling@users.noreply.github.com>
Date: Wed, 21 Aug 2019 14:55:37 +0200
Subject: [PATCH] Rename hcloud_*_facts to hcloud_*_info (#60926)

* Rename hcloud_datacenter_facts to hcloud_datacenter_info

* Rename hcloud_location_facts to hcloud_location_info

* Rename hcloud_image_facts to hcloud_image_info

* Rename hcloud_floating_ip_facts to hcloud_floating_ip_info

* Rename hcloud_server_type_facts to hcloud_server_type_info

* Rename hcloud_server_facts to hcloud_server_info

* Rename hcloud_ssh_key_facts to hcloud_ssh_key_info

* Rename hcloud_volume_facts to hcloud_volume_info

* Fix typo in hcloud_image_info

* Add to porting guide and add changelog fragment

* Reword porting guide
---
 .../fragments/60516-hcloud-facts-info.yml     | 17 ++++
 .../rst/porting_guides/porting_guide_2.9.rst  | 24 +++++
 .../cloud/hcloud/_hcloud_datacenter_facts.py  |  1 +
 .../cloud/hcloud/_hcloud_floating_ip_facts.py |  1 +
 .../cloud/hcloud/_hcloud_image_facts.py       |  1 +
 .../cloud/hcloud/_hcloud_location_facts.py    |  1 +
 .../cloud/hcloud/_hcloud_server_facts.py      |  1 +
 .../cloud/hcloud/_hcloud_server_type_facts.py |  1 +
 .../cloud/hcloud/_hcloud_ssh_key_facts.py     |  1 +
 .../cloud/hcloud/_hcloud_volume_facts.py      |  1 +
 ...ter_facts.py => hcloud_datacenter_info.py} | 67 ++++++++-----
 ...ip_facts.py => hcloud_floating_ip_info.py} | 57 ++++++-----
 ...ud_image_facts.py => hcloud_image_info.py} | 67 ++++++++-----
 ...ation_facts.py => hcloud_location_info.py} | 59 ++++++-----
 ..._server_facts.py => hcloud_server_info.py} | 62 +++++++-----
 ...pe_facts.py => hcloud_server_type_info.py} | 59 ++++++-----
 ...sh_key_facts.py => hcloud_ssh_key_info.py} | 60 +++++++-----
 ..._volume_facts.py => hcloud_volume_info.py} | 59 ++++++-----
 .../hcloud_datacenter_facts/tasks/main.yml    | 36 -------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../hcloud_datacenter_info/tasks/main.yml     | 40 ++++++++
 .../hcloud_floating_ip_facts/tasks/main.yml   | 53 ----------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../hcloud_floating_ip_info/tasks/main.yml    | 58 +++++++++++
 .../targets/hcloud_image_facts/tasks/main.yml | 57 -----------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../targets/hcloud_image_info/tasks/main.yml  | 62 ++++++++++++
 .../hcloud_location_facts/tasks/main.yml      | 52 ----------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../hcloud_location_info/tasks/main.yml       | 57 +++++++++++
 .../hcloud_server_facts/tasks/main.yml        | 90 -----------------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../targets/hcloud_server_info/tasks/main.yml | 97 +++++++++++++++++++
 .../hcloud_server_type_facts/tasks/main.yml   | 34 -------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../hcloud_server_type_info/tasks/main.yml    | 38 ++++++++
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../meta/main.yml                             |  0
 .../tasks/main.yml                            | 36 ++++---
 .../hcloud_volume_facts/tasks/main.yml        | 88 -----------------
 .../aliases                                   |  0
 .../defaults/main.yml                         |  0
 .../targets/hcloud_volume_info/tasks/main.yml | 95 ++++++++++++++++++
 test/sanity/ignore.txt                        |  1 -
 51 files changed, 815 insertions(+), 618 deletions(-)
 create mode 100644 changelogs/fragments/60516-hcloud-facts-info.yml
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_datacenter_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_floating_ip_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_image_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_location_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_server_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_server_type_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_ssh_key_facts.py
 create mode 120000 lib/ansible/modules/cloud/hcloud/_hcloud_volume_facts.py
 rename lib/ansible/modules/cloud/hcloud/{hcloud_datacenter_facts.py => hcloud_datacenter_info.py} (56%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_floating_ip_facts.py => hcloud_floating_ip_info.py} (68%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_image_facts.py => hcloud_image_info.py} (70%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_location_facts.py => hcloud_location_info.py} (64%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_server_facts.py => hcloud_server_info.py} (73%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_server_type_facts.py => hcloud_server_type_info.py} (67%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_ssh_key_facts.py => hcloud_ssh_key_info.py} (68%)
 rename lib/ansible/modules/cloud/hcloud/{hcloud_volume_facts.py => hcloud_volume_info.py} (70%)
 delete mode 100644 test/integration/targets/hcloud_datacenter_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_datacenter_facts => hcloud_datacenter_info}/aliases (100%)
 rename test/integration/targets/{hcloud_datacenter_facts => hcloud_datacenter_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_datacenter_info/tasks/main.yml
 delete mode 100644 test/integration/targets/hcloud_floating_ip_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_floating_ip_facts => hcloud_floating_ip_info}/aliases (100%)
 rename test/integration/targets/{hcloud_floating_ip_facts => hcloud_floating_ip_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_floating_ip_info/tasks/main.yml
 delete mode 100644 test/integration/targets/hcloud_image_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_image_facts => hcloud_image_info}/aliases (100%)
 rename test/integration/targets/{hcloud_image_facts => hcloud_image_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_image_info/tasks/main.yml
 delete mode 100644 test/integration/targets/hcloud_location_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_location_facts => hcloud_location_info}/aliases (100%)
 rename test/integration/targets/{hcloud_location_facts => hcloud_location_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_location_info/tasks/main.yml
 delete mode 100644 test/integration/targets/hcloud_server_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_server_facts => hcloud_server_info}/aliases (100%)
 rename test/integration/targets/{hcloud_server_facts => hcloud_server_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_server_info/tasks/main.yml
 delete mode 100644 test/integration/targets/hcloud_server_type_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_server_type_facts => hcloud_server_type_info}/aliases (100%)
 rename test/integration/targets/{hcloud_server_type_facts => hcloud_server_type_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_server_type_info/tasks/main.yml
 rename test/integration/targets/{hcloud_ssh_key_facts => hcloud_ssh_key_info}/aliases (100%)
 rename test/integration/targets/{hcloud_ssh_key_facts => hcloud_ssh_key_info}/defaults/main.yml (100%)
 rename test/integration/targets/{hcloud_ssh_key_facts => hcloud_ssh_key_info}/meta/main.yml (100%)
 rename test/integration/targets/{hcloud_ssh_key_facts => hcloud_ssh_key_info}/tasks/main.yml (52%)
 delete mode 100644 test/integration/targets/hcloud_volume_facts/tasks/main.yml
 rename test/integration/targets/{hcloud_volume_facts => hcloud_volume_info}/aliases (100%)
 rename test/integration/targets/{hcloud_volume_facts => hcloud_volume_info}/defaults/main.yml (100%)
 create mode 100644 test/integration/targets/hcloud_volume_info/tasks/main.yml

diff --git a/changelogs/fragments/60516-hcloud-facts-info.yml b/changelogs/fragments/60516-hcloud-facts-info.yml
new file mode 100644
index 00000000000..b89c6758608
--- /dev/null
+++ b/changelogs/fragments/60516-hcloud-facts-info.yml
@@ -0,0 +1,17 @@
+minor_changes:
+  - The ``hcloud_datacenter_facts`` module has been renamed to ``hcloud_datacenter_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_floating_ip_facts`` module has been renamed to ``hcloud_floating_ip_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_image_facts`` module has been renamed to ``hcloud_image_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_location_facts`` module has been renamed to ``hcloud_location_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_server_facts`` module has been renamed to ``hcloud_server_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_server_type_facts`` module has been renamed to ``hcloud_server_type_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_ssh_key_facts`` module has been renamed to ``hcloud_ssh_key_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
+  - The ``hcloud_volume_facts`` module has been renamed to ``hcloud_volume_info``.
+    When called with the new name, the module no longer returns ``ansible_facts``.
\ No newline at end of file
diff --git a/docs/docsite/rst/porting_guides/porting_guide_2.9.rst b/docs/docsite/rst/porting_guides/porting_guide_2.9.rst
index aedc902778d..6078a8200bb 100644
--- a/docs/docsite/rst/porting_guides/porting_guide_2.9.rst
+++ b/docs/docsite/rst/porting_guides/porting_guide_2.9.rst
@@ -246,6 +246,30 @@ be removed in Ansible 2.13. Please update update your playbooks accordingly.
 * The ``gluster_heal_facts`` module was renamed to :ref:`gluster_heal_info <gluster_heal_info_module>`.
   When called with the new name, the module no longer returns ``ansible_facts``.
   To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_datacenter_facts`` module was renamed to :ref:`hcloud_datacenter_info <hcloud_datacenter_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_floating_ip_facts`` module was renamed to :ref:`hcloud_floating_ip_info <hcloud_floating_ip_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_image_facts`` module was renamed to :ref:`hcloud_image_info <hcloud_image_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_location_facts`` module was renamed to :ref:`hcloud_location_info <hcloud_location_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_server_facts`` module was renamed to :ref:`hcloud_server_info <hcloud_server_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_server_type_facts`` module was renamed to :ref:`hcloud_server_type_info <hcloud_server_type_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_ssh_key_facts`` module was renamed to :ref:`hcloud_ssh_key_info <hcloud_ssh_key_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
+* The ``hcloud_volume_facts`` module was renamed to :ref:`hcloud_volume_info <hcloud_volume_info_module>`.
+  When called with the new name, the module no longer returns ``ansible_facts``.
+  To access return values, :ref:`register a variable <registered_variables>`.
 * The ``hpilo_facts`` module was renamed to :ref:`hpilo_info <hpilo_info_module>`.
   When called with the new name, the module no longer returns ``ansible_facts``.
   To access return values, :ref:`register a variable <registered_variables>`.
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_datacenter_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_datacenter_facts.py
new file mode 120000
index 00000000000..44473ed316c
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_datacenter_facts.py
@@ -0,0 +1 @@
+hcloud_datacenter_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_floating_ip_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_floating_ip_facts.py
new file mode 120000
index 00000000000..76db56c3604
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_floating_ip_facts.py
@@ -0,0 +1 @@
+hcloud_floating_ip_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_image_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_image_facts.py
new file mode 120000
index 00000000000..c673044bcc2
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_image_facts.py
@@ -0,0 +1 @@
+hcloud_image_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_location_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_location_facts.py
new file mode 120000
index 00000000000..adb06ecb098
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_location_facts.py
@@ -0,0 +1 @@
+hcloud_location_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_server_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_server_facts.py
new file mode 120000
index 00000000000..cc0effff1be
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_server_facts.py
@@ -0,0 +1 @@
+hcloud_server_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_server_type_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_server_type_facts.py
new file mode 120000
index 00000000000..5fe872d486b
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_server_type_facts.py
@@ -0,0 +1 @@
+hcloud_server_type_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_ssh_key_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_ssh_key_facts.py
new file mode 120000
index 00000000000..c4b0f78e70f
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_ssh_key_facts.py
@@ -0,0 +1 @@
+hcloud_ssh_key_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/_hcloud_volume_facts.py b/lib/ansible/modules/cloud/hcloud/_hcloud_volume_facts.py
new file mode 120000
index 00000000000..1dd0312c663
--- /dev/null
+++ b/lib/ansible/modules/cloud/hcloud/_hcloud_volume_facts.py
@@ -0,0 +1 @@
+hcloud_volume_info.py
\ No newline at end of file
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_datacenter_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_datacenter_info.py
similarity index 56%
rename from lib/ansible/modules/cloud/hcloud/hcloud_datacenter_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_datacenter_info.py
index 801922cfeeb..5e9f64370ce 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_datacenter_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_datacenter_info.py
@@ -16,13 +16,15 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_datacenter_facts
+module: hcloud_datacenter_info
 
-short_description: Gather facts about the Hetzner Cloud datacenters.
+short_description: Gather info about the Hetzner Cloud datacenters.
 
 version_added: "2.8"
 description:
-    - Gather facts about your Hetzner Cloud datacenters.
+    - Gather info about your Hetzner Cloud datacenters.
+    - This module was called C(hcloud_datacenter_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_datacenter_facts).
+      Note that the M(hcloud_datacenter_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_datacenter_info)!
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -40,32 +42,35 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud datacenter facts
-  local_action:
-    module: hcloud_datacenter_facts
-- name: Print the gathered facts
+- name: Gather hcloud datacenter info
+  hcloud_datacenter_info:
+  register: output
+- name: Print the gathered info
   debug:
-    var: ansible_facts.hcloud_datacenter_facts
+    var: output
 """
 
 RETURN = """
-hcloud_datacenter_facts:
-    description: The datacenter facts as list
+hcloud_datacenter_info:
+    description:
+      - The datacenter info as list
+      - This module was called C(hcloud_datacenter_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_datacenter_facts).
+        Note that the M(hcloud_datacenter_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_datacenter_info)!
     returned: always
     type: complex
     contains:
         id:
-            description: Numeric identifier of the location
+            description: Numeric identifier of the datacenter
             returned: always
             type: int
             sample: 1937415
         name:
-            description: Name of the location
+            description: Name of the datacenter
             returned: always
             type: str
             sample: fsn1-dc8
         description:
-            description: Detail description of the location
+            description: Detail description of the datacenter
             returned: always
             type: str
             sample: Falkenstein DC 8
@@ -91,15 +96,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudDatacenterFacts(Hcloud):
+class AnsibleHcloudDatacenterInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_datacenter_facts")
-        self.hcloud_datacenter_facts = None
+        Hcloud.__init__(self, module, "hcloud_datacenter_info")
+        self.hcloud_datacenter_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for datacenter in self.hcloud_datacenter_facts:
+        for datacenter in self.hcloud_datacenter_info:
             if datacenter is not None:
                 tmp.append({
                     "id": to_native(datacenter.id),
@@ -113,15 +118,15 @@ class AnsibleHcloudDatacenterFacts(Hcloud):
     def get_datacenters(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_datacenter_facts = [self.client.datacenters.get_by_id(
+                self.hcloud_datacenter_info = [self.client.datacenters.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_datacenter_facts = [self.client.datacenters.get_by_name(
+                self.hcloud_datacenter_info = [self.client.datacenters.get_by_name(
                     self.module.params.get("name")
                 )]
             else:
-                self.hcloud_datacenter_facts = self.client.datacenters.get_all()
+                self.hcloud_datacenter_info = self.client.datacenters.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -139,16 +144,26 @@ class AnsibleHcloudDatacenterFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudDatacenterFacts.define_module()
+    module = AnsibleHcloudDatacenterInfo.define_module()
 
-    hcloud = AnsibleHcloudDatacenterFacts(module)
+    is_old_facts = module._name == 'hcloud_datacenter_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_datacenter_facts' module has been renamed to 'hcloud_datacenter_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+    hcloud = AnsibleHcloudDatacenterInfo(module)
 
     hcloud.get_datacenters()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_datacenter_facts': result['hcloud_datacenter_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_datacenter_facts': result['hcloud_datacenter_info']
+        }
+        module.exit_json(ansible_facts=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_datacenter_info': result['hcloud_datacenter_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_floating_ip_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_floating_ip_info.py
similarity index 68%
rename from lib/ansible/modules/cloud/hcloud/hcloud_floating_ip_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_floating_ip_info.py
index 52b1ebc992a..dcb1464d3bc 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_floating_ip_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_floating_ip_info.py
@@ -16,13 +16,15 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_floating_ip_facts
+module: hcloud_floating_ip_info
 
-short_description: Gather facts about the Hetzner Cloud Floating IPs.
+short_description: Gather infos about the Hetzner Cloud Floating IPs.
 
 version_added: "2.8"
 description:
     - Gather facts about your Hetzner Cloud Floating IPs.
+    - This module was called C(hcloud_floating_ip_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_floating_ip_facts).
+      Note that the M(hcloud_floating_ip_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_floating_ip_info)!
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -40,17 +42,17 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud Floating ip facts
-  local_action:
-    module: hcloud_floating_ip_facts
-- name: Print the gathered facts
+- name: Gather hcloud Floating ip infos
+  hcloud_floating_ip_info:
+  register: output
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_floating_ip_facts
+    var: output
 """
 
 RETURN = """
-hcloud_floating_ip_facts:
-    description: The Floating ip facts as list
+hcloud_floating_ip_info:
+    description: The Floating ip infos as list
     returned: always
     type: complex
     contains:
@@ -100,15 +102,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudFloatingIPFacts(Hcloud):
+class AnsibleHcloudFloatingIPInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_floating_ip_facts")
-        self.hcloud_floating_ip_facts = None
+        Hcloud.__init__(self, module, "hcloud_floating_ip_info")
+        self.hcloud_floating_ip_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for floating_ip in self.hcloud_floating_ip_facts:
+        for floating_ip in self.hcloud_floating_ip_info:
             if floating_ip is not None:
                 server_name = None
                 if floating_ip.server is not None:
@@ -128,14 +130,14 @@ class AnsibleHcloudFloatingIPFacts(Hcloud):
     def get_floating_ips(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_floating_ip_facts = [self.client.floating_ips.get_by_id(
+                self.hcloud_floating_ip_info = [self.client.floating_ips.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("label_selector") is not None:
-                self.hcloud_floating_ip_facts = self.client.floating_ips.get_all(
+                self.hcloud_floating_ip_info = self.client.floating_ips.get_all(
                     label_selector=self.module.params.get("label_selector"))
             else:
-                self.hcloud_floating_ip_facts = self.client.floating_ips.get_all()
+                self.hcloud_floating_ip_info = self.client.floating_ips.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -153,16 +155,27 @@ class AnsibleHcloudFloatingIPFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudFloatingIPFacts.define_module()
+    module = AnsibleHcloudFloatingIPInfo.define_module()
 
-    hcloud = AnsibleHcloudFloatingIPFacts(module)
+    is_old_facts = module._name == 'hcloud_floating_ip_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_floating_ip_facts' module has been renamed to 'hcloud_floating_ip_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudFloatingIPInfo(module)
 
     hcloud.get_floating_ips()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_floating_ip_facts': result['hcloud_floating_ip_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_floating_ip_facts': result['hcloud_floating_ip_info']
+        }
+        module.exit_json(ansible_facts=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_floating_ip_info': result['hcloud_floating_ip_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_image_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_image_info.py
similarity index 70%
rename from lib/ansible/modules/cloud/hcloud/hcloud_image_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_image_info.py
index ab94f890d33..fbbc3eb8127 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_image_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_image_info.py
@@ -16,14 +16,16 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_image_facts
+module: hcloud_image_info
 
-short_description: Gather facts about your Hetzner Cloud images.
+short_description: Gather infos about your Hetzner Cloud images.
 
 version_added: "2.8"
 
 description:
-    - Gather facts about your Hetzner Cloud images.
+    - Gather infos about your Hetzner Cloud images.
+    - This module was called C(hcloud_location_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_location_facts).
+      Note that the M(hcloud_image_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_image_info)!
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -46,22 +48,23 @@ options:
             - The label selector for the images you want to get.
         default: system
         choices: [ system, snapshot, backup ]
+        type: str
 extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud image facts
-  local_action:
-    module: hcloud_image_facts
+- name: Gather hcloud image infos
+  hcloud_image_info:
+  register: output
 
-- name: Print the gathered facts
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_image_facts
+    var: output
 """
 
 RETURN = """
-hcloud_image_facts:
-    description: The image facts as list
+hcloud_image_info:
+    description: The image infos as list
     returned: always
     type: complex
     contains:
@@ -116,15 +119,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudImageFacts(Hcloud):
+class AnsibleHcloudImageInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_image_facts")
-        self.hcloud_image_facts = None
+        Hcloud.__init__(self, module, "hcloud_image_info")
+        self.hcloud_image_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for image in self.hcloud_image_facts:
+        for image in self.hcloud_image_info:
             if image is not None:
                 tmp.append({
                     "id": to_native(image.id),
@@ -138,14 +141,14 @@ class AnsibleHcloudImageFacts(Hcloud):
                 })
         return tmp
 
-    def get_servers(self):
+    def get_images(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_image_facts = [self.client.images.get_by_id(
+                self.hcloud_image_info = [self.client.images.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_image_facts = [self.client.images.get_by_name(
+                self.hcloud_image_info = [self.client.images.get_by_name(
                     self.module.params.get("name")
                 )]
             else:
@@ -158,7 +161,7 @@ class AnsibleHcloudImageFacts(Hcloud):
                 if image_type:
                     params["type"] = image_type
 
-                self.hcloud_image_facts = self.client.images.get_all(**params)
+                self.hcloud_image_info = self.client.images.get_all(**params)
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -170,7 +173,7 @@ class AnsibleHcloudImageFacts(Hcloud):
                 id={"type": "int"},
                 name={"type": "str"},
                 label_selector={"type": "str"},
-                type={"choices": ["system", "snapshot", "backup"], "default": "system"},
+                type={"choices": ["system", "snapshot", "backup"], "default": "system", "type": "str"},
                 **Hcloud.base_module_arguments()
             ),
             supports_check_mode=True,
@@ -178,15 +181,27 @@ class AnsibleHcloudImageFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudImageFacts.define_module()
+    module = AnsibleHcloudImageInfo.define_module()
 
-    hcloud = AnsibleHcloudImageFacts(module)
-    hcloud.get_servers()
+    is_old_facts = module._name == 'hcloud_image_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_image_facts' module has been renamed to 'hcloud_image_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudImageInfo(module)
+    hcloud.get_images()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_image_facts': result['hcloud_image_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_imagen_facts': result['hcloud_image_info']
+        }
+        module.exit_json(ansible_s=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_image_info': result['hcloud_image_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_location_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_location_info.py
similarity index 64%
rename from lib/ansible/modules/cloud/hcloud/hcloud_location_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_location_info.py
index 43c2fae9c93..73e3f15117d 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_location_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_location_info.py
@@ -16,14 +16,16 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_location_facts
+module: hcloud_location_info
 
-short_description: Gather facts about your Hetzner Cloud locations.
+short_description: Gather infos about your Hetzner Cloud locations.
 
 version_added: "2.8"
 
 description:
-    - Gather facts about your Hetzner Cloud locations.
+    - Gather infos about your Hetzner Cloud locations.
+    - This module was called C(hcloud_location_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_location_facts).
+      Note that the M(hcloud_location_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_location_info)!
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -41,18 +43,18 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud location facts
-  local_action:
-    module: hcloud_location_facts
+- name: Gather hcloud location infos
+  hcloud_location_info:
+  register: output
 
-- name: Print the gathered facts
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_location_facts
+    var: output
 """
 
 RETURN = """
-hcloud_location_facts:
-    description: The location facts as list
+hcloud_location_info:
+    description: The location infos as list
     returned: always
     type: complex
     contains:
@@ -93,15 +95,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudLocationFacts(Hcloud):
+class AnsibleHcloudLocationInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_location_facts")
-        self.hcloud_location_facts = None
+        Hcloud.__init__(self, module, "hcloud_location_info")
+        self.hcloud_location_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for location in self.hcloud_location_facts:
+        for location in self.hcloud_location_info:
             if location is not None:
                 tmp.append({
                     "id": to_native(location.id),
@@ -115,15 +117,15 @@ class AnsibleHcloudLocationFacts(Hcloud):
     def get_locations(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_location_facts = [self.client.locations.get_by_id(
+                self.hcloud_location_info = [self.client.locations.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_location_facts = [self.client.locations.get_by_name(
+                self.hcloud_location_info = [self.client.locations.get_by_name(
                     self.module.params.get("name")
                 )]
             else:
-                self.hcloud_location_facts = self.client.locations.get_all()
+                self.hcloud_location_info = self.client.locations.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -141,15 +143,26 @@ class AnsibleHcloudLocationFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudLocationFacts.define_module()
+    module = AnsibleHcloudLocationInfo.define_module()
 
-    hcloud = AnsibleHcloudLocationFacts(module)
+    is_old_facts = module._name == 'hcloud_location_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_location_info' module has been renamed to 'hcloud_location_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudLocationInfo(module)
     hcloud.get_locations()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_location_facts': result['hcloud_location_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_location_facts': result['hcloud_location_info']
+        }
+        module.exit_json(ansible_s=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_location_info': result['hcloud_location_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_server_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_server_info.py
similarity index 73%
rename from lib/ansible/modules/cloud/hcloud/hcloud_server_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_server_info.py
index 7b7ce4bed03..0e10ea150cd 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_server_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_server_info.py
@@ -16,14 +16,16 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_server_facts
+module: hcloud_server_info
 
-short_description: Gather facts about your Hetzner Cloud servers.
+short_description: Gather infos about your Hetzner Cloud servers.
 
 version_added: "2.8"
 
 description:
-    - Gather facts about your Hetzner Cloud servers.
+    - Gather infos about your Hetzner Cloud servers.
+    - This module was called C(hcloud_server_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_server_facts).
+      Note that the M(hcloud_server_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_server_info)!
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -45,18 +47,18 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud server facts
-  local_action:
-    module: hcloud_server_facts
+- name: Gather hcloud server infos
+  hcloud_server_info:
+  register: output
 
-- name: Print the gathered facts
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_server_facts
+    var: output.hcloud_server_info
 """
 
 RETURN = """
-hcloud_server_facts:
-    description: The server facts as list
+hcloud_server_info:
+    description: The server infos as list
     returned: always
     type: complex
     contains:
@@ -126,15 +128,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudServerFacts(Hcloud):
+class AnsibleHcloudServerInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_server_facts")
-        self.hcloud_server_facts = None
+        Hcloud.__init__(self, module, "hcloud_server_info")
+        self.hcloud_server_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for server in self.hcloud_server_facts:
+        for server in self.hcloud_server_info:
             if server is not None:
                 tmp.append({
                     "id": to_native(server.id),
@@ -155,18 +157,18 @@ class AnsibleHcloudServerFacts(Hcloud):
     def get_servers(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_server_facts = [self.client.servers.get_by_id(
+                self.hcloud_server_info = [self.client.servers.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_server_facts = [self.client.servers.get_by_name(
+                self.hcloud_server_info = [self.client.servers.get_by_name(
                     self.module.params.get("name")
                 )]
             elif self.module.params.get("label_selector") is not None:
-                self.hcloud_server_facts = self.client.servers.get_all(
+                self.hcloud_server_info = self.client.servers.get_all(
                     label_selector=self.module.params.get("label_selector"))
             else:
-                self.hcloud_server_facts = self.client.servers.get_all()
+                self.hcloud_server_info = self.client.servers.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -185,15 +187,27 @@ class AnsibleHcloudServerFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudServerFacts.define_module()
+    module = AnsibleHcloudServerInfo.define_module()
 
-    hcloud = AnsibleHcloudServerFacts(module)
+    is_old_facts = module._name == 'hcloud_server_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_server_facts' module has been renamed to 'hcloud_server_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudServerInfo(module)
     hcloud.get_servers()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_server_facts': result['hcloud_server_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_server_facts': result['hcloud_server_info']
+        }
+        module.exit_json(ansible_facts=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_server_info': result['hcloud_server_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_server_type_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_server_type_info.py
similarity index 67%
rename from lib/ansible/modules/cloud/hcloud/hcloud_server_type_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_server_type_info.py
index b07f747efcc..88793260fdc 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_server_type_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_server_type_info.py
@@ -16,14 +16,16 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_server_type_facts
+module: hcloud_server_type_info
 
-short_description: Gather facts about the Hetzner Cloud server types.
+short_description: Gather infos about the Hetzner Cloud server types.
 
 version_added: "2.8"
 
 description:
-    - Gather facts about your Hetzner Cloud server types.
+    - Gather infos about your Hetzner Cloud server types.
+    - This module was called C(hcloud_server_type_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_server_type_facts).
+      Note that the M(hcloud_server_type_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_server_type_info)!
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -41,18 +43,18 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud server type facts
-  local_action:
-    module: hcloud_server_type_facts
+- name: Gather hcloud server type infos
+  hcloud_server_type_info:
+  register: output
 
-- name: Print the gathered facts
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_server_type_facts
+    var: output.hcloud_server_type_info
 """
 
 RETURN = """
-hcloud_server_type_facts:
-    description: The server type facts as list
+hcloud_server_type_info:
+    description: The server type infos as list
     returned: always
     type: complex
     contains:
@@ -108,15 +110,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudLocationFacts(Hcloud):
+class AnsibleHcloudServerTypeInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_server_type_facts")
-        self.hcloud_server_type_facts = None
+        Hcloud.__init__(self, module, "hcloud_server_type_info")
+        self.hcloud_server_type_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for server_type in self.hcloud_server_type_facts:
+        for server_type in self.hcloud_server_type_info:
             if server_type is not None:
                 tmp.append({
                     "id": to_native(server_type.id),
@@ -133,15 +135,15 @@ class AnsibleHcloudLocationFacts(Hcloud):
     def get_server_types(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_server_type_facts = [self.client.server_types.get_by_id(
+                self.hcloud_server_type_info = [self.client.server_types.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_server_type_facts = [self.client.server_types.get_by_name(
+                self.hcloud_server_type_info = [self.client.server_types.get_by_name(
                     self.module.params.get("name")
                 )]
             else:
-                self.hcloud_server_type_facts = self.client.server_types.get_all()
+                self.hcloud_server_type_info = self.client.server_types.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -159,15 +161,26 @@ class AnsibleHcloudLocationFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudLocationFacts.define_module()
+    module = AnsibleHcloudServerTypeInfo.define_module()
 
-    hcloud = AnsibleHcloudLocationFacts(module)
+    is_old_facts = module._name == 'hcloud_server_type_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_server_type_info' module has been renamed to 'hcloud_server_type_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudServerTypeInfo(module)
     hcloud.get_server_types()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_server_type_facts': result['hcloud_server_type_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_server_type_info': result['hcloud_server_type_info']
+        }
+        module.exit_json(ansible_facts=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_server_type_info': result['hcloud_server_type_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_ssh_key_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_ssh_key_info.py
similarity index 68%
rename from lib/ansible/modules/cloud/hcloud/hcloud_ssh_key_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_ssh_key_info.py
index 158e08ef775..078b4a1ccdf 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_ssh_key_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_ssh_key_info.py
@@ -16,11 +16,13 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_ssh_key_facts
-short_description: Gather facts about your Hetzner Cloud ssh_keys.
+module: hcloud_ssh_key_info
+short_description: Gather infos about your Hetzner Cloud ssh_keys.
 version_added: "2.8"
 description:
     - Gather facts about your Hetzner Cloud ssh_keys.
+    - This module was called C(hcloud_ssh_key_facts) before Ansible 2.9, returning C(ansible_facts) and C(hcloud_ssh_key_facts).
+      Note that the M(hcloud_ssh_key_info) module no longer returns C(ansible_facts) and the value was renamed to C(hcloud_ssh_key_info)!
 author:
     - Christopher Schmitt (@cschmitt-hcloud)
 options:
@@ -44,16 +46,16 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud sshkey facts
-  local_action:
-    module: hcloud_ssh_key_facts
-- name: Print the gathered facts
+- name: Gather hcloud sshkey infos
+  hcloud_ssh_key_info:
+  register: output
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_ssh_key_facts
+    var: output.hcloud_ssh_key_info
 """
 
 RETURN = """
-hcloud_ssh_key_facts:
+hcloud_ssh_key_info:
     description: The ssh key instances
     returned: Always
     type: complex
@@ -93,15 +95,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudSSHKeyFacts(Hcloud):
+class AnsibleHcloudSSHKeyInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_ssh_key_facts")
-        self.hcloud_ssh_key_facts = None
+        Hcloud.__init__(self, module, "hcloud_ssh_key_info")
+        self.hcloud_ssh_key_info = None
 
     def _prepare_result(self):
         ssh_keys = []
 
-        for ssh_key in self.hcloud_ssh_key_facts:
+        for ssh_key in self.hcloud_ssh_key_info:
             if ssh_key:
                 ssh_keys.append({
                     "id": to_native(ssh_key.id),
@@ -115,22 +117,22 @@ class AnsibleHcloudSSHKeyFacts(Hcloud):
     def get_ssh_keys(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_ssh_key_facts = [self.client.ssh_keys.get_by_id(
+                self.hcloud_ssh_key_info = [self.client.ssh_keys.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_ssh_key_facts = [self.client.ssh_keys.get_by_name(
+                self.hcloud_ssh_key_info = [self.client.ssh_keys.get_by_name(
                     self.module.params.get("name")
                 )]
             elif self.module.params.get("fingerprint") is not None:
-                self.hcloud_ssh_key_facts = [self.client.ssh_keys.get_by_fingerprint(
+                self.hcloud_ssh_key_info = [self.client.ssh_keys.get_by_fingerprint(
                     self.module.params.get("fingerprint")
                 )]
             elif self.module.params.get("label_selector") is not None:
-                self.hcloud_ssh_key_facts = self.client.ssh_keys.get_all(
+                self.hcloud_ssh_key_info = self.client.ssh_keys.get_all(
                     label_selector=self.module.params.get("label_selector"))
             else:
-                self.hcloud_ssh_key_facts = self.client.ssh_keys.get_all()
+                self.hcloud_ssh_key_info = self.client.ssh_keys.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -150,15 +152,27 @@ class AnsibleHcloudSSHKeyFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudSSHKeyFacts.define_module()
+    module = AnsibleHcloudSSHKeyInfo.define_module()
 
-    hcloud = AnsibleHcloudSSHKeyFacts(module)
+    is_old_facts = module._name == 'hcloud_ssh_key_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_ssh_key_facts' module has been renamed to 'hcloud_ssh_key_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudSSHKeyInfo(module)
     hcloud.get_ssh_keys()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_ssh_key_facts': result['hcloud_ssh_key_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_ssh_key_facts': result['hcloud_ssh_key_info']
+        }
+        module.exit_json(ansible_facts=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_ssh_key_info': result['hcloud_ssh_key_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/lib/ansible/modules/cloud/hcloud/hcloud_volume_facts.py b/lib/ansible/modules/cloud/hcloud/hcloud_volume_info.py
similarity index 70%
rename from lib/ansible/modules/cloud/hcloud/hcloud_volume_facts.py
rename to lib/ansible/modules/cloud/hcloud/hcloud_volume_info.py
index 80559ab95c5..5dcc6b556ab 100644
--- a/lib/ansible/modules/cloud/hcloud/hcloud_volume_facts.py
+++ b/lib/ansible/modules/cloud/hcloud/hcloud_volume_info.py
@@ -16,13 +16,13 @@ ANSIBLE_METADATA = {
 
 DOCUMENTATION = """
 ---
-module: hcloud_volume_facts
+module: hcloud_volume_info
 
-short_description: Gather facts about your Hetzner Cloud volumes.
+short_description: Gather infos about your Hetzner Cloud volumes.
 
 version_added: "2.8"
 description:
-    - Gather facts about your Hetzner Cloud volumes.
+    - Gather infos about your Hetzner Cloud volumes.
 
 author:
     - Lukas Kaemmerling (@LKaemmerling)
@@ -44,17 +44,17 @@ extends_documentation_fragment: hcloud
 """
 
 EXAMPLES = """
-- name: Gather hcloud volume facts
-  local_action:
-    module: hcloud_volume_facts
-- name: Print the gathered facts
+- name: Gather hcloud volume infos
+  hcloud_volume_info:
+  register: output
+- name: Print the gathered infos
   debug:
-    var: ansible_facts.hcloud_volume_facts
+    var: output.hcloud_volume_info
 """
 
 RETURN = """
-hcloud_volume_facts:
-    description: The volume facts as list
+hcloud_volume_info:
+    description: The volume infos as list
     returned: always
     type: complex
     contains:
@@ -99,15 +99,15 @@ except ImportError:
     pass
 
 
-class AnsibleHcloudVolumeFacts(Hcloud):
+class AnsibleHcloudVolumeInfo(Hcloud):
     def __init__(self, module):
-        Hcloud.__init__(self, module, "hcloud_volume_facts")
-        self.hcloud_volume_facts = None
+        Hcloud.__init__(self, module, "hcloud_volume_info")
+        self.hcloud_volume_info = None
 
     def _prepare_result(self):
         tmp = []
 
-        for volume in self.hcloud_volume_facts:
+        for volume in self.hcloud_volume_info:
             if volume is not None:
                 server_name = None
                 if volume.server is not None:
@@ -126,18 +126,18 @@ class AnsibleHcloudVolumeFacts(Hcloud):
     def get_volumes(self):
         try:
             if self.module.params.get("id") is not None:
-                self.hcloud_volume_facts = [self.client.volumes.get_by_id(
+                self.hcloud_volume_info = [self.client.volumes.get_by_id(
                     self.module.params.get("id")
                 )]
             elif self.module.params.get("name") is not None:
-                self.hcloud_volume_facts = [self.client.volumes.get_by_name(
+                self.hcloud_volume_info = [self.client.volumes.get_by_name(
                     self.module.params.get("name")
                 )]
             elif self.module.params.get("label_selector") is not None:
-                self.hcloud_volume_facts = self.client.volumes.get_all(
+                self.hcloud_volume_info = self.client.volumes.get_all(
                     label_selector=self.module.params.get("label_selector"))
             else:
-                self.hcloud_volume_facts = self.client.volumes.get_all()
+                self.hcloud_volume_info = self.client.volumes.get_all()
 
         except APIException as e:
             self.module.fail_json(msg=e.message)
@@ -156,16 +156,27 @@ class AnsibleHcloudVolumeFacts(Hcloud):
 
 
 def main():
-    module = AnsibleHcloudVolumeFacts.define_module()
+    module = AnsibleHcloudVolumeInfo.define_module()
 
-    hcloud = AnsibleHcloudVolumeFacts(module)
+    is_old_facts = module._name == 'hcloud_volume_facts'
+    if is_old_facts:
+        module.deprecate("The 'hcloud_volume_facts' module has been renamed to 'hcloud_volume_info', "
+                         "and the renamed one no longer returns ansible_facts", version='2.13')
+
+    hcloud = AnsibleHcloudVolumeInfo(module)
 
     hcloud.get_volumes()
     result = hcloud.get_result()
-    ansible_facts = {
-        'hcloud_volume_facts': result['hcloud_volume_facts']
-    }
-    module.exit_json(ansible_facts=ansible_facts)
+    if is_old_facts:
+        ansible_info = {
+            'hcloud_volume_facts': result['hcloud_volume_info']
+        }
+        module.exit_json(ansible_facts=ansible_info)
+    else:
+        ansible_info = {
+            'hcloud_volume_info': result['hcloud_volume_info']
+        }
+        module.exit_json(**ansible_info)
 
 
 if __name__ == "__main__":
diff --git a/test/integration/targets/hcloud_datacenter_facts/tasks/main.yml b/test/integration/targets/hcloud_datacenter_facts/tasks/main.yml
deleted file mode 100644
index 09723be49c0..00000000000
--- a/test/integration/targets/hcloud_datacenter_facts/tasks/main.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather hcloud datacenter facts
-  hcloud_datacenter_facts:
-
-- name: verify test gather hcloud datacenter facts
-  assert:
-    that:
-      - ansible_facts.hcloud_datacenter_facts| list | count == 3
-
-- name: test gather hcloud datacenter facts in check mode
-  hcloud_datacenter_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud datacenter facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_datacenter_facts| list | count == 3
-
-
-- name: test gather hcloud datacenter facts with correct name
-  hcloud_datacenter_facts:
-    name: "{{hcloud_datacenter_name}}"
-- name: verify test gather hcloud datacenter with correct name
-  assert:
-    that:
-      - ansible_facts.hcloud_datacenter_facts|selectattr('name','equalto','{{ hcloud_datacenter_name }}') |selectattr('location','equalto','{{ hcloud_location_name }}') | list | count == 1
-
-- name: test gather hcloud datacenter facts with correct id
-  hcloud_datacenter_facts:
-    id: "{{hcloud_datacenter_id}}"
-- name: verify test gather hcloud datacenter with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_datacenter_facts|selectattr('name','equalto','{{ hcloud_datacenter_name }}') | list | count == 1
diff --git a/test/integration/targets/hcloud_datacenter_facts/aliases b/test/integration/targets/hcloud_datacenter_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_datacenter_facts/aliases
rename to test/integration/targets/hcloud_datacenter_info/aliases
diff --git a/test/integration/targets/hcloud_datacenter_facts/defaults/main.yml b/test/integration/targets/hcloud_datacenter_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_datacenter_facts/defaults/main.yml
rename to test/integration/targets/hcloud_datacenter_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_datacenter_info/tasks/main.yml b/test/integration/targets/hcloud_datacenter_info/tasks/main.yml
new file mode 100644
index 00000000000..7f49b040c58
--- /dev/null
+++ b/test/integration/targets/hcloud_datacenter_info/tasks/main.yml
@@ -0,0 +1,40 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test gather hcloud datacenter infos
+  hcloud_datacenter_info:
+  register: hcloud_datacenters
+
+- name: verify test gather hcloud datacenter infos
+  assert:
+    that:
+      - hcloud_datacenters.hcloud_datacenter_info| list | count == 3
+
+- name: test gather hcloud datacenter infos in check mode
+  hcloud_datacenter_info:
+  register: hcloud_datacenters
+  check_mode: yes
+
+- name: verify test gather hcloud datacenter infos in check mode
+  assert:
+    that:
+      - hcloud_datacenters.hcloud_datacenter_info| list | count == 3
+
+
+- name: test gather hcloud datacenter infos with correct name
+  hcloud_datacenter_info:
+    name: "{{hcloud_datacenter_name}}"
+  register: hcloud_datacenter
+- name: verify test gather hcloud datacenter with correct name
+  assert:
+    that:
+      - hcloud_datacenter.hcloud_datacenter_info|selectattr('name','equalto','{{ hcloud_datacenter_name }}') |selectattr('location','equalto','{{ hcloud_location_name }}') | list | count == 1
+
+- name: test gather hcloud datacenter infos with correct id
+  hcloud_datacenter_info:
+    id: "{{hcloud_datacenter_id}}"
+  register: hcloud_datacenter
+- name: verify test gather hcloud datacenter with correct id
+  assert:
+    that:
+      - hcloud_datacenter.hcloud_datacenter_info|selectattr('name','equalto','{{ hcloud_datacenter_name }}') | list | count == 1
diff --git a/test/integration/targets/hcloud_floating_ip_facts/tasks/main.yml b/test/integration/targets/hcloud_floating_ip_facts/tasks/main.yml
deleted file mode 100644
index a29cc10ff09..00000000000
--- a/test/integration/targets/hcloud_floating_ip_facts/tasks/main.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather hcloud floating ip facts
-  hcloud_floating_ip_facts:
-- name: verify test gather hcloud floating ip facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_floating_ip_facts| list | count == 1
-
-- name: test gather hcloud floating ip facts in check mode
-  hcloud_floating_ip_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud floating ip facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_floating_ip_facts| list | count == 1
-
-
-- name: test gather hcloud floating ip facts with correct label selector
-  hcloud_floating_ip_facts:
-    label_selector: "key=value"
-- name: verify test gather hcloud floating ip with correct label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_floating_ip_facts|selectattr('description','equalto','{{ hcloud_test_floating_ip_name }}') | list | count == 1
-
-- name: test gather hcloud floating ip facts with wrong label selector
-  hcloud_floating_ip_facts:
-    label_selector: "key!=value"
-- name: verify test gather hcloud floating ip with wrong label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_floating_ip_facts | list | count == 0
-
-- name: test gather hcloud floating ip facts with correct id
-  hcloud_floating_ip_facts:
-    id: "{{hcloud_test_floating_ip_id}}"
-- name: verify test gather hcloud floating ip with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_floating_ip_facts|selectattr('description','equalto','{{ hcloud_test_floating_ip_name }}') | list | count == 1
-
-- name: test gather hcloud floating ip facts with wrong id
-  hcloud_floating_ip_facts:
-      id: "{{hcloud_test_floating_ip_id}}1"
-  register: result
-  ignore_errors: yes
-- name: verify test gather hcloud floating ip with wrong id
-  assert:
-    that:
-      - result is failed
diff --git a/test/integration/targets/hcloud_floating_ip_facts/aliases b/test/integration/targets/hcloud_floating_ip_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_floating_ip_facts/aliases
rename to test/integration/targets/hcloud_floating_ip_info/aliases
diff --git a/test/integration/targets/hcloud_floating_ip_facts/defaults/main.yml b/test/integration/targets/hcloud_floating_ip_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_floating_ip_facts/defaults/main.yml
rename to test/integration/targets/hcloud_floating_ip_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_floating_ip_info/tasks/main.yml b/test/integration/targets/hcloud_floating_ip_info/tasks/main.yml
new file mode 100644
index 00000000000..4b1ba555c56
--- /dev/null
+++ b/test/integration/targets/hcloud_floating_ip_info/tasks/main.yml
@@ -0,0 +1,58 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test gather hcloud floating ip infos
+  hcloud_floating_ip_info:
+  register: hcloud_floating_ips
+- name: verify test gather hcloud floating ip infos in check mode
+  assert:
+    that:
+      - hcloud_floating_ips.hcloud_floating_ip_info| list | count == 1
+
+- name: test gather hcloud floating ip infos in check mode
+  hcloud_floating_ip_info:
+  check_mode: yes
+  register: hcloud_floating_ips
+
+- name: verify test gather hcloud floating ip infos in check mode
+  assert:
+    that:
+      - hcloud_floating_ips.hcloud_floating_ip_info| list | count == 1
+
+
+- name: test gather hcloud floating ip infos with correct label selector
+  hcloud_floating_ip_info:
+    label_selector: "key=value"
+  register: hcloud_floating_ips
+- name: verify test gather hcloud floating ip with correct label selector
+  assert:
+    that:
+      - hcloud_floating_ips.hcloud_floating_ip_info|selectattr('description','equalto','{{ hcloud_test_floating_ip_name }}') | list | count == 1
+
+- name: test gather hcloud floating ip infos with wrong label selector
+  hcloud_floating_ip_info:
+    label_selector: "key!=value"
+  register: hcloud_floating_ips
+- name: verify test gather hcloud floating ip with wrong label selector
+  assert:
+    that:
+      - hcloud_floating_ips.hcloud_floating_ip_info | list | count == 0
+
+- name: test gather hcloud floating ip infos with correct id
+  hcloud_floating_ip_info:
+    id: "{{hcloud_test_floating_ip_id}}"
+  register: hcloud_floating_ips
+- name: verify test gather hcloud floating ip with correct id
+  assert:
+    that:
+      - hcloud_floating_ips.hcloud_floating_ip_info|selectattr('description','equalto','{{ hcloud_test_floating_ip_name }}') | list | count == 1
+
+- name: test gather hcloud floating ip infos with wrong id
+  hcloud_floating_ip_info:
+      id: "{{hcloud_test_floating_ip_id}}1"
+  register: result
+  ignore_errors: yes
+- name: verify test gather hcloud floating ip with wrong id
+  assert:
+    that:
+      - result is failed
diff --git a/test/integration/targets/hcloud_image_facts/tasks/main.yml b/test/integration/targets/hcloud_image_facts/tasks/main.yml
deleted file mode 100644
index b44b08a61fa..00000000000
--- a/test/integration/targets/hcloud_image_facts/tasks/main.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather hcloud image facts with type system
-  hcloud_image_facts:
-- name: verify test gather hcloud image facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_image_facts| list | count > 2
-
-- name: test gather hcloud image facts in check mode
-  hcloud_image_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud image facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_image_facts| list | count > 2
-
-
-- name: test gather hcloud image facts with correct label selector
-  hcloud_image_facts:
-    label_selector: "key=value"
-    type: snapshot
-- name: verify test gather hcloud image with correct label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_image_facts|selectattr('description','equalto','{{ hcloud_test_image_name }}') | list | count == 1
-
-- name: test gather hcloud image facts with wrong label selector
-  hcloud_image_facts:
-    label_selector: "key!=value"
-    type: snapshot
-- name: verify test gather hcloud image with wrong label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_image_facts | list | count == 0
-
-- name: test gather hcloud image facts with correct id
-  hcloud_image_facts:
-    id: "{{hcloud_test_image_id}}"
-    type: snapshot
-- name: verify test gather hcloud image with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_image_facts|selectattr('description','equalto','{{ hcloud_test_image_name }}') | list | count == 1
-
-- name: test gather hcloud image facts with wrong id
-  hcloud_image_facts:
-      id: "{{hcloud_test_image_id}}1"
-      type: snapshot
-  ignore_errors: yes
-  register: result
-- name: verify test gather hcloud image with wrong id
-  assert:
-    that:
-      - result is failed
diff --git a/test/integration/targets/hcloud_image_facts/aliases b/test/integration/targets/hcloud_image_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_image_facts/aliases
rename to test/integration/targets/hcloud_image_info/aliases
diff --git a/test/integration/targets/hcloud_image_facts/defaults/main.yml b/test/integration/targets/hcloud_image_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_image_facts/defaults/main.yml
rename to test/integration/targets/hcloud_image_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_image_info/tasks/main.yml b/test/integration/targets/hcloud_image_info/tasks/main.yml
new file mode 100644
index 00000000000..503d5b78704
--- /dev/null
+++ b/test/integration/targets/hcloud_image_info/tasks/main.yml
@@ -0,0 +1,62 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test gather hcloud image infos with type system
+  hcloud_image_info:
+  register: hcloud_images
+- name: verify test gather hcloud image infos in check mode
+  assert:
+    that:
+      - hcloud_images.hcloud_image_info| list | count > 2
+
+- name: test gather hcloud image infos in check mode
+  hcloud_image_info:
+  check_mode: yes
+  register: hcloud_images
+
+- name: verify test gather hcloud image infos in check mode
+  assert:
+    that:
+      - hcloud_images.hcloud_image_info| list | count > 2
+
+
+- name: test gather hcloud image infos with correct label selector
+  hcloud_image_info:
+    label_selector: "key=value"
+    type: snapshot
+  register: hcloud_images
+- name: verify test gather hcloud image with correct label selector
+  assert:
+    that:
+      - hcloud_images.hcloud_image_info|selectattr('description','equalto','{{ hcloud_test_image_name }}') | list | count == 1
+
+- name: test gather hcloud image infos with wrong label selector
+  hcloud_image_info:
+    label_selector: "key!=value"
+    type: snapshot
+  register: hcloud_images
+- name: verify test gather hcloud image with wrong label selector
+  assert:
+    that:
+      - hcloud_images.hcloud_image_info | list | count == 0
+
+- name: test gather hcloud image infos with correct id
+  hcloud_image_info:
+    id: "{{hcloud_test_image_id}}"
+    type: snapshot
+  register: hcloud_images
+- name: verify test gather hcloud image with correct id
+  assert:
+    that:
+      - hcloud_images.hcloud_image_info|selectattr('description','equalto','{{ hcloud_test_image_name }}') | list | count == 1
+
+- name: test gather hcloud image infos with wrong id
+  hcloud_image_info:
+      id: "{{hcloud_test_image_id}}1"
+      type: snapshot
+  ignore_errors: yes
+  register: result
+- name: verify test gather hcloud image with wrong id
+  assert:
+    that:
+      - result is failed
diff --git a/test/integration/targets/hcloud_location_facts/tasks/main.yml b/test/integration/targets/hcloud_location_facts/tasks/main.yml
deleted file mode 100644
index 0a36678a4df..00000000000
--- a/test/integration/targets/hcloud_location_facts/tasks/main.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather hcloud location facts
-  hcloud_location_facts:
-
-- name: verify test gather hcloud location facts
-  assert:
-    that:
-      - ansible_facts.hcloud_location_facts| list | count == 3
-
-- name: test gather hcloud location facts in check mode
-  hcloud_location_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud location facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_location_facts| list | count == 3
-
-
-- name: test gather hcloud location facts with correct name
-  hcloud_location_facts:
-    name: "{{hcloud_location_name}}"
-- name: verify test gather hcloud location with correct name
-  assert:
-    that:
-      - ansible_facts.hcloud_location_facts|selectattr('name','equalto','{{ hcloud_location_name }}') | list | count == 1
-
-- name: test gather hcloud location facts with wrong name
-  hcloud_location_facts:
-      name: "{{hcloud_location_name}}1"
-- name: verify test gather hcloud location with wrong name
-  assert:
-    that:
-      - ansible_facts.hcloud_location_facts | list | count == 0
-
-- name: test gather hcloud location facts with correct id
-  hcloud_location_facts:
-    id: "{{hcloud_location_id}}"
-- name: verify test gather hcloud location with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_location_facts|selectattr('name','equalto','{{ hcloud_location_name }}') | list | count == 1
-
-- name: test gather hcloud location facts with wrong id
-  hcloud_location_facts:
-      name: "4711"
-- name: verify test gather hcloud location with wrong id
-  assert:
-    that:
-      - ansible_facts.hcloud_location_facts | list | count == 0
diff --git a/test/integration/targets/hcloud_location_facts/aliases b/test/integration/targets/hcloud_location_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_location_facts/aliases
rename to test/integration/targets/hcloud_location_info/aliases
diff --git a/test/integration/targets/hcloud_location_facts/defaults/main.yml b/test/integration/targets/hcloud_location_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_location_facts/defaults/main.yml
rename to test/integration/targets/hcloud_location_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_location_info/tasks/main.yml b/test/integration/targets/hcloud_location_info/tasks/main.yml
new file mode 100644
index 00000000000..e0ae5f176bb
--- /dev/null
+++ b/test/integration/targets/hcloud_location_info/tasks/main.yml
@@ -0,0 +1,57 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test gather hcloud location infos
+  hcloud_location_info:
+  register: hcloud_location
+
+- name: verify test gather hcloud location infos
+  assert:
+    that:
+      - hcloud_location.hcloud_location_info | list | count == 3
+
+- name: test gather hcloud location infos in check mode
+  hcloud_location_info:
+  check_mode: yes
+  register: hcloud_location
+
+- name: verify test gather hcloud location infos in check mode
+  assert:
+    that:
+      - hcloud_location.hcloud_location_info | list | count == 3
+
+- name: test gather hcloud location infos with correct name
+  hcloud_location_info:
+    name: "{{hcloud_location_name}}"
+  register: hcloud_location
+- name: verify test gather hcloud location with correct name
+  assert:
+    that:
+      - hcloud_location.hcloud_location_info|selectattr('name','equalto','{{ hcloud_location_name }}') | list | count == 1
+
+- name: test gather hcloud location infos with wrong name
+  hcloud_location_info:
+      name: "{{hcloud_location_name}}1"
+  register: hcloud_location
+- name: verify test gather hcloud location with wrong name
+  assert:
+    that:
+      - hcloud_location.hcloud_location_info | list | count == 0
+
+- name: test gather hcloud location infos with correct id
+  hcloud_location_info:
+    id: "{{hcloud_location_id}}"
+  register: hcloud_location
+- name: verify test gather hcloud location with correct id
+  assert:
+    that:
+      - hcloud_location.hcloud_location_info|selectattr('name','equalto','{{ hcloud_location_name }}') | list | count == 1
+
+- name: test gather hcloud location infos with wrong id
+  hcloud_location_info:
+      name: "4711"
+  register: hcloud_location
+- name: verify test gather hcloud location with wrong id
+  assert:
+    that:
+      - hcloud_location.hcloud_location_info | list | count == 0
diff --git a/test/integration/targets/hcloud_server_facts/tasks/main.yml b/test/integration/targets/hcloud_server_facts/tasks/main.yml
deleted file mode 100644
index d67eaef2bc1..00000000000
--- a/test/integration/targets/hcloud_server_facts/tasks/main.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup ensure server is absent
-  hcloud_server:
-    name: "{{ hcloud_server_name }}"
-    state: absent
-  register: result
-
-- name: create server
-  hcloud_server:
-    name: "{{ hcloud_server_name }}"
-    server_type: cx11
-    image: ubuntu-18.04
-    state: started
-    labels:
-      key: value
-  register: main_server
-- name: verify create server
-  assert:
-    that:
-      - main_server is changed
-      - main_server.hcloud_server.name == "{{ hcloud_server_name }}"
-      - main_server.hcloud_server.server_type == "cx11"
-      - main_server.hcloud_server.status == "running"
-      - main_server.root_password != ""
-
-
-- name: test gather hcloud server facts in check mode
-  hcloud_server_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud server facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
-
-
-- name: test gather hcloud server facts with correct label selector
-  hcloud_server_facts:
-    label_selector: "key=value"
-- name: verify test gather hcloud server with correct label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
-
-- name: test gather hcloud server facts with wrong label selector
-  hcloud_server_facts:
-    label_selector: "key!=value"
-- name: verify test gather hcloud server with wrong label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts | list | count == 0
-
-- name: test gather hcloud server facts with correct name
-  hcloud_server_facts:
-    name: "{{hcloud_server_name}}"
-- name: verify test gather hcloud server with correct name
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
-
-- name: test gather hcloud server facts with wrong name
-  hcloud_server_facts:
-      name: "{{hcloud_server_name}}1"
-- name: verify test gather hcloud server with wrong name
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts | list | count == 0
-
-- name: test gather hcloud server facts with correct id
-  hcloud_server_facts:
-    id: "{{main_server.hcloud_server.id}}"
-- name: verify test gather hcloud server with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
-
-- name: test gather hcloud server facts with wrong id
-  hcloud_server_facts:
-      name: "4711"
-- name: verify test gather hcloud server with wrong id
-  assert:
-    that:
-      - ansible_facts.hcloud_server_facts | list | count == 0
-
-- name: cleanup
-  hcloud_server:
-    name: "{{ hcloud_server_name }}"
-    state: absent
diff --git a/test/integration/targets/hcloud_server_facts/aliases b/test/integration/targets/hcloud_server_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_server_facts/aliases
rename to test/integration/targets/hcloud_server_info/aliases
diff --git a/test/integration/targets/hcloud_server_facts/defaults/main.yml b/test/integration/targets/hcloud_server_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_server_facts/defaults/main.yml
rename to test/integration/targets/hcloud_server_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_server_info/tasks/main.yml b/test/integration/targets/hcloud_server_info/tasks/main.yml
new file mode 100644
index 00000000000..92eac5cc56f
--- /dev/null
+++ b/test/integration/targets/hcloud_server_info/tasks/main.yml
@@ -0,0 +1,97 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: setup ensure server is absent
+  hcloud_server:
+    name: "{{ hcloud_server_name }}"
+    state: absent
+  register: result
+
+- name: create server
+  hcloud_server:
+    name: "{{ hcloud_server_name }}"
+    server_type: cx11
+    image: ubuntu-18.04
+    state: started
+    labels:
+      key: value
+  register: main_server
+- name: verify create server
+  assert:
+    that:
+      - main_server is changed
+      - main_server.hcloud_server.name == "{{ hcloud_server_name }}"
+      - main_server.hcloud_server.server_type == "cx11"
+      - main_server.hcloud_server.status == "running"
+      - main_server.root_password != ""
+
+
+- name: test gather hcloud server infos in check mode
+  hcloud_server_info:
+  register: hcloud_server
+  check_mode: yes
+
+- name: verify test gather hcloud server infos in check mode
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
+
+
+- name: test gather hcloud server infos with correct label selector
+  hcloud_server_info:
+    label_selector: "key=value"
+  register: hcloud_server
+- name: verify test gather hcloud server infos with correct label selector
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
+
+- name: test gather hcloud server infos with wrong label selector
+  hcloud_server_info:
+    label_selector: "key!=value"
+  register: hcloud_server
+- name: verify test gather hcloud server infos with wrong label selector
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info | list | count == 0
+
+- name: test gather hcloud server infos with correct name
+  hcloud_server_info:
+    name: "{{hcloud_server_name}}"
+  register: hcloud_server
+- name: verify test gather hcloud server infos with correct name
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
+
+- name: test gather hcloud server infos with wrong name
+  hcloud_server_info:
+      name: "{{hcloud_server_name}}1"
+  register: hcloud_server
+- name: verify test gather hcloud server infos with wrong name
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info | list | count == 0
+
+- name: test gather hcloud server infos with correct id
+  hcloud_server_info:
+    id: "{{main_server.hcloud_server.id}}"
+  register: hcloud_server
+- name: verify test gather hcloud server infos with correct id
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info|selectattr('name','equalto','{{ hcloud_server_name }}') | list | count == 1
+
+- name: test gather hcloud server infos with wrong id
+  hcloud_server_info:
+      name: "4711"
+  register: hcloud_server
+- name: verify test gather hcloud server infos with wrong id
+  assert:
+    that:
+      - hcloud_server.hcloud_server_info | list | count == 0
+
+- name: cleanup
+  hcloud_server:
+    name: "{{ hcloud_server_name }}"
+    state: absent
diff --git a/test/integration/targets/hcloud_server_type_facts/tasks/main.yml b/test/integration/targets/hcloud_server_type_facts/tasks/main.yml
deleted file mode 100644
index c0d2e50296d..00000000000
--- a/test/integration/targets/hcloud_server_type_facts/tasks/main.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: test gather hcloud server type facts
-  hcloud_server_type_facts:
-- name: verify test gather hcloud server type facts
-  assert:
-    that:
-      - ansible_facts.hcloud_server_type_facts| list | count > 2
-
-- name: test gather hcloud server type facts in check mode
-  hcloud_server_type_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud server type facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_server_type_facts| list | count > 2
-
-- name: test gather hcloud server type facts with name
-  hcloud_server_type_facts:
-    name: "{{hcloud_server_type_name}}"
-- name: verify test gather hcloud server type with name
-  assert:
-    that:
-      - ansible_facts.hcloud_server_type_facts|selectattr('name','equalto','{{ hcloud_server_type_name }}') | list | count == 1
-
-- name: test gather hcloud server type facts with correct id
-  hcloud_server_type_facts:
-    id: "{{hcloud_server_type_id}}"
-- name: verify test gather hcloud server type with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_server_type_facts|selectattr('name','equalto','{{ hcloud_server_type_name }}') | list | count == 1
diff --git a/test/integration/targets/hcloud_server_type_facts/aliases b/test/integration/targets/hcloud_server_type_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_server_type_facts/aliases
rename to test/integration/targets/hcloud_server_type_info/aliases
diff --git a/test/integration/targets/hcloud_server_type_facts/defaults/main.yml b/test/integration/targets/hcloud_server_type_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_server_type_facts/defaults/main.yml
rename to test/integration/targets/hcloud_server_type_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_server_type_info/tasks/main.yml b/test/integration/targets/hcloud_server_type_info/tasks/main.yml
new file mode 100644
index 00000000000..3c1fce8c0e0
--- /dev/null
+++ b/test/integration/targets/hcloud_server_type_info/tasks/main.yml
@@ -0,0 +1,38 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: test gather hcloud server type infos
+  hcloud_server_type_info:
+  register: hcloud_server_types
+- name: verify test gather hcloud server type infos
+  assert:
+    that:
+      - hcloud_server_types.hcloud_server_type_info| list | count > 2
+
+- name: test gather hcloud server type infos in check mode
+  hcloud_server_type_info:
+  check_mode: yes
+  register: hcloud_server_types
+
+- name: verify test gather hcloud server type infos in check mode
+  assert:
+    that:
+      - hcloud_server_types.hcloud_server_type_info| list | count > 2
+
+- name: test gather hcloud server type infos with name
+  hcloud_server_type_info:
+    name: "{{hcloud_server_type_name}}"
+  register: hcloud_server_types
+- name: verify test gather hcloud server type with name
+  assert:
+    that:
+      - hcloud_server_types.hcloud_server_type_info|selectattr('name','equalto','{{ hcloud_server_type_name }}') | list | count == 1
+
+- name: test gather hcloud server type infos with correct id
+  hcloud_server_type_info:
+    id: "{{hcloud_server_type_id}}"
+  register: hcloud_server_types
+- name: verify test gather hcloud server type with correct id
+  assert:
+    that:
+      - hcloud_server_types.hcloud_server_type_info|selectattr('name','equalto','{{ hcloud_server_type_name }}') | list | count == 1
diff --git a/test/integration/targets/hcloud_ssh_key_facts/aliases b/test/integration/targets/hcloud_ssh_key_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_ssh_key_facts/aliases
rename to test/integration/targets/hcloud_ssh_key_info/aliases
diff --git a/test/integration/targets/hcloud_ssh_key_facts/defaults/main.yml b/test/integration/targets/hcloud_ssh_key_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_ssh_key_facts/defaults/main.yml
rename to test/integration/targets/hcloud_ssh_key_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_ssh_key_facts/meta/main.yml b/test/integration/targets/hcloud_ssh_key_info/meta/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_ssh_key_facts/meta/main.yml
rename to test/integration/targets/hcloud_ssh_key_info/meta/main.yml
diff --git a/test/integration/targets/hcloud_ssh_key_facts/tasks/main.yml b/test/integration/targets/hcloud_ssh_key_info/tasks/main.yml
similarity index 52%
rename from test/integration/targets/hcloud_ssh_key_facts/tasks/main.yml
rename to test/integration/targets/hcloud_ssh_key_info/tasks/main.yml
index 8c574f67214..87cbd26264c 100644
--- a/test/integration/targets/hcloud_ssh_key_facts/tasks/main.yml
+++ b/test/integration/targets/hcloud_ssh_key_info/tasks/main.yml
@@ -21,37 +21,41 @@
       - result is changed
       - result.hcloud_ssh_key.public_key == "{{ key_material }}"
 
-- name: test gather hcloud ssh key facts in check mode
-  hcloud_ssh_key_facts:
+- name: test gather hcloud ssh key infos in check mode
+  hcloud_ssh_key_info:
+  register: hcloud_ssh_key
   check_mode: yes
-- name: verify test gather hcloud ssh key facts in check mode
+- name: verify test gather hcloud ssh key infos in check mode
   assert:
     that:
-     - ansible_facts.hcloud_ssh_key_facts| list | count >= 1
+     - hcloud_ssh_key.hcloud_ssh_key_info| list | count >= 1
 
-- name: test gather hcloud ssh key facts
-  hcloud_ssh_key_facts:
+- name: test gather hcloud ssh key infos
+  hcloud_ssh_key_info:
+  register: hcloud_ssh_key
   check_mode: yes
-- name: verify test gather hcloud ssh key facts
+- name: verify test gather hcloud ssh key infos
   assert:
     that:
-     - ansible_facts.hcloud_ssh_key_facts| list | count >= 1
+     - hcloud_ssh_key.hcloud_ssh_key_info| list | count >= 1
 
-- name: test gather hcloud ssh key facts with correct label selector
-  hcloud_ssh_key_facts:
+- name: test gather hcloud ssh key infos with correct label selector
+  hcloud_ssh_key_info:
     label_selector: "key=value"
-- name: verify test gather hcloud ssh key with correct label selector
+  register: hcloud_ssh_key
+- name: verify test gather hcloud ssh key infos with correct label selector
   assert:
     that:
-      - ansible_facts.hcloud_ssh_key_facts|selectattr('name','equalto','{{ hcloud_ssh_key_name }}') | list | count == 1
+      - hcloud_ssh_key.hcloud_ssh_key_info|selectattr('name','equalto','{{ hcloud_ssh_key_name }}') | list | count == 1
 
-- name: test gather hcloud ssh key facts with wrong label selector
-  hcloud_ssh_key_facts:
+- name: test gather hcloud ssh key infos with wrong label selector
+  hcloud_ssh_key_info:
     label_selector: "key!=value"
-- name: verify test gather hcloud ssh key with wrong label selector
+  register: hcloud_ssh_key
+- name: verify test gather hcloud ssh key infos with wrong label selector
   assert:
     that:
-      - ansible_facts.hcloud_ssh_key_facts | list | count == 0
+      - hcloud_ssh_key.hcloud_ssh_key_info | list | count == 0
 
 - name: cleanup
   hcloud_ssh_key:
diff --git a/test/integration/targets/hcloud_volume_facts/tasks/main.yml b/test/integration/targets/hcloud_volume_facts/tasks/main.yml
deleted file mode 100644
index 9eae2e9a1ab..00000000000
--- a/test/integration/targets/hcloud_volume_facts/tasks/main.yml
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
----
-- name: setup ensure volume is absent
-  hcloud_volume:
-    name: "{{ hcloud_volume_name }}"
-    state: absent
-  register: result
-
-- name: setup volume
-  hcloud_volume:
-    name: "{{hcloud_volume_name}}"
-    size: 10
-    location: "fsn1"
-    labels:
-      key: value
-  register: main_volume
-- name: verify setup volume
-  assert:
-    that:
-      - main_volume is changed
-
-- name: test gather hcloud volume facts in check mode
-  hcloud_volume_facts:
-  check_mode: yes
-
-- name: verify test gather hcloud volume facts in check mode
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
-
-- name: test gather hcloud volume facts with correct label selector
-  hcloud_volume_facts:
-    label_selector: "key=value"
-- name: verify test gather hcloud volume with correct label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
-
-- name: test gather hcloud volume facts with wrong label selector
-  hcloud_volume_facts:
-    label_selector: "key!=value"
-- name: verify test gather hcloud volume with wrong label selector
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts | list | count == 0
-
-- name: test gather hcloud volume facts with correct name
-  hcloud_volume_facts:
-    name: "{{hcloud_volume_name}}"
-- name: verify test gather hcloud volume with correct name
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
-
-- name: test gather hcloud volume facts with wrong name
-  hcloud_volume_facts:
-      name: "{{hcloud_volume_name}}1"
-- name: verify test gather hcloud volume with wrong name
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts | list | count == 0
-
-- name: test gather hcloud volume facts with correct id
-  hcloud_volume_facts:
-    id: "{{main_volume.hcloud_volume.id}}"
-- name: verify test gather hcloud volume with correct id
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
-
-- name: test gather hcloud volume facts with wrong id
-  hcloud_volume_facts:
-      name: "4711"
-- name: verify test gather hcloud volume with wrong id
-  assert:
-    that:
-      - ansible_facts.hcloud_volume_facts | list | count == 0
-
-- name: cleanup
-  hcloud_volume:
-    name: "{{ hcloud_volume_name }}"
-    state: absent
-  register: result
-- name: verify cleanup
-  assert:
-    that:
-    - result is success
diff --git a/test/integration/targets/hcloud_volume_facts/aliases b/test/integration/targets/hcloud_volume_info/aliases
similarity index 100%
rename from test/integration/targets/hcloud_volume_facts/aliases
rename to test/integration/targets/hcloud_volume_info/aliases
diff --git a/test/integration/targets/hcloud_volume_facts/defaults/main.yml b/test/integration/targets/hcloud_volume_info/defaults/main.yml
similarity index 100%
rename from test/integration/targets/hcloud_volume_facts/defaults/main.yml
rename to test/integration/targets/hcloud_volume_info/defaults/main.yml
diff --git a/test/integration/targets/hcloud_volume_info/tasks/main.yml b/test/integration/targets/hcloud_volume_info/tasks/main.yml
new file mode 100644
index 00000000000..7e74bb9a8f8
--- /dev/null
+++ b/test/integration/targets/hcloud_volume_info/tasks/main.yml
@@ -0,0 +1,95 @@
+# Copyright: (c) 2019, Hetzner Cloud GmbH <info@hetzner-cloud.de>
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+---
+- name: setup ensure volume is absent
+  hcloud_volume:
+    name: "{{ hcloud_volume_name }}"
+    state: absent
+  register: result
+
+- name: setup volume
+  hcloud_volume:
+    name: "{{hcloud_volume_name}}"
+    size: 10
+    location: "fsn1"
+    labels:
+      key: value
+  register: main_volume
+- name: verify setup volume
+  assert:
+    that:
+      - main_volume is changed
+
+- name: test gather hcloud volume infos in check mode
+  hcloud_volume_info:
+  register: hcloud_volume
+  check_mode: yes
+
+- name: verify test gather hcloud volume infos in check mode
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
+
+- name: test gather hcloud volume infos with correct label selector
+  hcloud_volume_info:
+    label_selector: "key=value"
+  register: hcloud_volume
+- name: verify test gather hcloud volume infos with correct label selector
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
+
+- name: test gather hcloud volume infos with wrong label selector
+  hcloud_volume_info:
+    label_selector: "key!=value"
+  register: hcloud_volume
+- name: verify test gather hcloud volume infos with wrong label selector
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info | list | count == 0
+
+- name: test gather hcloud volume infos with correct name
+  hcloud_volume_info:
+    name: "{{hcloud_volume_name}}"
+  register: hcloud_volume
+- name: verify test gather hcloud volume infos with correct name
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
+
+- name: test gather hcloud volume infos with wrong name
+  hcloud_volume_info:
+      name: "{{hcloud_volume_name}}1"
+  register: hcloud_volume
+- name: verify test gather hcloud volume infos with wrong name
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info | list | count == 0
+
+- name: test gather hcloud volume facts with correct id
+  hcloud_volume_info:
+    id: "{{main_volume.hcloud_volume.id}}"
+  register: hcloud_volume
+- name: verify test gather hcloud volume with correct id
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info|selectattr('name','equalto','{{ hcloud_volume_name }}') | list | count == 1
+
+- name: test gather hcloud volume infos with wrong id
+  hcloud_volume_info:
+      name: "4711"
+  register: hcloud_volume
+- name: verify test gather hcloud volume infos with wrong id
+  assert:
+    that:
+      - hcloud_volume.hcloud_volume_info | list | count == 0
+
+- name: cleanup
+  hcloud_volume:
+    name: "{{ hcloud_volume_name }}"
+    state: absent
+  register: result
+- name: verify cleanup
+  assert:
+    that:
+    - result is success
diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt
index 1fffed8b860..cd9eb2031dd 100644
--- a/test/sanity/ignore.txt
+++ b/test/sanity/ignore.txt
@@ -1518,7 +1518,6 @@ lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:E322
 lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:E324
 lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:E326
 lib/ansible/modules/cloud/google/gcpubsub_info.py validate-modules:E338
-lib/ansible/modules/cloud/hcloud/hcloud_image_facts.py validate-modules:E338
 lib/ansible/modules/cloud/heroku/heroku_collaborator.py validate-modules:E337
 lib/ansible/modules/cloud/kubevirt/kubevirt_cdi_upload.py validate-modules:E338
 lib/ansible/modules/cloud/kubevirt/kubevirt_preset.py validate-modules:E337