Server IP : 85.214.239.14 / Your IP : 18.191.192.250 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /lib/python3/dist-packages/ansible_collections/ansible/netcommon/plugins/modules/ |
Upload File : |
#!/usr/bin/python # Copyright: Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = """ module: restconf_get author: Ganesh Nalawade (@ganeshrn) short_description: Fetch configuration/state data from RESTCONF enabled devices. description: - RESTCONF is a standard mechanisms to allow web applications to access the configuration data and state data developed and standardized by the IETF. It is documented in RFC 8040. - This module allows the user to fetch configuration and state data from RESTCONF enabled devices. version_added: 1.0.0 options: path: description: - URI being used to execute API calls. required: true type: str content: description: - The C(content) is a query parameter that controls how descendant nodes of the requested data nodes in C(path) will be processed in the reply. If value is I(config) return only configuration descendant data nodes of value in C(path). If value is I(nonconfig) return only non-configuration descendant data nodes of value in C(path). If value is I(all) return all descendant data nodes of value in C(path) type: str required: false choices: - config - nonconfig - all output: description: - The output of response received. required: false type: str default: json choices: - json - xml notes: - This module requires the RESTCONF system service be enabled on the remote device being managed. - This module is supported with I(ansible_connection) value of I(ansible.netcommon.httpapi) and I(ansible_network_os) value of I(ansible.netcommon.restconf). - This module is tested against Cisco IOSXE 16.12.02 version. """ EXAMPLES = """ - name: get l3vpn services ansible.netcommon.restconf_get: path: /config/ietf-l3vpn-svc:l3vpn-svc/vpn-services """ RETURN = """ response: description: A dictionary representing a JSON-formatted response returned: when the device response is valid JSON type: dict sample: | { "vpn-services": { "vpn-service": [ { "customer-name": "red", "vpn-id": "blue_vpn1", "vpn-service-topology": "ietf-l3vpn-svc:any-to-any" } ] } } """ from ansible.module_utils._text import to_text from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.connection import ConnectionError from ansible_collections.ansible.netcommon.plugins.module_utils.network.restconf import ( restconf, ) from ansible_collections.ansible.netcommon.plugins.module_utils.utils.data import ( xml_to_dict, ) def main(): """entry point for module execution""" argument_spec = dict( path=dict(required=True), content=dict(choices=["config", "nonconfig", "all"]), output=dict(choices=["json", "xml"], default="json"), ) module = AnsibleModule( argument_spec=argument_spec, supports_check_mode=True ) result = {"changed": False} try: response = restconf.get(module, **module.params) except ConnectionError as exc: module.fail_json(msg=to_text(exc), code=exc.code) if module.params["output"] == "xml": try: response = xml_to_dict(response) except Exception as exc: module.fail_json(msg=to_text(exc)) result.update({"response": response}) module.exit_json(**result) if __name__ == "__main__": main()