diff --git a/cadoles/eole/plugins/modules/eole_facts.py b/cadoles/eole/plugins/modules/eole_facts.py new file mode 100644 index 0000000..a69645e --- /dev/null +++ b/cadoles/eole/plugins/modules/eole_facts.py @@ -0,0 +1,109 @@ +#!/usr/bin/python + +# Copyright: (c) 2021, Cadoles +# 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 + +DOCUMENTATION = r''' +--- +module: eole_facts + +short_description: Gathers facts about EOLE modules + +version_added: "1.0.0" + +description: Determines if targeted server has EOLE module capacity. + +author: + - Benjamin Bohard +''' +EXAMPLES = r''' +- name: Return ansible_facts + cadoles.eole.eole_facts: +''' + +RETURN = r''' +# These are examples of possible return values, and in general should use other names for return values. +ansible_facts: + description: Facts to add to ansible_facts. + returned: always + type: dict + contains: + is_eole: + description: is_eole facts about operating system. + type: boolean + return: always + sample: True + module_eole: + description: eole module facts about operating system. + type: str + returned: when operating system eole module fact is present + sample: 'eolebase' + release_eole: + description: + - eole release facts about operating system. + - This description can be a list as well. + type: str + returned: when operating system eole release fact is present + sample: '2.7.2' +''' + +from ansible.module_utils.basic import AnsibleModule + + +def run_module(): + # define available arguments/parameters a user can pass to the module + module_args = dict() + + # seed the result dict in the object + # we primarily care about changed and state + # changed is if this module effectively modified the target + # state will include any data that you want your module to pass back + # for consumption, for example, in a subsequent task + result = dict( + changed=False, + ansible_facts=dict(), + ) + + # the AnsibleModule object will be our abstraction working with Ansible + # this includes instantiation, a couple of common attr would be the + # args/params passed to the execution, as well as if the module + # supports check mode + module = AnsibleModule( + argument_spec=module_args, + supports_check_mode=True + ) + + # if the user is working with this module in only check mode we do not + # want to make any changes to the environment, just return the current + # state with no modifications + if module.check_mode: + module.exit_json(**result) + + # manipulate or modify the state as needed (this is going to be the + # part where your module will do what it needs to do) + try: + from creole.eoleversion import EOLE_RELEASE + from creole.client import CreoleClient + module_eole = CreoleClient().get_creole('eole_module') + + result['ansible_facts'] = { + 'is_eole': True, + 'module_eole': module_eole, + 'release_eole': EOLE_RELEASE, + } + except: + result['ansible_facts'] = {'is_eole': False} + + # in the event of a successful module execution, you will want to + # simple AnsibleModule.exit_json(), passing the key/value results + module.exit_json(**result) + + +def main(): + run_module() + + +if __name__ == '__main__': + main()