diff options
author | Nathaniel Case <this.is@nathanielca.se> | 2019-02-04 09:28:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-04 09:28:26 -0500 |
commit | d14f16e31b69f032d2a6b556d19fa21feac7fd2c (patch) | |
tree | d689ca5e3a1bed51fc85a3541e63c6e335251c97 /lib/ansible/module_utils/network/restconf/restconf.py | |
parent | 57349c0611b048b426c8e3fce9f4c047fd3ff1d0 (diff) | |
download | ansible-d14f16e31b69f032d2a6b556d19fa21feac7fd2c.tar.gz |
Restconf HTTPAPI plugin and modules (#49476)
* Initial code for restconf support
* Add restconf httpapi plugin
* Add restonf_get module
* Fix some ConnectionError usage
Diffstat (limited to 'lib/ansible/module_utils/network/restconf/restconf.py')
-rw-r--r-- | lib/ansible/module_utils/network/restconf/restconf.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/ansible/module_utils/network/restconf/restconf.py b/lib/ansible/module_utils/network/restconf/restconf.py new file mode 100644 index 0000000000..375cd0a95b --- /dev/null +++ b/lib/ansible/module_utils/network/restconf/restconf.py @@ -0,0 +1,57 @@ +# This code is part of Ansible, but is an independent component. +# This particular file snippet, and this file snippet only, is BSD licensed. +# Modules you write using this snippet, which is embedded dynamically by Ansible +# still belong to the author of the module, and may assign their own license +# to the complete work. +# +# (c) 2018 Red Hat Inc. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +from ansible.module_utils.connection import Connection + + +def get(module, path=None, content=None, fields=None, output='json'): + if path is None: + raise ValueError('path value must be provided') + if content: + path += '?' + 'content=%s' % content + if fields: + path += '?' + 'field=%s' % fields + + accept = None + if output == 'xml': + accept = 'application/yang.data+xml' + + connection = Connection(module._socket_path) + return connection.send_request(None, path=path, method='GET', accept=accept) + + +def edit_config(module, path=None, content=None, method='GET', format='json'): + if path is None: + raise ValueError('path value must be provided') + + content_type = None + if format == 'xml': + content_type = 'application/yang.data+xml' + + connection = Connection(module._socket_path) + return connection.send_request(content, path=path, method=method, content_type=content_type) |