#!/usr/bin/python from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = r""" --- module: ednz_cloud.infomaniak.public_cloud_config_info short_description: Retrieves the public cloud configuration from the Infomaniak API. version_added: "0.1.0" description: - This module queries the Infomaniak API to retrieve the public cloud configuration for a given account. - It uses the provided API token for authentication and the account ID as a query parameter. requirements: - C(requests) options: api_token: description: The API token used to authenticate with the Infomaniak API. required: true type: str account_id: description: The account ID for which to query the public cloud configuration. required: true type: str author: - Bertrand Lanson (@ednxzu) """ EXAMPLES = r""" # Example: Retrieve public cloud configuration for account ID 965060 - name: Get public cloud configuration public_cloud_config_info: api_token: "your_api_token" account_id: "123456" """ RETURN = r""" config: description: - The public cloud configuration for the specified account. type: dict returned: always sample: free_tier: 300 free_tier_used: 24.34 account_resource_level: 2 valid_from: 1707584356 valid_to: 1717192799 project_count: 2 """ from ansible.module_utils.basic import AnsibleModule from ansible_collections.ednz_cloud.infomaniak.plugins.module_utils.infomaniak_api_client import ( InfomaniakAPIClient, ) def get_public_cloud_config(client: InfomaniakAPIClient, account_id: str): endpoint = "/public_clouds/config" params = {"account_id": account_id} response = client.get(endpoint, params=params) if response.get("result") != "success": raise Exception(f"API request failed with result: {response.get('result')}") return response.get("data", {}) def run_module(): module_args = dict( api_token=dict(type="str", required=True, no_log=True), account_id=dict(type="str", required=True), ) result = dict(changed=False, config={}) module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) api_token = module.params["api_token"] account_id = module.params["account_id"] if module.check_mode: module.exit_json( changed=False, msg="Check mode: No changes made, would retrieve public cloud config.", ) client = InfomaniakAPIClient(api_version="1", api_token=api_token) try: config_data = get_public_cloud_config(client, account_id) result["config"] = config_data module.exit_json(**result) except Exception as e: module.fail_json(msg=str(e)) def main(): run_module() if __name__ == "__main__": main()