On this page
netapp.ontap.na_ontap_restit – NetApp ONTAP Run any REST API on ONTAP
Note
This plugin is part of the netapp.ontap collection (version 20.12.0).
To install it use: ansible-galaxy collection install netapp.ontap
.
To use it in a playbook, specify: netapp.ontap.na_ontap_restit
.
New in version 20.4.0: of netapp.ontap
Synopsis
- Call a REST API on ONTAP.
- Cluster REST API are run using a cluster admin account.
- Vserver REST API can be run using a vsadmin account or using vserver tunneling (cluster admin with vserver_ options).
- In case of success, a json dictionary is returned as
response
. - In case of a REST API error,
status_code
,error_code
,error_message
are set to help with diagnosing the issue, - and the call is reported as an error (‘failed’).
- Other errors (eg connection issues) are reported as Ansible error.
Requirements
The below requirements are needed on the host that executes this module.
- A physical or virtual clustered Data ONTAP system. The modules support Data ONTAP 9.1 and onward.
- REST support requires ONTAP 9.6 or later.
- Ansible 2.6
- Ansible 2.9 or later is strongly recommended as it enables the new collection delivery system.
- Python2 netapp-lib (2017.10.30) or later. Install using ‘pip install netapp-lib’
- Python3 netapp-lib (2018.11.13) or later. Install using ‘pip install netapp-lib’
- netapp-lib 2020.3.12 is strongly recommended as it provides better error reporting for connection issues.
- To enable http on the cluster you must run the following commands ‘set -privilege advanced;’ ‘system services web modify -http-enabled true;’
Parameters
Parameter | Choices/Defaults | Comments |
---|---|---|
api
string / required
|
The REST API to call (eg cluster/software, svms/svm).
|
|
body
dictionary
|
A dictionary for the info parameter
aliases: info |
|
cert_filepath
string
added in 20.6.0 of netapp.ontap
|
path to SSL client cert file (.pem).
not supported with python 2.6.
|
|
feature_flags
dictionary
added in 20.5.0 of netapp.ontap
|
Enable or disable a new feature.
This can be used to enable an experimental feature or disable a new feature that breaks backward compatibility.
Supported keys and values are subject to change without notice. Unknown keys are ignored.
|
|
hal_linking
boolean
|
|
if true, HAL-encoded links are returned in the response.
|
hostname
string / required
|
The hostname or IP address of the ONTAP instance.
|
|
http_port
integer
|
Override the default port (80 or 443) with this port
|
|
https
boolean
|
|
Enable and disable https.
Ignored when using REST as only https is supported.
Ignored when using SSL certificate authentication as it requires SSL.
|
key_filepath
string
added in 20.6.0 of netapp.ontap
|
path to SSL client key file.
|
|
method
string
|
Default:
"GET"
|
The REST method to use.
|
ontapi
integer
|
The ontap api version to use
|
|
password
string
|
Password for the specified user.
aliases: pass |
|
query
dictionary
|
A list of dictionaries for the query parameters
|
|
use_rest
string
|
Default:
"auto"
|
REST API if supported by the target system for all the resources and attributes the module requires. Otherwise will revert to ZAPI.
always -- will always use the REST API
never -- will always use the ZAPI
auto -- will try to use the REST Api
|
username
string
|
This can be a Cluster-scoped or SVM-scoped account, depending on whether a Cluster-level or SVM-level API is required.
For more information, please read the documentation https://mysupport.netapp.com/NOW/download/software/nmsdk/9.4/.
Two authentication methods are supported
1. basic authentication, using username and password,
2. SSL certificate authentication, using a ssl client cert file, and optionally a private key file.
To use a certificate, the certificate must have been installed in the ONTAP cluster, and cert authentication must have been enabled.
aliases: user |
|
validate_certs
boolean
|
|
If set to
no , the SSL certificates will not be validated.
This should only set to False used on personally controlled sites using self-signed certificates.
|
vserver_name
string
|
if provided, forces vserver tunneling. username identifies a cluster admin account.
|
|
vserver_uuid
string
|
if provided, forces vserver tunneling. username identifies a cluster admin account.
|
Notes
Note
- The modules prefixed with na\_ontap are built to support the ONTAP storage platform.
Examples
-
name: Ontap REST API
hosts: localhost
gather_facts: False
collections:
- netapp.ontap
vars:
login: &login
hostname: "{{ admin_ip }}"
username: "{{ admin_username }}"
password: "{{ admin_password }}"
https: true
validate_certs: false
svm_login: &svm_login
hostname: "{{ svm_admin_ip }}"
username: "{{ svm_admin_username }}"
password: "{{ svm_admin_password }}"
https: true
validate_certs: false
tasks:
- name: run ontap REST API command as cluster admin
na_ontap_restit:
<<: *login
api: cluster/software
register: result
- debug: var=result
- assert: { that: result.status_code==200, quiet: True }
- name: run ontap REST API command as cluster admin
na_ontap_restit:
<<: *login
api: cluster/software
query:
fields: version
register: result
- debug: var=result
- assert: { that: result.status_code==200, quiet: True }
- name: run ontap REST API command as cluster admin
na_ontap_restit:
<<: *login
api: svm/svms
register: result
- debug: var=result
- assert: { that: result.status_code==200, quiet: True }
- name: run ontap REST API command as cluster admin
na_ontap_restit:
<<: *login
api: svm/svms
query:
fields: aggregates,cifs,nfs,uuid
query_fields: name
query: trident_svm
hal_linking: true
register: result
- debug: var=result
- name: run ontap REST API command as vsadmin
na_ontap_restit:
<<: *svm_login
api: svm/svms
register: result
- debug: var=result
- assert: { that: result.status_code==200, quiet: True }
- name: run ontap REST API command as vserver tunneling
na_ontap_restit:
<<: *login
api: storage/volumes
vserver_name: ansibleSVM
register: result
- debug: var=result
- assert: { that: result.status_code==200, quiet: True }
- set_fact:
uuid: "{{ result.response.records | json_query(get_uuid) }}"
vars:
get_uuid: "[? name=='deleteme_ln1'].uuid"
- debug: var=uuid
- name: run ontap REST API command as DELETE method with vserver tunneling
na_ontap_restit:
<<: *login
api: "storage/volumes/{{ uuid[0] }}"
method: DELETE
vserver_name: ansibleSVM
query:
return_timeout: 60
register: result
when: uuid|length == 1
- debug: var=result
- assert: { that: result.skipped|default(false) or result.status_code|default(404) == 200, quiet: True }
- name: run ontap REST API command as POST method with vserver tunneling
na_ontap_restit:
<<: *login
api: storage/volumes
method: POST
vserver_name: ansibleSVM
query:
return_records: "true"
return_timeout: 60
body:
name: deleteme_ln1
aggregates:
- name: aggr1
register: result
- debug: var=result
- assert: { that: result.status_code==201, quiet: True }
- name: run ontap REST API command as DELETE method with vserver tunneling
# delete test volume if present
na_ontap_restit:
<<: *login
api: "storage/volumes/{{ result.response.records[0].uuid }}"
method: DELETE
vserver_name: ansibleSVM
query:
return_timeout: 60
register: result
- debug: var=result
- assert: { that: result.status_code==200, quiet: True }
# error cases
- name: run ontap REST API command
na_ontap_restit:
<<: *login
api: unknown/endpoint
register: result
ignore_errors: True
- debug: var=result
- assert: { that: result.status_code==404, quiet: True }
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description |
---|---|---|
error_code
string
|
On error |
If the REST API was executed but failed, the error code set by the REST API.
Not present if successful, or if the REST API call cannot be performed.
|
error_message
string
|
On error |
If the REST API was executed but failed, the error message set by the REST API.
Not present if successful, or if the REST API call cannot be performed.
|
response
dictionary
|
On success |
If successful, a json dictionary returned by the REST API.
If the REST API was executed but failed, an empty dictionary.
Not present if the REST API call cannot be performed.
|
status_code
string
|
Always |
The http status code.
|
Authors
- NetApp Ansible Team (@carchi8py) <ng-ansibleteam@netapp.com>
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/netapp/ontap/na_ontap_restit_module.html