From 809aa2d76751f0ee334019be98f7763cf54cf25f Mon Sep 17 00:00:00 2001 From: Yanis Guenane Date: Wed, 15 Aug 2018 00:40:19 +0200 Subject: [PATCH] scaleway: Introduce scaleway_snapshot_facts module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Rémy Leone --- .../cloud/scaleway/scaleway_snapshot_facts.py | 85 +++++++++++++++++++ .../scaleway_snapshot_facts/tasks/main.yml | 12 +++ test/legacy/scaleway.yml | 1 + 3 files changed, 98 insertions(+) create mode 100644 lib/ansible/modules/cloud/scaleway/scaleway_snapshot_facts.py create mode 100644 test/legacy/roles/scaleway_snapshot_facts/tasks/main.yml diff --git a/lib/ansible/modules/cloud/scaleway/scaleway_snapshot_facts.py b/lib/ansible/modules/cloud/scaleway/scaleway_snapshot_facts.py new file mode 100644 index 00000000000..274539e4ab5 --- /dev/null +++ b/lib/ansible/modules/cloud/scaleway/scaleway_snapshot_facts.py @@ -0,0 +1,85 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# (c) 2018, Yanis Guenane +# 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: scaleway_snapshot_facts +short_description: Gather facts about the Scaleway snapshots available. +description: + - Gather facts about the Scaleway snapshot available. +version_added: "2.7" +author: + - "Yanis Guenane (@Spredzy)" + - "Remy Leone (@sieben)" +extends_documentation_fragment: scaleway +''' + +EXAMPLES = r''' +- name: Gather Scaleway snapshots facts + scaleway_snapshot_facts: +''' + +RETURN = r''' +--- +scaleway_snapshot_facts: + description: Response from Scaleway API + returned: success + type: complex + contains: + "scaleway_snapshot_facts": [ + { + "base_volume": { + "id": "68386fae-4f55-4fbf-aabb-953036a85872", + "name": "snapshot-87fc282d-f252-4262-adad-86979d9074cf-2018-04-26_12:42" + }, + "creation_date": "2018-08-14T22:34:35.299461+00:00", + "id": "b61b4b03-a2e9-4da5-b5ea-e462ac0662d2", + "modification_date": "2018-08-14T22:34:54.520560+00:00", + "name": "snapshot-87fc282d-f252-4262-adad-86979d9074cf-2018-04-26_12:42 snapshot", + "organization": "3f709602-5e6c-4619-b80c-e841c89734af", + "size": 25000000000, + "state": "available", + "volume_type": "l_ssd" + } + ] +''' + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.scaleway import ( + Scaleway, ScalewayException, scaleway_argument_spec +) + + +class ScalewaySnapshotFacts(Scaleway): + + def __init__(self, module): + super(ScalewaySnapshotFacts, self).__init__(module) + self.name = 'snapshots' + + +def main(): + module = AnsibleModule( + argument_spec=scaleway_argument_spec(), + supports_check_mode=True, + ) + + try: + module.exit_json( + ansible_facts={'scaleway_snapshot_facts': ScalewaySnapshotFacts(module).get_resources()} + ) + except ScalewayException as exc: + module.fail_json(msg=exc.message) + + +if __name__ == '__main__': + main() diff --git a/test/legacy/roles/scaleway_snapshot_facts/tasks/main.yml b/test/legacy/roles/scaleway_snapshot_facts/tasks/main.yml new file mode 100644 index 00000000000..17929cc56cf --- /dev/null +++ b/test/legacy/roles/scaleway_snapshot_facts/tasks/main.yml @@ -0,0 +1,12 @@ +- name: Get snapshot informations and register it in a variable + scaleway_snapshot_facts: + register: snapshots + +- name: Display snapshots variable + debug: + var: snapshots + +- name: Ensure retrieval of snapshots facts is success + assert: + that: + - snapshots is success diff --git a/test/legacy/scaleway.yml b/test/legacy/scaleway.yml index e814cbf8cb2..5e8e2ddd846 100644 --- a/test/legacy/scaleway.yml +++ b/test/legacy/scaleway.yml @@ -11,6 +11,7 @@ - { role: scaleway_ip_facts, tags: test_scaleway_ip_facts } - { role: scaleway_security_group_facts, tags: test_scaleway_security_group_facts } - { role: scaleway_server_facts, tags: test_scaleway_server_facts } + - { role: scaleway_snapshot_facts, tags: test_scaleway_snapshot_facts } - { role: scaleway_ssh, tags: test_scaleway_ssh } - { role: scaleway_volume, tags: test_scaleway_volume } - { role: scaleway_volume_facts, tags: test_scaleway_volume_facts }