Module netapp_ontap.resources.cli
Copyright © 2021 NetApp Inc. All rights reserved.
Overview
This module is the implementation of the CLI resource. This resource is used as an advanced way to send commands to the host system. These commands may or may not have equivalent method of operation in the other resource sets.
Examples
Show command
import json
from netapp_ontap import HostConnection
from netapp_ontap.resources import CLI
with HostConnection("<mgmt-ip>", username="admin", password="password", verify=False):
response = CLI().execute("vserver services web show")
print(json.dumps(response.http_response.json(), indent=4))
{
"records": [
{
"vserver": "mycluster",
"name": "FW_BMC"
},
{
"vserver": "mycluster",
"name": "backups"
},
{
"vserver": "mycluster",
"name": "disco"
},
{
"vserver": "mycluster",
"name": "docs"
},
{
"vserver": "mycluster",
"name": "docs-api"
},
{
"vserver": "mycluster",
"name": "docs-dev-api"
},
{
"vserver": "mycluster",
"name": "fud"
},
{
"vserver": "mycluster",
"name": "ontapi"
},
{
"vserver": "mycluster",
"name": "portal"
},
{
"vserver": "mycluster",
"name": "rest"
},
{
"vserver": "mycluster",
"name": "saml"
},
{
"vserver": "mycluster",
"name": "saml-sp"
},
{
"vserver": "mycluster",
"name": "security"
},
{
"vserver": "mycluster",
"name": "spi"
},
{
"vserver": "mycluster",
"name": "supdiag"
},
{
"vserver": "mycluster",
"name": "sysmgr"
},
{
"vserver": "vs1",
"name": "backups"
},
{
"vserver": "vs1",
"name": "docs-api"
},
{
"vserver": "vs1",
"name": "docs-dev-api"
},
{
"vserver": "vs1",
"name": "ontapi"
},
{
"vserver": "vs1",
"name": "rest"
},
{
"vserver": "vs1",
"name": "security"
}
],
"num_records": 23
}
Show command with query
import json
from netapp_ontap import HostConnection
from netapp_ontap.resources import CLI
with HostConnection("<mgmt-ip>", username="admin", password="password", verify=False):
response = CLI().execute("vserver services web show", vserver="vs1")
print(json.dumps(response.http_response.json(), indent=4))
{
"records": [
{
"vserver": "vs1",
"name": "backups"
},
{
"vserver": "vs1",
"name": "docs-api"
},
{
"vserver": "vs1",
"name": "docs-dev-api"
},
{
"vserver": "vs1",
"name": "ontapi"
},
{
"vserver": "vs1",
"name": "rest"
},
{
"vserver": "vs1",
"name": "security"
}
],
"num_records": 6
}
Modify command with query
import json
from netapp_ontap import HostConnection
from netapp_ontap.resources import CLI
with HostConnection("<mgmt-ip>", username="admin", password="password", verify=False):
response = CLI().execute(
"vserver services web modify", body={"enabled": False}, vserver="vs1",
name="ontapi",
)
print(json.dumps(response.http_response.json(), indent=4))
{
"num_records": 1
}
Create command
import json
from netapp_ontap import HostConnection
from netapp_ontap.resources import CLI
with HostConnection("<mgmt-ip>", username="admin", password="password", verify=False):
response = CLI().execute(
"volume create",
body={"volume": "vol1", "vserver": "vs1", "aggregate": "aggr1"},
poll=False,
)
print(json.dumps(response.http_response.json(), indent=4))
print(json.dumps(response.poll().http_response.json(), indent=4))
{
"job": {
"uuid": "bce9cad6-afbe-11ea-8a81-005056bbe450",
"_links": {
"self": {
"href": "/api/cluster/jobs/bce9cad6-afbe-11ea-8a81-005056bbe450"
}
}
},
"cli_output": "[Job 325] Job is queued: Create vol1."
}
{
"uuid": "bce9cad6-afbe-11ea-8a81-005056bbe450",
"description": "Create vol1",
"state": "success",
"message": "Complete: Successful [0]",
"code": 0,
"start_time": "2020-06-16T06:47:13-04:00",
"end_time": "2020-06-16T06:47:13-04:00",
"_links": {
"self": {
"href": "/api/cluster/jobs/bce9cad6-afbe-11ea-8a81-005056bbe450"
}
}
}
Classes
class CLI (*args, **kwargs)
-
To help CLI and ONTAP users transition to the ONTAP REST API, ONTAP 9.6 provides a private REST API endpoint that can be used to access any CLI command. Usage of this API call is recorded and returned in the AutoSupport data collection so that NetApp can identify usablity and functionality improvements in the REST API for future releases. There is no per-API documentation for the REST API access for each CLI command. Unlike the documented REST APIs, the API paths and properties for the CLI passthrough correspond very closely to the CLI. There are several rules that govern all the differences between a CLI command and the REST API mirroring the CLI command.
Initialize the instance of the resource.
Any keyword arguments are set on the instance as properties. For example, if the class was named 'MyResource', then this statement would be true:
MyResource(name='foo').name == 'foo'
Args
*args
- Each positional argument represents a parent key as used in the URL of the object. That is, each value will be used to fill in a segment of the URL which refers to some parent object. The order of these arguments must match the order they are specified in the URL, from left to right.
**kwargs
- each entry will have its key set as an attribute name on the instance and its value will be the value of that attribute.
Ancestors
Methods
def execute(self, command, body: dict = None, privilege_level: str = 'admin', poll: bool = True, **kwargs) -> NetAppResponse
-
Execute a command on the CLI and return the result
Args
command
- A string representing the command to execute. This should not include any input or query parameters. Only the base command. E.g.: "volume show", "system node coredump delete", etc.
body
- Any input parameters required to execute the command. These would be passed to the API in the body and used as the required or optional command input.
privilege_level
- If the command needs to be run at a particular privilege level, it can be specified here. The options are "admin" (default), "advanced", "diagnostic".
poll
- If the command starts a job, it will be tracked until it is complete. If this is not desired, set this value to False.
kwargs
- Any parameters needed to filter the objects on which the command will operate.
Returns
Returns a
NetAppResponse
object containing the details of the HTTP response.Raises
NetAppRestError
: If the API call returned a status code >= 400
Inherited members