From 185a1fcb07285ab8d5c1fc45b6b5b8b1b5726f4e Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Tue, 27 Aug 2019 22:36:55 +0200 Subject: [PATCH] Online: rename _facts -> _info (#61091) * Rename online _facts -> _info * Add changelog. --- .../fragments/61091-online-facts-info.yaml | 3 + .../rst/porting_guides/porting_guide_2.9.rst | 4 + ...erver_facts.py => _online_server_facts.py} | 6 +- ...ne_user_facts.py => _online_user_facts.py} | 6 +- .../cloud/online/online_server_info.py | 178 ++++++++++++++++++ .../modules/cloud/online/online_user_info.py | 79 ++++++++ test/legacy/online.yml | 4 +- .../tasks/main.yml | 12 +- .../tasks/main.yml | 6 +- 9 files changed, 285 insertions(+), 13 deletions(-) create mode 100644 changelogs/fragments/61091-online-facts-info.yaml rename lib/ansible/modules/cloud/online/{online_server_facts.py => _online_server_facts.py} (96%) rename lib/ansible/modules/cloud/online/{online_user_facts.py => _online_user_facts.py} (90%) create mode 100644 lib/ansible/modules/cloud/online/online_server_info.py create mode 100644 lib/ansible/modules/cloud/online/online_user_info.py rename test/legacy/roles/{online_server_facts => online_server_info}/tasks/main.yml (50%) rename test/legacy/roles/{online_user_facts => online_user_info}/tasks/main.yml (70%) diff --git a/changelogs/fragments/61091-online-facts-info.yaml b/changelogs/fragments/61091-online-facts-info.yaml new file mode 100644 index 00000000000..6de5d3dfe60 --- /dev/null +++ b/changelogs/fragments/61091-online-facts-info.yaml @@ -0,0 +1,3 @@ +minor_changes: +- The ``online_server_facts`` module has been deprecated. Use ``online_server_info`` instead. +- The ``online_user_facts`` module has been deprecated. Use ``online_user_info`` instead. 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 1a255e3ac51..2213c6c0062 100644 --- a/docs/docsite/rst/porting_guides/porting_guide_2.9.rst +++ b/docs/docsite/rst/porting_guides/porting_guide_2.9.rst @@ -116,6 +116,10 @@ The following modules will be removed in Ansible 2.13. Please update update your * nxos_vlan use :ref:`nxos_vlans ` instead. +* online_server_facts use :ref:`online_server_info ` instead. + +* online_user_facts use :ref:`online_user_info ` instead. + * purefa_facts use :ref:`purefa_info ` instead. * purefb_facts use :ref:`purefb_info ` instead. diff --git a/lib/ansible/modules/cloud/online/online_server_facts.py b/lib/ansible/modules/cloud/online/_online_server_facts.py similarity index 96% rename from lib/ansible/modules/cloud/online/online_server_facts.py rename to lib/ansible/modules/cloud/online/_online_server_facts.py index bf2182339b3..10d81a4a293 100644 --- a/lib/ansible/modules/cloud/online/online_server_facts.py +++ b/lib/ansible/modules/cloud/online/_online_server_facts.py @@ -8,12 +8,16 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], + 'status': ['deprecated'], 'supported_by': 'community'} DOCUMENTATION = r''' --- module: online_server_facts +deprecated: + removed_in: '2.13' + why: Deprecated in favour of C(_info) module. + alternative: Use M(online_server_info) instead. short_description: Gather facts about Online servers. description: - Gather facts about the servers. diff --git a/lib/ansible/modules/cloud/online/online_user_facts.py b/lib/ansible/modules/cloud/online/_online_user_facts.py similarity index 90% rename from lib/ansible/modules/cloud/online/online_user_facts.py rename to lib/ansible/modules/cloud/online/_online_user_facts.py index 3a289414f04..e42e88ee981 100644 --- a/lib/ansible/modules/cloud/online/online_user_facts.py +++ b/lib/ansible/modules/cloud/online/_online_user_facts.py @@ -7,12 +7,16 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type ANSIBLE_METADATA = {'metadata_version': '1.1', - 'status': ['preview'], + 'status': ['deprecated'], 'supported_by': 'community'} DOCUMENTATION = r''' --- module: online_user_facts +deprecated: + removed_in: '2.13' + why: Deprecated in favour of C(_info) module. + alternative: Use M(online_user_info) instead. short_description: Gather facts about Online user. description: - Gather facts about the user. diff --git a/lib/ansible/modules/cloud/online/online_server_info.py b/lib/ansible/modules/cloud/online/online_server_info.py new file mode 100644 index 00000000000..8979ec6582a --- /dev/null +++ b/lib/ansible/modules/cloud/online/online_server_info.py @@ -0,0 +1,178 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import (absolute_import, division, print_function) + +__metaclass__ = type + +ANSIBLE_METADATA = {'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'community'} + +DOCUMENTATION = r''' +--- +module: online_server_info +short_description: Gather information about Online servers. +description: + - Gather information about the servers. + - U(https://www.online.net/en/dedicated-server) +version_added: "2.9" +author: + - "Remy Leone (@sieben)" +extends_documentation_fragment: online +''' + +EXAMPLES = r''' +- name: Gather Online server information + online_server_info: + api_token: '0d1627e8-bbf0-44c5-a46f-5c4d3aef033f' + register: result + +- debug: + msg: "{{ result.online_server_info }}" +''' + +RETURN = r''' +--- +online_server_info: + description: Response from Online API + returned: success + type: complex + contains: + "online_server_info": [ + { + "abuse": "abuse@example.com", + "anti_ddos": false, + "bmc": { + "session_key": null + }, + "boot_mode": "normal", + "contacts": { + "owner": "foobar", + "tech": "foobar" + }, + "disks": [ + { + "$ref": "/api/v1/server/hardware/disk/68452" + }, + { + "$ref": "/api/v1/server/hardware/disk/68453" + } + ], + "drive_arrays": [ + { + "disks": [ + { + "$ref": "/api/v1/server/hardware/disk/68452" + }, + { + "$ref": "/api/v1/server/hardware/disk/68453" + } + ], + "raid_controller": { + "$ref": "/api/v1/server/hardware/raidController/9910" + }, + "raid_level": "RAID1" + } + ], + "hardware_watch": true, + "hostname": "sd-42", + "id": 42, + "ip": [ + { + "address": "195.154.172.149", + "mac": "28:92:4a:33:5e:c6", + "reverse": "195-154-172-149.rev.poneytelecom.eu.", + "switch_port_state": "up", + "type": "public" + }, + { + "address": "10.90.53.212", + "mac": "28:92:4a:33:5e:c7", + "reverse": null, + "switch_port_state": "up", + "type": "private" + } + ], + "last_reboot": "2018-08-23T08:32:03.000Z", + "location": { + "block": "A", + "datacenter": "DC3", + "position": 19, + "rack": "A23", + "room": "4 4-4" + }, + "network": { + "ip": [ + "195.154.172.149" + ], + "ipfo": [], + "private": [ + "10.90.53.212" + ] + }, + "offer": "Pro-1-S-SATA", + "os": { + "name": "FreeBSD", + "version": "11.1-RELEASE" + }, + "power": "ON", + "proactive_monitoring": false, + "raid_controllers": [ + { + "$ref": "/api/v1/server/hardware/raidController/9910" + } + ], + "support": "Basic service level" + } + ] +''' + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.online import ( + Online, OnlineException, online_argument_spec +) + + +class OnlineServerInfo(Online): + + def __init__(self, module): + super(OnlineServerInfo, self).__init__(module) + self.name = 'api/v1/server' + + def _get_server_detail(self, server_path): + try: + return self.get(path=server_path).json + except OnlineException as exc: + self.module.fail_json(msg="A problem occurred while fetching: %s (%s)" % (server_path, exc)) + + def all_detailed_servers(self): + servers_api_path = self.get_resources() + + server_data = ( + self._get_server_detail(server_api_path) + for server_api_path in servers_api_path + ) + + return [s for s in server_data if s is not None] + + +def main(): + module = AnsibleModule( + argument_spec=online_argument_spec(), + supports_check_mode=True, + ) + + try: + servers_info = OnlineServerInfo(module).all_detailed_servers() + module.exit_json( + online_server_info=servers_info + ) + except OnlineException as exc: + module.fail_json(msg=exc.message) + + +if __name__ == '__main__': + main() diff --git a/lib/ansible/modules/cloud/online/online_user_info.py b/lib/ansible/modules/cloud/online/online_user_info.py new file mode 100644 index 00000000000..0a1712c18fe --- /dev/null +++ b/lib/ansible/modules/cloud/online/online_user_info.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +ANSIBLE_METADATA = {'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'community'} + +DOCUMENTATION = r''' +--- +module: online_user_info +short_description: Gather information about Online user. +description: + - Gather information about the user. +version_added: "2.9" +author: + - "Remy Leone (@sieben)" +extends_documentation_fragment: online +''' + +EXAMPLES = r''' +- name: Gather Online user info + online_user_info: + register: result + +- debug: + msg: "{{ result.online_user_info }}" +''' + +RETURN = r''' +--- +online_user_info: + description: Response from Online API + returned: success + type: complex + contains: + "online_user_info": { + "company": "foobar LLC", + "email": "foobar@example.com", + "first_name": "foo", + "id": 42, + "last_name": "bar", + "login": "foobar" + } +''' + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.online import ( + Online, OnlineException, online_argument_spec +) + + +class OnlineUserInfo(Online): + + def __init__(self, module): + super(OnlineUserInfo, self).__init__(module) + self.name = 'api/v1/user' + + +def main(): + module = AnsibleModule( + argument_spec=online_argument_spec(), + supports_check_mode=True, + ) + + try: + module.exit_json( + online_user_info=OnlineUserInfo(module).get_resources() + ) + except OnlineException as exc: + module.fail_json(msg=exc.message) + + +if __name__ == '__main__': + main() diff --git a/test/legacy/online.yml b/test/legacy/online.yml index 4cfc419d08c..a64a5afa3b4 100644 --- a/test/legacy/online.yml +++ b/test/legacy/online.yml @@ -4,5 +4,5 @@ connection: local roles: - - { role: online_server_facts, tags: test_online_server_facts } - - { role: online_user_facts, tags: test_online_user_facts } + - { role: online_server_info, tags: test_online_server_info } + - { role: online_user_info, tags: test_online_user_info } diff --git a/test/legacy/roles/online_server_facts/tasks/main.yml b/test/legacy/roles/online_server_info/tasks/main.yml similarity index 50% rename from test/legacy/roles/online_server_facts/tasks/main.yml rename to test/legacy/roles/online_server_info/tasks/main.yml index da203b641b1..71499adbe50 100644 --- a/test/legacy/roles/online_server_facts/tasks/main.yml +++ b/test/legacy/roles/online_server_info/tasks/main.yml @@ -1,14 +1,14 @@ -# ONLINE_TOKEN='XXX' ansible-playbook ./test/legacy/online.yml --tags test_online_server_facts +# ONLINE_TOKEN='XXX' ansible-playbook ./test/legacy/online.yml --tags test_online_server_info - name: Get server information and register it in a variable - online_server_facts: - register: servers_facts + online_server_info: + register: servers_info - name: Display server variable debug: - var: servers_facts + var: servers_info -- name: Ensure retrieval of servers facts is success +- name: Ensure retrieval of servers info is success assert: that: - - servers_facts is success + - servers_info is success diff --git a/test/legacy/roles/online_user_facts/tasks/main.yml b/test/legacy/roles/online_user_info/tasks/main.yml similarity index 70% rename from test/legacy/roles/online_user_facts/tasks/main.yml rename to test/legacy/roles/online_user_info/tasks/main.yml index 6603ef4cc69..aec448b1769 100644 --- a/test/legacy/roles/online_user_facts/tasks/main.yml +++ b/test/legacy/roles/online_user_info/tasks/main.yml @@ -1,14 +1,14 @@ -# ONLINE_TOKEN='XXX' ansible-playbook ./test/legacy/online.yml --tags test_online_user_facts +# ONLINE_TOKEN='XXX' ansible-playbook ./test/legacy/online.yml --tags test_online_user_info - name: Get user information and register it in a variable - online_user_facts: + online_user_info: register: user - name: Display user variable debug: var: user -- name: Ensure retrieval of user facts is success +- name: Ensure retrieval of user info is success assert: that: - user is success