Difference between revisions of "+ CLI Guide Overview"

From OSNEXUS Online Documentation Site
Jump to: navigation, search
m (Role Based Access Control Management Commands)
m (QuantaStor CLI Command Reference v4.3)
(111 intermediate revisions by the same user not shown)
Line 1: Line 1:
The QuantaStor command line interface (CLI) can be used to remotely manage your QuantaStor based systems remotely via a Windows or Linux system, and it is also a powerful tool for scripting the configuration and provisioning of resources.  The command line utility for managing your QuantaStor system is called simply 'qs'.  You can run 'qs' after logging into your QuantaStor system via an SSH connection, or you can download the QuantaStor Remote CLI client installer for Windows which is available for download from the web site.
+
The QuantaStor command line interface (CLI) can be used to remotely manage your QuantaStor based systems via a Windows or Linux system, and it is also a powerful tool for scripting the configuration and provisioning of storage volumes, network shares, and other resources.  The command line utility for managing your QuantaStor system is called simply 'qs'.  You can run 'qs' after logging into your QuantaStor system via an SSH connection, or you can download the QuantaStor Remote CLI client installer for Windows which is available for download from the OSNEXUS web site.
  
 
=How to use the CLI=
 
=How to use the CLI=
 +
QuantaStor CLI is a full featured interface into all of the QuantaStor management features and can communicates with the local core management service as well as remote storage appliances. 
  
    qs command -mandatory-arg=val [-optional-arg=val] [-flags=force,async,...] [-xml] [-min]
+
==Authentication==
 +
''It is important to note that running the ''qs'' CLI locally as ''root'' affords no additional access privileges.  Each command run via the CLI must include the ''--server'' specification which includes which server and what credentials should be used to access the appliance with.''
 +
=== Authentication via --server Argument ===
 +
All CLI commands accept the server specification argument which is of this form:
 +
<pre>[--server=ipaddress[,username,password]]</pre>
 +
If you do not specify a username or password it will try to use the defaults which are 'admin' and 'password'.
 +
=== Authentication via QS_SERVER Environment Variable ===
 +
Rather than having to specify the --server argument over and over again you can set an environment variable once then it will use this as the default appliance IP address and credentials. The form of the variable is like so:
 +
<pre>export QS_SERVER=ipaddress[,username,password]]</pre>
 +
 
 +
Examples:
 +
<pre>
 +
export QS_SERVER=localhost,admin,password
 +
export QS_SERVER=10.0.5.10,admin,mypass123
 +
export QS_SERVER=myhostname.domain.net,mike,mypass123
 +
</pre>
 +
=== Authentication via .qs.cnf Configuration File ===
 +
Finally, rather than using an environment variable you can also create a file in your home directory called .qs.cnf with your credentials in it.  Here's an example of how to create the file:
 +
<pre>
 +
echo "192.168.0.10,admin,password" > ~/.qs.cnf
 +
chmod 600 ~/.qs.cnf
 +
</pre>
 +
 
 +
==Usage==
 +
The general usage format for all CLI commands is as follows:
 +
<pre>   
 +
qs command <-mandatory-arg=val> [-optional-arg=val] [-flags=force,async,...] [-server=ipaddress[,username,password]] [-xml] [-min]  
 +
</pre>
 +
 
 +
As you read through the CLI documentation note that all arguments that are specified in angle backets <> are mandatory required arguments.  Arguments in square brackets [] are optional and you'll generally see the default argument specified in the documentation.  Note that the qs CLI is installed on your QuantaStor system so you can run it from there, or from a Windows system using our Remote Management CLI Installer found on the downloads page.  All commands can be run against a remote QuantaStor storage system using the --server= argument as outlined above.
 +
 
 +
Note also that anytime you must specify an object argument like host= volume= share= or others you can refer to the object by name or by its unique ID (UUID).  For scripting it is always best to be more exact and use the UUID but it can be a big time-saver to be able to refer to objects by name as well, hence this capability.
  
 
=Output Modes=
 
=Output Modes=
 
==XML Output Mode==
 
==XML Output Mode==
 
Use --xml with any command to get the results in XML.
 
Use --xml with any command to get the results in XML.
Example: <pre>qs disk-list --xml</pre>
+
Example:  
 +
<pre>
 +
qs disk-list --server=localhost,admin,password --xml
 +
qs volume-list --server=localhost,admin,password
 +
</pre>
  
 
==Minimal Output Mode==
 
==Minimal Output Mode==
Line 39: Line 75:
 
In this way you can reduce down help results to just what you need.   
 
In this way you can reduce down help results to just what you need.   
  
=Remote System Specification=
+
= Remote System Specification =
  
 
You can use the CLI to manage remote QuantaStor systems, but in such cases you'll need to specify the IP address and username/password of the remote storage system using the 'server' argument.
 
You can use the CLI to manage remote QuantaStor systems, but in such cases you'll need to specify the IP address and username/password of the remote storage system using the 'server' argument.
Line 48: Line 84:
 
Note that the The service specification must be comma delimited with no spaces. If no username and password are supplied the default Administrator username 'admin' and the default password 'password' will be tried.
 
Note that the The service specification must be comma delimited with no spaces. If no username and password are supplied the default Administrator username 'admin' and the default password 'password' will be tried.
  
=CLI Usage Examples=
+
= Command Error Code Definitions =
 +
 
 +
For all commands a 0 is returned for SUCCESS and a non-zero error code is returned if there is a command failure.  Use the --xml mode to get verbose detail on the error.  Full list of error codes are available [[Error Codes | here]].
 +
 
 +
=Usage Examples=
  
 
It's always nice to see some common examples of how the CLI can be used so here's a number of commands so you can see the general syntax of how the CLI is used.  You'll notice that sometimes we specify arguments with a single hyphen (-), other times with the double hyphen (--) and sometimes it is omitted.  All three are supported.  The only hard rule is that the command name must be the first argument after the 'qs' command-line utility name.  After that the arguments can be specified in any order with or without hyphens.
 
It's always nice to see some common examples of how the CLI can be used so here's a number of commands so you can see the general syntax of how the CLI is used.  You'll notice that sometimes we specify arguments with a single hyphen (-), other times with the double hyphen (--) and sometimes it is omitted.  All three are supported.  The only hard rule is that the command name must be the first argument after the 'qs' command-line utility name.  After that the arguments can be specified in any order with or without hyphens.
Line 60: Line 100:
 
</pre>
 
</pre>
  
=CLI Commands=
+
=Help Commands=
The following list of commands is the complete list of everything you can do from the CLI.  In fact, the list of CLI commands is a pretty close 1-to-1 match with our SOAP based management interface API set.  As such, anything you can do via the web management interface, you can do through the CLI, and with the XML output mode you can easily integrate your QuantaStor system with any automated provisioning system in any language.
+
Note that we list the command names along with a short version in square brackets (ex: help [h]). If you find yourself using the CLI frequently learning the short command names can make the CLI easier to work with as it reduces the amount of typing required. For scripting, it's often better to use the long command names as it makes your script easier to read and maintain.
+
 
+
== General Commands ==
+
=== help [h] ===
+
Help page for all commands. Try 'help --min' for a compacted list of commands, or just 'help' by itself for a verbose listing of all commands with their input parameters. Optionally you can get help on a specific category or command (ex: help --category=volume).
+
<pre>
+
[--command]      :: A specific CLI command to get detailed help with.
+
[--category]    :: Category of commands to get help with (acl, alert, host, host-group,
+
                            license, role, session, schedule, pool, quota, system, volume,
+
                            volume-group, task, user, user-group).
+
</pre>
+
==Alert Management Commands==
+
=== alert-list [a-list] ===
+
Returns a list of all the alerts in the system.  Some alerts are informational, such as the initial alert that is raised when the system starts up so in general you should see some number of alerts when you run alert-list unless the alerts have been recently cleared.  The system will start to automatically the oldest alerts after the system has recorded more than 100 alerts into the database.
+
 
+
=== alert-get [a-get] ===
+
Returns information about a specific alert given its unique ID.
+
<pre>
+
<--id>          :: Unique identifer (GUID) for the object.
+
</pre>
+
=== alert-raise [a-raise] ===
+
      :: Allows one to raise a user generated alert for testing the SMTP server configuration
+
        settings.
+
<pre>
+
<--message>      :: Message string to be echoed back from the server.
+
[--alert-severity] :: Severity of the user generated alert to be raise. [always, critical,
+
                            error, *info, warning]
+
</pre>
+
=== alert-clear [a-clear] ===
+
      :: Deletes the alert with the specified ID.
+
<pre>
+
<--id>          :: Unique identifer (GUID) for the object.
+
</pre>
+
=== alert-clear-all [a-clear-all] ===
+
Clears all the alerts in the system.
+
 
+
=== alert-config-get [ac-get] ===
+
Alert configuration settings indicate which SMTP server should be used to report alert notifications via email.
+
 
+
=== alert-config-set [ac-set] ===
+
Sets the alert configuration settings such as the administrator email address, SMTP server address, etc.  Be sure to use the alert-raise command to generate a test alert after you modify the alert configuration settings to ensure that emails are being properly sent.
+
<pre>
+
[--sender-email] :: Sender email address to be used for alert emails sent from the storage
+
                            system.
+
[--smtp-server]  :: IP Address of the SMTP service where emails should be routed through.
+
[--smtp-user]    :: SMTP user name to use for secure SMTP access to your SMTP server for
+
                            sending alert emails.
+
[--smtp-password] :: SMTP password to use for secure SMTP access to your SMTP server.
+
[--smtp-auth]    :: SMTP security mode.
+
[--support-email] :: Email address for local customer support.
+
[--freespace-warning] :: The percentage of free-space left in a pool at which a warning is sent
+
                            to indicate pool growth plans should be made.
+
[--freespace-alert] :: The percentage (default=10) of free-space left in a pool at which alerts
+
                            are generated.
+
[--freespace-critical] :: The percentage (default=5) of free-space left in a pool at which all
+
                            provisioning operations are blocked.
+
</pre>
+
==System Event Commands==
+
=== event-list [ev-list] ===
+
Returns a list of all the low-level internal events in the event queue.  This can be used to develop scripts that will monitor your QuantaStor system for changes so that it's active status can be quickly updated in a custom management interface. 
+
<pre>
+
[--index]        :: Starting event index of where to begin listing events from.
+
[--max]          :: Maxiumum number of events to enumerate.
+
[--time-stamp]  :: Time-stamp of the service.
+
</pre>
+
==Task Management Commands==
+
=== task-list [t-list] ===
+
Returns a list of all the tasks including active, completed, and failed tasks.
+
 
+
=== task-get [t-get] ===
+
Returns information about a specific task.
+
<pre>
+
<--task>        :: ID of a task.
+
</pre>
+
=== task-cancel [t-cancel] ===
+
Cancels the specified task that is in the queue or is running.  Not all tasks can be cancelled after they've started, but any queued task can be canceled.
+
<pre>
+
<--task>        :: ID of a task.
+
</pre>
+
 
+
=== task-clear-all [t-clear-all] ===
+
Clears all the completed and/or failed tasks from the task log so that only the running and queued tasks remain, if any.
+
 
+
==License Management Commands==
+
=== license-get [lic-get] ===
+
Shows the current license key info, and any activation request code.
+
<pre>
+
<--key>          :: Unique license key identifier, use key-enum to get a list of these.
+
</pre>
+
=== license-list [lic-list] ===
+
Returns a list of all the registered license keys.
+
 
+
=== license-add [lic-add] ===
+
Adds a license key using a license key block specified in a key file.
+
<pre>
+
<--key-file>    :: Key file you recieved which contains a key block section.
+
</pre>
+
=== license-remove [lic-remove] ===
+
Removes the specified license key.
+
<pre>
+
<--key>          :: Unique license key identifier, use key-enum to get a list of these.
+
</pre>
+
=== license-activate [lic-act] ===
+
Activates the system using a activation key received from customer support.
+
<pre>
+
<--activation-key> :: Activation key you'll receive from customer support after you send the
+
                            activation request code.
+
</pre>
+
=== license-activate-online [lic-aon] ===
+
Requests automatic activation via the online OS NEXUS license activation service.
+
<pre>
+
<--key>          :: Unique license key identifier, use key-enum to get a list of these.
+
</pre>
+
 
+
==User Management Commands==
+
=== user-add [u-add] ===
+
Adds a new user account to the system.  Note that this does *not* result in a new console account from which you can SSH into the system.  This is a management account which allows you to use the qs CLI remotely and/or login via the QuantaStor Manager web interface for managing the system.
+
<pre>
+
<--name>        :: User names may include any alpha-numeric characters '_' and '-', no
+
                            spaces are allowed.
+
<--password>    :: A password for the user to use when accessing the QuantaStor management
+
                            interface.
+
[--first-name]  :: User's first name; enclose in double-quotes if it contains spaces.
+
[--last-name]    :: User's last name; enclose in double-quotes if it contains spaces.
+
[--email]        :: An email address of the form 'user@example.com' without the quotes.
+
[--role]        :: Name of a security role or its unique ID (GUID).
+
[--desc]        :: A description for the object.
+
[--default-chap-user] :: Default CHAP username for storage volumes owned by a user account which
+
                            have the CHAP policy set to 'use user default CHAP settings'
+
[--default-chap-pass] :: Default CHAP password for storage volumes owned by a user account which
+
                            have the CHAP policy set to 'use user default CHAP settings'
+
[--alerts]      :: Alert types to subscribe to. Alerts at the subscribed level are sent to
+
                            the user's email address automatically when a SMTP server is configured.
+
                            [critical, error, info, *none, warning]
+
</pre>
+
=== user-modify [u-modify] ===
+
Modifies the specified user name, role, and/or description.
+
<pre>
+
<--user>        :: Name or ID (GUID) of a existing user.
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--role]        :: Name of a security role or its unique ID (GUID).
+
[--desc]        :: A description for the object.
+
[--default-chap-user] :: Default CHAP username for storage volumes owned by a user account which
+
                            have the CHAP policy set to 'use user default CHAP settings'
+
[--default-chap-pass] :: Default CHAP password for storage volumes owned by a user account which
+
                            have the CHAP policy set to 'use user default CHAP settings'
+
</pre>
+
=== user-password-set [passwd] ===
+
Changes the password for the specified user
+
<pre>
+
<--user>        :: Name or ID (GUID) of a existing user.
+
<--new-password> :: New password for the user.
+
<--old-password> :: Old password for the user.
+
</pre>
+
=== user-remove [u-remove] ===
+
Removes the specified user identified by name or ID.
+
<pre>
+
<--user>        :: Name or ID (GUID) of a existing user.
+
</pre>
+
=== user-list [u-list] ===
+
Returns a list of all the users.
+
 
+
=== user-get [u-get] ===
+
Gets information about the specified user.
+
<pre>
+
<--user>        :: Name or ID (GUID) of a existing user.
+
</pre>
+
 
+
==User Group Management Commands==
+
=== user-group-create [ug-create] ===
+
Creates a new storage user group comprised of the specified storage users.  User groups make it easier to manage large numbers of storage clouds.
+
<pre>
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
<--user-list>    :: A list of one or more users.
+
[--desc]        :: A description for the object.
+
[--flags]        :: Optional flags for the operation. [async]
+
</pre>
+
=== user-group-modify [ug-modify] ===
+
Modifies the name and/or description of a storage user group.
+
<pre>
+
<--user-group>  :: An arbirary group of one or more users.
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
</pre>
+
=== user-group-delete [ug-delete] ===
+
Deletes a storage user group, the users are not deleted unless the delete-users flag is set.
+
<pre>
+
<--user-group>  :: An arbirary group of one or more users.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
</pre>
+
=== user-group-list [ug-list] ===
+
Returns a list of all the storage user groups.
+
 
+
=== user-group-get [ug-get] ===
+
Returns information about a specific storage user group.
+
<pre>
+
<--user-group>  :: An arbirary group of one or more users.
+
</pre>
+
=== user-group-user-add [ugu-add] ===
+
Adds one or more users to the specified user group.
+
<pre>
+
<--user-group>  :: An arbirary group of one or more users.
+
<--user-list>    :: A list of one or more users.
+
</pre>
+
=== user-group-user-remove [ugu-remove] ===
+
Removes one or more users from the specified user group
+
<pre>
+
<--user-group>  :: An arbirary group of one or more users.
+
<--user-list>    :: A list of one or more users.
+
</pre>
+
 
+
==Role Based Access Control Management Commands==
+
=== role-add [r-add] ===
+
Adds a new role to the role based access control (RBAC) system.
+
<pre>
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
[--permissions]  :: List of permissions and/or permission groups to add to the specified
+
                            role.
+
</pre>
+
=== role-modify [r-modify] ===
+
Modifies the name and/or description of a role
+
<pre>
+
<--role>        :: Name of a security role or its unique ID (GUID).
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
</pre>
+
=== role-remove [r-remove] ===
+
Removes the specified role identified by name or ID
+
<pre>
+
<--role>        :: Name of a security role or its unique ID (GUID).
+
</pre>
+
=== role-list [r-list] ===
+
Returns a list of all the defined roles the RBAC system.
+
 
+
=== role-get [r-get] ===
+
Gets information about the specified role.
+
<pre>
+
<--role>        :: Name of a security role or its unique ID (GUID).
+
</pre>
+
=== role-permission-add [rp-add] ===
+
Adds additional permissions and/or permission groups to the specified role.
+
<pre>
+
<--role>        :: Name of a security role or its unique ID (GUID).
+
<--permissions>  :: List of permissions and/or permission groups to add to the specified
+
                            role.
+
</pre>
+
=== role-permission-remove [rp-remove] ===
+
Removes one or more permissions and/or permission groups from the specified role.
+
<pre>
+
<--role>        :: Name of a security role or its unique ID (GUID).
+
<--permissions>  :: List of permissions and/or permission groups to add to the specified
+
                            role.
+
</pre>
+
 
+
==Session Commands==
+
=== session-list [sn-list] ===
+
      :: Returns a list of all the active iSCSI sessions.
+
<pre>
+
[--volume]      :: Name of the storage volume or its unique ID (GUID).
+
[--host]        :: Name of the host or its unique ID (GUID).
+
</pre>
+
=== session-get [sn-get] ===
+
      :: Returns detailed information on a specific iSCSI session.
+
<pre>
+
<--session>      :: iSCSI session identifier for an active iSCSI session.
+
</pre>
+
=== session-close [sn-close]
+
      :: Forcably closes the specified iSCSI session; generally not recommended, use acl-remove
+
        instead.
+
<pre>
+
<--session>      :: iSCSI session identifier for an active iSCSI session.
+
</pre>
+
==Storage Volume Access Control Commands==
+
=== acl-add [acl-add]
+
      :: Enables access to the specific volume from the specified host.
+
<pre>
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
<--host-list>    :: A list of one or more hosts by name or ID.
+
</pre>
+
=== acl-remove [acl-remove]
+
      :: Disables access to the specific volume from the specified host.
+
<pre>
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
<--host-list>    :: A list of one or more hosts by name or ID.
+
</pre>
+
=== acl-list [acl-list]
+
      :: Returns a list of all the volume to host assignments, optionally filtered by host or
+
        storage volume.
+
<pre>
+
[--volume]      :: Name of the storage volume or its unique ID (GUID).
+
[--host]        :: Name of the host or its unique ID (GUID).
+
</pre>
+
 
+
=== host-add [h-add]
+
      :: Adds the specified host.
+
<pre>
+
<--hostname>    :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--iqn]          :: IQN (iSCSI Qualified Name) of the host's iSCSI initiator
+
[--ip-address]  :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--desc]        :: A description for the object.
+
[--username]    :: Administrator user name for the host, typically 'Administrator' for
+
                            Windows hosts.
+
[--password]    :: Administrator password for the host; enables auto-configuration of
+
                            host's iSCSI initiator.
+
[--host-type]    :: Operating system type of the host. [aix, hpux, linux, other, solaris,
+
                            vmware, *windows, xenserver]
+
[--flags]        :: Optional flags for the operation. [async]
+
</pre>
+
=== host-modify [h-modify] ===
+
      :: Modifies a host.
+
<pre>
+
<--host>        :: Name of the host or its unique ID (GUID).
+
[--desc]        :: A description for the object.
+
[--ip-address]  :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--username]    :: Administrator user name for the host, typically 'Administrator' for
+
                            Windows hosts.
+
[--password]    :: Administrator password for the host; enables auto-configuration of
+
                            host's iSCSI initiator.
+
[--host-type]    :: Operating system type of the host. [aix, hpux, linux, other, solaris,
+
                            vmware, *windows, xenserver]
+
[--flags]        :: Optional flags for the operation. [async]
+
</pre>
+
=== host-remove [h-remove] ===
+
      :: Removes the specified host, *WARNING* host's active iSCSI sessions will be dropped.
+
<--host>        :: Name of the host or its unique ID (GUID).
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== host-list [h-list] ===
+
      :: Returns a list of all the hosts.
+
 
+
=== host-get [h-get] ===
+
      :: Gets information about a specific host.
+
<--host>        :: Name of the host or its unique ID (GUID).
+
 
+
=== host-initiator-get [hi-get] ===
+
      :: Gets information about a specific host identified by its initiator IQN.
+
<--iqn>          :: IQN (iSCSI Qualified Name) of the host's iSCSI initiator
+
 
+
=== host-initiator-add [hi-add] ===
+
      :: Adds an additional iSCSI host initiator IQN to the specified host.
+
<--host>        :: Name of the host or its unique ID (GUID).
+
<--iqn>          :: IQN (iSCSI Qualified Name) of the host's iSCSI initiator
+
 
+
=== host-initiator-remove [hi-remove] ===
+
      :: Removes a iSCSI host initiator (IQN) from the specified host.
+
<--host>        :: Name of the host or its unique ID (GUID).
+
<--iqn>          :: IQN (iSCSI Qualified Name) of the host's iSCSI initiator
+
 
+
=== host-group-create [hg-create] ===
+
      :: Creates a new host group with the specified name.
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
<--host-list>    :: A list of one or more hosts by name or ID.
+
[--desc]        :: A description for the object.
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== host-group-modify [hg-modify] ===
+
      :: Modifies the properties of a host group such as its name and/or description.
+
<--host-group>  :: An arbitrary collection of hosts used to simplify volume ACL management
+
                            for clusters and other groups of hosts.
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
 
+
=== host-group-delete [hg-delete] ===
+
      :: Removes the specified host group.
+
<--host-group>  :: An arbitrary collection of hosts used to simplify volume ACL management
+
                            for clusters and other groups of hosts.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== host-group-list [hg-list] ===
+
      :: Returns a list of all the host groups.
+
 
+
=== host-group-get [hg-get] ===
+
      :: Gets information about a specific host group.
+
<--host-group>  :: An arbitrary collection of hosts used to simplify volume ACL management
+
                            for clusters and other groups of hosts.
+
 
+
=== host-group-host-add [hg-host-add] ===
+
      :: Adds a host to the specified host group.
+
<--host-group>  :: An arbitrary collection of hosts used to simplify volume ACL management
+
                            for clusters and other groups of hosts.
+
<--host-list>    :: A list of one or more hosts by name or ID.
+
 
+
=== host-group-host-remove [hg-host-remove] ===
+
      :: Removes a host from the specified host group.
+
<--host-group>  :: An arbitrary collection of hosts used to simplify volume ACL management
+
                            for clusters and other groups of hosts.
+
<--host-list>    :: A list of one or more hosts by name or ID.
+
 
+
=== system-get [s-get] ===
+
      :: Get general information about the storage system.
+
 
+
=== system-shutdown [s-shutdown] ===
+
      :: Shutdown the storage system.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== system-restart [s-restart] ===
+
      :: Restarts the entire storage system.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== system-modify [s-modify] ===
+
      :: Modifies the name and/or description of the storage system.
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
[--location]    :: Optional description indicating the location of the storage system.
+
[--domain]      :: The domain name suffix for your network such as example.com
+
[--search]      :: The default domain search suffix for your network such as example.com
+
[--arp-filter-mode] :: ARP filtering should be enabled when you have more than one network card
+
                            on the same network. [*auto, disabled, enabled]
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== target-port-get [tp-get] ===
+
      :: Returns information about the specified target port.
+
<--port>        :: Name or MAC address of the target port.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== target-port-list [tp-list] ===
+
      :: Returns a list of all the target ports in the system.
+
 
+
=== target-port-restart [tp-restart] ===
+
      :: Restarts the specified target port.
+
<--port>        :: Name or MAC address of the target port.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== target-port-disable [tp-disable] ===
+
      :: Disables the specified target port.
+
<--port>        :: Name or MAC address of the target port.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== target-port-enable [tp-enable] ===
+
      :: Enables the specified target port.
+
<--port>        :: Name or MAC address of the target port.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== target-port-rescan [tp-rescan] ===
+
      :: Discovers new target ports and/or any manual modifiations made to the configuration of the
+
        target ports.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== target-port-modify [tp-modify] ===
+
      :: Modifies target port settings including IP address, gateway, mtu, etc.
+
<--port>        :: Name or MAC address of a target port, or 'all' to modify all ports.
+
[--port-type]    :: Port configuration type. (static, dhcp)
+
[--ip-address]  :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--netmask]      :: Subnet IP mask (ex: 255.255.255.0)
+
[--gateway]      :: IP address of the network gateway
+
[--mtu]          :: Maximum transmission unit (MTU) for the target port, commonly set to
+
                            9000 to enable jumbo frames.
+
[--iscsi-enable] :: Enables or disables iSCSI access to the specified port(s).
+
[--desc]        :: A description for the object.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
=== pool-create [p-create] ===
+
      :: Creates a new storage pool from which storage volumes can be created.
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
<--disk-list>    :: List of physical drives to be grouped together to create the new storage
+
                            pool.
+
[--raid-type]    :: RAID type for the storage pool. [*AUTO, RAID0, RAID1, RAID5, RAID6]
+
[--pool-type]    :: The type of storage pool to be created. [*btrfs, ext4, jfs, xfs]
+
[--desc]        :: A description for the object.
+
[--is-default]  :: Indicates that this pool should be utilized as the default storage pool.
+
[--ssd]          :: Enable solid state disk (SSD) storage pool optimizations.
+
[--compress]    :: Enable storage volume compression on the pool, this boosts both read and
+
                            write performance on most IO loads.
+
[--nobarriers]  :: Enable storage pool write optimizations.  This requires that you have a
+
                            hardware controller with a battery backup unit.
+
[--profile]      :: Specifies an optional IO optimization profile for the storage pool. 
+
                            Storage pool profiles control elements like read-ahead, queue depth and
+
                            other device configurables.
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== pool-grow [p-grow] ===
+
      :: Grows the specified storage pool by adding an additional disk.  You can only grow storage
+
        pools that are using the RAID5 or RAID6 layout.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
<--disk-list>    :: List of physical drives to be grouped together to create the new storage
+
                            pool.
+
[--raid-type]    :: RAID type for the storage pool. [*AUTO, RAID0, RAID1, RAID5, RAID6]
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== pool-add-spare [p-add] ===
+
      :: Adds a dedicated hot-spare to the specified storage pool.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
<--disk-list>    :: List of physical drives to be grouped together to create the new storage
+
                            pool.
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== pool-remove-spare [p-remove] ===
+
      :: Removes the specified hot-spare from the specified pool.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
<--disk-list>    :: List of physical drives to be grouped together to create the new storage
+
                            pool.
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== pool-modify [p-modify] ===
+
      :: Modifies the properties of the storage pool such as it's name and decription.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--is-default]  :: Indicates that this pool should be utilized as the default storage pool.
+
[--ssd]          :: Enable solid state disk (SSD) storage pool optimizations.
+
[--compress]    :: Enable storage volume compression on the pool, this boosts both read and
+
                            write performance on most IO loads.
+
[--nobarriers]  :: Enable storage pool write optimizations.  This requires that you have a
+
                            hardware controller with a battery backup unit.
+
[--profile]      :: Specifies an optional IO optimization profile for the storage pool. 
+
                            Storage pool profiles control elements like read-ahead, queue depth and
+
                            other device configurables.
+
[--desc]        :: A description for the object.
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== pool-destroy [p-destroy] ===
+
      :: Deletes a storage pool, *WARNING* any data in the pool will be lost.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== pool-start [p-start] ===
+
      :: Starts up a previously stopped storage pool.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
 
+
=== pool-stop [p-stop] ===
+
      :: Stops all volume activity to the pool and disables it for maintenance.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
 
+
=== pool-export [p-export] ===
+
      :: Deactivate and removes the storage pool from the storage system database so that it can be
+
        exported and used on another system.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
 
+
=== pool-list [p-list] ===
+
      :: Returns a list of all the storage pools.
+
 
+
=== pool-get [p-get] ===
+
      :: Gets information about a specific storage pool.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
 
+
=== pool-identify [p-id] ===
+
      :: Pulses the disk activity lights for all disks in the pool so they can be identified in the
+
        chassis.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
[--pattern]      :: Pattern to flash the disk LED lights in, p = short pulse, P = long
+
                            pluse, d = short delay, D = long delay, ex: pattern=pppD
+
[--duration]    :: Duration in seconds to repeat the disk identification pattern.
+
 
+
=== disk-list [d-list] ===
+
      :: Enumerates all physical disks.
+
 
+
=== disk-scan [d-scan] ===
+
      :: Scans for any new physical disks that may have been hot-plugged into the storage system.
+
 
+
=== disk-get [d-get] ===
+
      :: Gets information about a specific physical disk.
+
<--disk>        :: Name of the physical disk or its unique ID/serial number.
+
 
+
=== disk-identify [d-id] ===
+
      :: Pulses the disk activity light so that the specified disk can be identified in the cassis.
+
<--disk>        :: Name of the physical disk or its unique ID/serial number.
+
[--pattern]      :: Pattern to flash the disk LED lights in, p = short pulse, P = long
+
                            pluse, d = short delay, D = long delay, ex: pattern=pppD
+
[--duration]    :: Duration in seconds to repeat the disk identification pattern.
+
 
+
=== volume-create [v-create] ===
+
      :: Creates a new storage volume in the specified storage pool.
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
<--size>        :: Size may be specified in MiB, GiB, or TiB. examples: 4G, 100M, 1.4T
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
[--desc]        :: A description for the object.
+
[--thin]        :: Thin provision (sparse allocate) the storage volume.
+
[--access-mode]  :: Access mode for the volume. [none, readonly, *readwrite]
+
[--chap-policy]  :: CHAP setting can be 'target' which is unique to a storage volume, 'user'
+
                            or 'resource-group' which inherits the chap user/pass from your user
+
                            account or storage cloud respectively. [*disabled,
+
                            resource-group-defaults, target, user-defaults]
+
[--chap-user]    :: An optional iSCSI CHAP username.
+
[--chap-pass]    :: An optional iSCSI CHAP password.
+
[--count]        :: The number of volumes to create, default is 1.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-modify [v-modify] ===
+
      :: Modifies a the name, description or other properties of the storage volume.
+
<--volume>      :: volume
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
[--access-mode]  :: Access mode for the volume. [none, readonly, *readwrite]
+
[--flags]        :: Optional flags for the operation. [async]
+
[--chap-policy]  :: CHAP setting can be 'target' which is unique to a storage volume, 'user'
+
                            or 'resource-group' which inherits the chap user/pass from your user
+
                            account or storage cloud respectively. [*disabled,
+
                            resource-group-defaults, target, user-defaults]
+
[--chap-user]    :: An optional iSCSI CHAP username.
+
[--chap-pass]    :: An optional iSCSI CHAP password.
+
[--clear-snap-flag] :: Promotes a snapshot volume to standard (non-snapshot) volume.
+
 
+
=== volume-delete [v-delete] ===
+
      :: Deletes a storage volume, *WARNING* any data in the volume will be lost.
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-resize [v-resize] ===
+
      :: Resizes a storage volume to make it larger, volumes cannot be reduced in size.
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
<--new-size>    :: New larger size for the volume specified in MiB, GiB, or TiB. examples:
+
                            4G, 100M, 1.4T
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-restore [v-restore] ===
+
      :: Restores a storage volume to a previous point in time using a snapshot.
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
<--snapshot>    :: Name or ID of a snapshot volume to use as the restore point.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-list [v-list] ===
+
      :: Returns a list of all the storage volumes.
+
 
+
=== volume-get [v-get] ===
+
      :: Returns information about a specific storage volume.
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
 
+
=== volume-snapshot [v-snap] ===
+
      :: Creates a space efficient copy of the source volume.
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
[--name]        :: Name for the snapshot, if not provided the source volume name will be
+
                            used as a prefix.
+
[--desc]        :: A description for the object.
+
[--access-mode]  :: Access mode for the volume. [none, readonly, *readwrite]
+
[--count]        :: The number of snapshots of the specified volume to create, default is 1.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-clone [v-clone] ===
+
      :: Creates a complete block copy of the source volume.
+
<--volume>      :: Name of the storage volume or its unique ID (GUID).
+
[--name]        :: Name for the clone, if not provided the source volume name will be used
+
                            as a prefix.
+
[--desc]        :: A description for the object.
+
[--access-mode]  :: Access mode for the volume. [none, readonly, *readwrite]
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-utilization-list [vu-list] ===
+
      :: Returns volume utilization information for a specific storage volume or all storage volumes
+
        if no volume is specified.
+
[--volume]      :: Name of the storage volume or its unique ID (GUID).
+
 
+
=== volume-utilization-get [vu-get] ===
+
      :: Returns a specific volume utilization metrics for a single volume and specific date.
+
<--id>          :: Unique identifer (GUID) for the object.
+
 
+
=== volume-group-create [vg-create] ===
+
      :: Creates a new storage volume group comprised of the specified storage volumes
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
<--volume-list>  :: A list of one or more storage volumes.
+
[--desc]        :: A description for the object.
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
=== volume-group-modify [vg-modify] ===
+
      :: Modifies the name and/or description of a storage volume group.
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
 
+
=== volume-group-delete [vg-delete] ===
+
      :: Deletes a storage volume group, the volumes are not deleted unless the delete-volumes flag
+
        is set.
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
[--destroy-volumes] :: If 'true' all the volumes in the group will be deleted with the volume
+
                            group, default is 'false'.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-group-snapshot [vg-snap] ===
+
      :: Creates a space efficient copy of all volumes in the group.
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
[--name-suffix]  :: Name for the snapshot/clone; if unspecified the snapshot/clone will use
+
                            the original name with '_snapNN'/'_cloneNN' appended.
+
[--desc]        :: A description for the object.
+
[--access-mode]  :: Access mode for the volume. [none, readonly, *readwrite]
+
[--count]        :: The number of snapshots of the specified volume to create, default is 1.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-group-clone [vg-clone] ===
+
      :: Creates a complete block by block copy of all volumes in the group.
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
[--pool]        :: Name of the storage pool or its unique ID (GUID).
+
[--name-suffix]  :: Name for the snapshot/clone; if unspecified the snapshot/clone will use
+
                            the original name with '_snapNN'/'_cloneNN' appended.
+
[--desc]        :: A description for the object.
+
[--access-mode]  :: Access mode for the volume. [none, readonly, *readwrite]
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
=== volume-group-list [vg-list] ===
+
      :: Returns a list of all the storage volume groups.
+
 
+
=== volume-group-get [vg-get] ===
+
      :: Returns information about a specific storage volume group.
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
 
+
    volume-group-volume-add [vgv-add]
+
      :: Adds one or more volumes to the specified volume group.
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
<--volume-list>  :: A list of one or more storage volumes.
+
 
+
    volume-group-volume-remove [vgv-remove]
+
      :: Removes one or more volumes from the specified volume group
+
<--volume-group> :: An arbirary group of one or more storage volumes.
+
<--volume-list>  :: A list of one or more storage volumes.
+
 
+
    snap-schedule-create [sch-create]
+
      :: Creates a new snapshot schedule comprised of the specified storage volumes
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--volume-list]  :: A list of one or more storage volumes.
+
[--share-list]  :: A list of one or more network shares.
+
[--start-date]  :: Start date at which the system will begin creating snapshots for a given
+
                            schedule.
+
[--enabled]      :: While the schedule is enabled snapshots will be taken at the designated
+
                            times.
+
[--desc]        :: A description for the object.
+
[--quota]        :: Name or ID of a storage quota.
+
[--max-snaps]    :: Maximum number of snapshots to retain for this schedule, after which the
+
                            oldest snapshot is removed before a new one is created.
+
[--days]        :: The days of the week on which this schedule should create snapshots.
+
                            [fri, mon, sat, *sun, thu, tue, wed]
+
[--hours]        :: For the specified days of the week, snapshots will be created at the
+
                            specified hours. [10am, 10pm, 11am, 11pm, 12am, 12pm, 1am, 1pm, 2am, 2pm,
+
                            *3am, 3pm, 4am, 4pm, 5am, 5pm, 6am, 6pm, 7am, 7pm, 8am, 8pm, 9am, 9pm]
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
    snap-schedule-modify [sch-modify]
+
      :: Modifies the name, description or other properties of a snapshot schedule.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--start-date]  :: Start date at which the system will begin creating snapshots for a given
+
                            schedule.
+
[--enabled]      :: While the schedule is enabled snapshots will be taken at the designated
+
                            times.
+
[--desc]        :: A description for the object.
+
[--quota]        :: Name or ID of a storage quota.
+
[--max-snaps]    :: Maximum number of snapshots to retain for this schedule, after which the
+
                            oldest snapshot is removed before a new one is created.
+
[--days]        :: The days of the week on which this schedule should create snapshots.
+
                            [fri, mon, sat, *sun, thu, tue, wed]
+
[--hours]        :: For the specified days of the week, snapshots will be created at the
+
                            specified hours. [10am, 10pm, 11am, 11pm, 12am, 12pm, 1am, 1pm, 2am, 2pm,
+
                            *3am, 3pm, 4am, 4pm, 5am, 5pm, 6am, 6pm, 7am, 7pm, 8am, 8pm, 9am, 9pm]
+
[--flags]        :: Optional flags for the operation. [async]
+
 
+
    snap-schedule-delete [sch-delete]
+
      :: Deletes a snapshot schedule, snapshots associated with the schedule are not removed.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    snap-schedule-enable [sch-enable]
+
      :: Enables the specified snapshot schedule.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    snap-schedule-disable [sch-disable]
+
      :: Disables the specified snapshot schedule.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    snap-schedule-list [sch-list]
+
      :: Returns a list of all the snapshot schedules.
+
 
+
    snap-schedule-get [sch-get]
+
      :: Returns information about a specific snapshot schedule.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
 
+
    snap-schedule-volume-add [sch-v-add]
+
      :: Adds one or more volumes to the specified schedule.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
[--volume-list]  :: A list of one or more storage volumes.
+
[--share-list]  :: A list of one or more network shares.
+
 
+
    snap-schedule-volume-remove [sch-v-remove]
+
      :: Removes one or more volumes from the specified schedule.
+
<--schedule>    :: Name of a snapshot schedule or its unique ID (GUID).
+
[--volume-list]  :: A list of one or more storage volumes.
+
[--share-list]  :: A list of one or more network shares.
+
 
+
    link-get [sl-get]
+
      :: Get information about the storage system link.
+
<--link>        :: Storage system link ID or name.
+
 
+
    link-list [sl-list]
+
      :: List the existing storage system remote replication links.
+
 
+
    link-delete [sl-delete]
+
      :: Delete an existing storage system link.
+
<--link>        :: Storage system link ID or name.
+
 
+
    link-create [sl-create]
+
      :: Create a new storage system link so that storage volumes may be replicated between storage
+
        systems.
+
<--remote-ip>    :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--remote-admin] :: Remote admin user account to establish remote storage system link with.
+
[--remote-passwd] :: Remote admin user password.
+
[--local-ip]    :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--bw-limit]    :: Limits the replication bandwidth between two storage systems to a set
+
                            level specified in units of kilobytes per second (KB/sec). Specify 0 to
+
                            indicate no limit.
+
[--link-type]    :: Type of storage system link to establish.
+
[--desc]        :: A description for the object.
+
 
+
    link-modify [sl-modify]
+
      :: Modify the properties of the storage system link.
+
<--link>        :: Storage system link ID or name.
+
<--remote-ip>    :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--local-ip]    :: IP Address of the host being added; if unspecified the service will look
+
                            it up.
+
[--desc]        :: A description for the object.
+
[--bw-limit]    :: Limits the replication bandwidth between two storage systems to a set
+
                            level specified in units of kilobytes per second (KB/sec). Specify 0 to
+
                            indicate no limit.
+
[--link-type]    :: Type of storage system link to establish.
+
 
+
    link-set-credentials [sl-setcred]
+
      :: Change the credentials for an existing storage system link.
+
<--link>        :: Storage system link ID or name.
+
[--remote-admin] :: Remote admin user account to establish remote storage system link with.
+
[--remote-passwd] :: Remote admin user password.
+
 
+
    hw-controller-group-list [hwcg-list]
+
      :: Returns a list of all the hardware controller groups.
+
 
+
    hw-controller-group-get [hwcg-get]
+
      :: Returns information about all the support hardware RAID controller group types.
+
<--controller-group> :: Name or ID of a hardware RAID controller group.
+
 
+
    hw-controller-list [hwc-list]
+
      :: Returns a list of all the hardware controllers.
+
[--controller-group] :: Name or ID of a hardware RAID controller group.
+
 
+
    hw-controller-get [hwc-get]
+
      :: Returns information about a specific hardware RAID controller.
+
<--controller>  :: Name or ID of a hardware RAID controller.
+
 
+
    hw-controller-rescan [hwc-rescan]
+
      :: Rescans the hardware controller to look for new disks and RAID units.
+
<--controller>  :: Name or ID of a hardware RAID controller.
+
 
+
    hw-enclosure-list [hwe-list]
+
      :: Returns a list of all the enclosures managed by the specified hardware RAID controller.
+
[--controller]  :: Name or ID of a hardware RAID controller.
+
 
+
    hw-enclosure-get [hwe-get]
+
      :: Returns information about a specific enclosure managed by the specified hardware RAID
+
        controller.
+
<--enclosure>    :: Name of a hardware RAID enclosure or it unique ID.
+
 
+
    hw-unit-list [hwu-list]
+
      :: Returns a list of all the RAID units managed by the specified hardware controller.
+
[--controller]  :: Name or ID of a hardware RAID controller.
+
 
+
    hw-unit-get [hwu-get]
+
      :: Returns information about a specific RAID unit managed by the specified hardware RAID
+
        controller.
+
<--unit>        :: Name of a hardware RAID unit or it unique ID.
+
 
+
    hw-unit-identify [hwu-identify]
+
      :: Flashes the LED indicator light on all the disks in the RAID unit so that it can be
+
        identified in the enclosure.
+
<--unit>        :: Name of a hardware RAID unit or it unique ID.
+
[--duration]    :: Duration in seconds to repeat the disk identification pattern.
+
 
+
    hw-unit-create [hwu-create]
+
      :: Creates a new hardware RAID unit using the specified controller.
+
<--controller>  :: Name or ID of a hardware RAID controller.
+
<--raid-type>    :: RAID type for the storage pool. [*AUTO, RAID0, RAID1, RAID5, RAID6]
+
<--disk-list>    :: Specifies one or more physical disks connected to a hardware RAID
+
                            controller. Use 'all' to indicate all unused disks.
+
[--flags]        :: Optional flags for the operation. [async, force, *none]
+
 
+
    hw-unit-delete [hwu-delete]
+
      :: Deletes the specified RAID unit.  Note that you must first delete the Storage Pool before
+
        you delete the RAID unit.
+
<--unit>        :: Name of a hardware RAID unit or it unique ID.
+
[--duration]    :: Duration in seconds to repeat the disk identification pattern.
+
 
+
    hw-disk-identify [hwd-identify]
+
      :: Flashes the LED indicator light on the specified disk so that it can be identified in the
+
        enclosure chassis.
+
<--unit>        :: Name of a hardware RAID unit or it unique ID.
+
[--duration]    :: Duration in seconds to repeat the disk identification pattern.
+
 
+
    hw-disk-delete [hwd-delete]
+
      :: Marks the specified disk so that it can be removed from the enclosure.  Disks marked as
+
        hot-spares will return to normal status after being deleted.
+
<--disk>        :: Specifies a physical disk connected to a hardware RAID controller.
+
[--duration]    :: Duration in seconds to repeat the disk identification pattern.
+
 
+
    hw-disk-list [hwd-list]
+
      :: Returns a list of all the disks managed by the specified hardware controller.
+
[--controller]  :: Name or ID of a hardware RAID controller.
+
 
+
    hw-disk-get [hwd-get]
+
      :: Returns information about a specific disk managed by a hardware RAID controller.
+
<--disk>        :: Specifies a physical disk connected to a hardware RAID controller.
+
 
+
    hw-disk-mark-spare [hwd-mark-spare]
+
      :: Marks the specified disk as a universal hot spare within the group of RAID units managed by
+
        the controller in which the disk is attached.
+
<--disk>        :: Specifies a physical disk connected to a hardware RAID controller.
+
 
+
    hw-alarm-list [hwa-list]
+
      :: Returns a list of all the current hardware alarms/alert messages generated from the
+
        controller.
+
[--controller]  :: Name or ID of a hardware RAID controller.
+
 
+
    hw-alarm-get [hwa-get]
+
      :: Returns information about a specific hardware alarm.
+
<--id>          :: Unique identifer (GUID) for the object.
+
 
+
    hw-alarm-clear-all [hwa-clear-all]
+
      :: Clears all the hardware alarms that have been recorded for the specified hardware RAID
+
        controller.
+
<--controller>  :: Name or ID of a hardware RAID controller.
+
 
+
    share-create [shr-create]
+
      :: Creates a new NFSv3 network share.
+
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
<--pool>        :: Name of the storage pool or its unique ID (GUID).
+
[--desc]        :: A description for the object.
+
[--public]      :: Indicates that the specified network share should be made public and
+
                            open for read/write access to all systems on the network.
+
[--active]      :: Indicates that the network share should be activated.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    share-modify [shr-modify]
+
      :: Modifies the properties of the specified network share.
+
<--share>        :: share
+
[--name]        :: Names may include any alpha-numeric characters '_' and '-', spaces are
+
                            not allowed.
+
[--desc]        :: A description for the object.
+
[--public]      :: Indicates that the specified network share should be made public and
+
                            open for read/write access to all systems on the network.
+
[--active]      :: Indicates that the network share should be activated.
+
 
+
    share-delete [shr-delete]
+
      :: Deletes the specified network share
+
<--share>        :: Name or ID of a network share.
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    share-list [shr-list]
+
      :: Returns a list of all the network shares in the system.
+
 
+
    share-get [shr-get]
+
      :: Returns information about the specified network share.
+
<--share>        :: Name or ID of a network share.
+
 
+
    share-client-add [shr-cadd]
+
      :: Adds a client for the specified network share.
+
<--share>        :: share
+
<--filter>      :: A filter string for the client
+
[--async]        :: Use asynchronous communication between NFS server and client
+
[--secure]      :: Requires the requests to originate from an Internet port less than
+
                            IPPORT_RESERVED
+
[--subtree]      :: Enables subtree checking
+
[--rdonly]      :: Allow only read requests for the NFS volume
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    share-client-remove [shr-cremove]
+
      :: Removes a client for the specified network share.
+
<--share>        :: share
+
<--filter>      :: A filter string for the client
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    share-client-modify [shr-cmodify]
+
      :: Modifies a client for the specified network share.
+
<--share>        :: share
+
<--filter>      :: A filter string for the client
+
[--rdonly]      :: Allow only read requests for the NFS volume
+
[--secure]      :: Requires the requests to originate from an Internet port less than
+
                            IPPORT_RESERVED
+
[--async]        :: Use asynchronous communication between NFS server and client
+
[--subtree]      :: Enables subtree checking
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    share-client-enum [shr-cenum]
+
      :: Returns a list of clients for the specified network share.
+
<--share>        :: share
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    share-client-get [shr-cget]
+
      :: Returns information about the specific network share client.
+
<--share>        :: share
+
<--filter>      :: A filter string for the client
+
[--flags]        :: Optional flags for the operation. [async, force]
+
 
+
    cloud-backup-provider-get [cbp-get]
+
      :: Returns detailed information about the specified cloud provider.
+
<--provider>    :: A cloud provider is a storage provider like Amazon S3 which QuantaStor
+
                            utilizes for backup in the cloud.
+
 
+
    cloud-backup-provider-list [cbp-list]
+
      :: Returns the list of supported cloud providers.
+
 
+
    cloud-backup-credentials-add [cbcred-add]
+
      :: Adds cloud provider credentials to enable cloud backup to cloud backup containers.
+
<--access-key>  :: The access key provided by your cloud storage provider for accessing
+
                            your cloud storage account.
+
<--secret-key>  :: The secret key provided by your cloud storage provider for accessing
+
                            your cloud storage account.
+
  
    cloud-backup-credentials-remove [cbcred-remove]
+
; help : Display help for all commands. 'qs help' provides a verbose listing of all commands with their input parameters. Use 'qs help --min' for a compacted list of commands, or use 'qs help --category=<some category>' for help on aspecific category or command (for example, 'qs help --category=volume').
      :: Removes the specified cloud provider credentials
+
<--provider-creds> :: Credentials for accessing your cloud storage provider account.  With
+
                            Amazon S3 this is your 'Access Key ID' and your 'Secret Access Key'.
+
  
    cloud-backup-credentials-get [cbcred-get]  
+
<pre> qs help|h [--command=value ] [--category=value ] [--wiki=value ] [--api=value ] </pre>
      :: Returns information about the specified cloud provider credential.
+
{| cellspacing='0' cellpadding='5'
<--provider-creds> :: Credentials for accessing your cloud storage provider account. With
+
|-
                            Amazon S3 this is your 'Access Key ID' and your 'Secret Access Key'.
+
| &nbsp; || <tt>command</tt> || A specific CLI command to get detailed help with.
 +
|-
 +
| &nbsp; || <tt>category</tt> || Category of commands to get help with (acl, alert, host, host-group, license, role, session, schedule, pool, quota, system, volume, volume-group, task, user, user-group).
 +
|-
 +
| &nbsp; || <tt>wiki</tt> || Generates help output in a format that's importable into MediaWiki.
 +
|-
 +
| &nbsp; || <tt>api</tt> || Generates help output in a parsable format for automating API.
 +
|}
  
    cloud-backup-credentials-list [cbcred-list]
 
      :: Returns a list of all the cloud provider credentials in the system. Passwords are masked.
 
  
    cloud-backup-container-get [cbc-get]
+
; tc-commands : List of commands for tab completion
      :: Retruns detailed information on a specific cloud backup container.
+
<--container>    :: A cloud backup container into which storage volumes can be backed up.  A
+
                            cloud backup container is like an unlimited storage pool in the cloud.
+
  
    cloud-backup-container-list [cbc-list]  
+
<pre> qs tc-commands [--command=value ] </pre>
      :: Returns a list of cloud backup containers in the system.
+
{| cellspacing='0' cellpadding='5'
 +
|-
 +
| &nbsp; || <tt>command</tt> || Command to show method args for.
 +
|}
  
    cloud-backup-container-create [cbc-create]
+
=CLI Overview=
      :: Creates a cloud backup container into which cloud backups of storage volumes can be made.
+
The Command Reference covers the complete list of all operations accessible via the qs CLI utility (available on Linux, Windows, and is installed within the appliance).  All commands (with few exceptions) are available via the QuantaStor REST API, QuantaStor CLI, and QuantaStor Web Management interface. The CLI includes an XML output mode which can be utilized to integrate with scripts and other automated systems but for more advanced integrations we recommend using the QuantaStor REST APICLI commands have a short name and long time. When developing scripts it is recommended to use the long command names as it makes scripts easier to read and maintain.
<--name>        :: Names may include any alpha-numeric characters '_' and '-', spaces are  
+
                            not allowed.
+
<--desc>        :: A description for the object.
+
<--provider-creds> :: Credentials for accessing your cloud storage provider accountWith
+
                            Amazon S3 this is your 'Access Key ID' and your 'Secret Access Key'.
+
<--locaiton>    :: Cloud storage provider endpoint location.
+
<--encryption-key> :: A passphrase which is used to encrypt all the data sent to the cloud
+
                            container.
+
  
    cloud-backup-container-delete [cbc-delete]
+
=CLI Command Reference Versions=
      :: Deletes the specified cloud backup container. WARNING, all data in the container will be
+
        destroyed.
+
<--container>    :: A cloud backup container into which storage volumes can be backed up.  A
+
                            cloud backup container is like an unlimited storage pool in the cloud.
+
  
    cloud-backup-container-add [cbc-add]
+
Each new release of QuantaStor CLI generates an updated specification which can be found belowAll effort is made to maintain backward compatibility between versions but we recommend that the XML mode be used for scripting.
      :: Recovers a cloud backup container that was previously removed or used with a prior
+
        installation.
+
<--provider-creds> :: Credentials for accessing your cloud storage provider accountWith
+
                            Amazon S3 this is your 'Access Key ID' and your 'Secret Access Key'.
+
<--locaiton>    :: Cloud storage provider endpoint location.
+
<--encryption-key> :: A passphrase which is used to encrypt all the data sent to the cloud
+
                            container.
+
<--storage-url>  :: The Amazon S3 or other storage URL used to identify a cloud backup
+
                            container.
+
  
    cloud-backup-container-remove [cbc-remove]
+
==[[QuantaStor CLI Command Reference v4.3]]==
      :: Removes the specified cloud backup container from the system but does not delete any backup
+
CHANGES: Adds commands for disk-multipath-config-add/list/remove/scan, site-cluster-restart-services, pool-add-write-log, pool-remove-write-log, replica-report-entry-get/list, replica-report-summary-get/list/delete, password-policy-get/set, share-session-get/list. session-list/get/close was renamed to volume-session-list/get/close, target-port commands are now network-port commandsTo maintain backward compatibility the old command names still work but are marked as deprecated.
        data in the cloud.
+
<--container>    :: A cloud backup container into which storage volumes can be backed upA
+
                            cloud backup container is like an unlimited storage pool in the cloud.
+
  
    cloud-backup-container-enable [cbc-enable]  
+
==[[QuantaStor CLI Command Reference v4.2]]==
      :: Enables a cloud container that was previously disabled or was inaccessible due to network
+
NOTES: QuantaStor v4.2 introduces new CLI commands for creation of pass-thru Storage Volumes so that NVMe and other physical devices and be presented directly to HA control nodes via iSCSI/FCAdditionally new commands are added for creation of Network Share aliases and sub-shares.
        connection issues.
+
<--container>    :: A cloud backup container into which storage volumes can be backed upA
+
                            cloud backup container is like an unlimited storage pool in the cloud.
+
  
    cloud-backup-container-disable [cbc-disable]
+
==[[QuantaStor CLI Command Reference v4.1 and earlier]]==
      :: Disables access to the specified cloud container without having to remove it.
+
<--container>    :: A cloud backup container into which storage volumes can be backed up.  A
+
                            cloud backup container is like an unlimited storage pool in the cloud.
+

Revision as of 19:00, 24 July 2017

The QuantaStor command line interface (CLI) can be used to remotely manage your QuantaStor based systems via a Windows or Linux system, and it is also a powerful tool for scripting the configuration and provisioning of storage volumes, network shares, and other resources. The command line utility for managing your QuantaStor system is called simply 'qs'. You can run 'qs' after logging into your QuantaStor system via an SSH connection, or you can download the QuantaStor Remote CLI client installer for Windows which is available for download from the OSNEXUS web site.

How to use the CLI

QuantaStor CLI is a full featured interface into all of the QuantaStor management features and can communicates with the local core management service as well as remote storage appliances.

Authentication

It is important to note that running the qs CLI locally as root affords no additional access privileges. Each command run via the CLI must include the --server specification which includes which server and what credentials should be used to access the appliance with.

Authentication via --server Argument

All CLI commands accept the server specification argument which is of this form:

[--server=ipaddress[,username,password]]

If you do not specify a username or password it will try to use the defaults which are 'admin' and 'password'.

Authentication via QS_SERVER Environment Variable

Rather than having to specify the --server argument over and over again you can set an environment variable once then it will use this as the default appliance IP address and credentials. The form of the variable is like so:

export QS_SERVER=ipaddress[,username,password]]

Examples:

export QS_SERVER=localhost,admin,password
export QS_SERVER=10.0.5.10,admin,mypass123
export QS_SERVER=myhostname.domain.net,mike,mypass123

Authentication via .qs.cnf Configuration File

Finally, rather than using an environment variable you can also create a file in your home directory called .qs.cnf with your credentials in it. Here's an example of how to create the file:

echo "192.168.0.10,admin,password" > ~/.qs.cnf
chmod 600 ~/.qs.cnf

Usage

The general usage format for all CLI commands is as follows:

    
qs command <-mandatory-arg=val> [-optional-arg=val] [-flags=force,async,...] [-server=ipaddress[,username,password]] [-xml] [-min] 

As you read through the CLI documentation note that all arguments that are specified in angle backets <> are mandatory required arguments. Arguments in square brackets [] are optional and you'll generally see the default argument specified in the documentation. Note that the qs CLI is installed on your QuantaStor system so you can run it from there, or from a Windows system using our Remote Management CLI Installer found on the downloads page. All commands can be run against a remote QuantaStor storage system using the --server= argument as outlined above.

Note also that anytime you must specify an object argument like host= volume= share= or others you can refer to the object by name or by its unique ID (UUID). For scripting it is always best to be more exact and use the UUID but it can be a big time-saver to be able to refer to objects by name as well, hence this capability.

Output Modes

XML Output Mode

Use --xml with any command to get the results in XML. Example:

qs disk-list --server=localhost,admin,password --xml
qs volume-list --server=localhost,admin,password

Minimal Output Mode

Use --min with any list or enumeration command where you want the results in a more compact format.

Interactive Mode

You can use the qs command line utility in an interactive mode where you will not have to run it from the shell each time. To enter the interactive mode just run the CLI like so:

qs i

To exit the interactive command line mode simply press CTRL-C to exit.

Built-in CLI Help

All of the commands covered in the documentation are also documented within the command line utility itself. Simply run the CLI with the 'help' argument to get the full list of all the different CLI commands. This list is pretty long so it's often best to pipe it to more
qs help | more
.

You can also use the help system to get information on a specific command:

    qs help command=CMD-NAME

As an example you can get help on how to use the pool-create command like so:

    qs help command=pool-create

Another way to get information on a group of commands is to specify a category. Help will then be printed for all commands that have a partial name match to the category specified. For example, to see all the commands that have 'pool' in their name:

    qs help category=pool

Or to see all list or get commands:

    qs help category=list
    qs help category=get

In this way you can reduce down help results to just what you need.

Remote System Specification

You can use the CLI to manage remote QuantaStor systems, but in such cases you'll need to specify the IP address and username/password of the remote storage system using the 'server' argument.

qs command [--server=ipaddress[,username,password]] [command-args]
example: qs disk-list --server=192.168.0.88,admin,password --xml

Note that the The service specification must be comma delimited with no spaces. If no username and password are supplied the default Administrator username 'admin' and the default password 'password' will be tried.

Command Error Code Definitions

For all commands a 0 is returned for SUCCESS and a non-zero error code is returned if there is a command failure. Use the --xml mode to get verbose detail on the error. Full list of error codes are available here.

Usage Examples

It's always nice to see some common examples of how the CLI can be used so here's a number of commands so you can see the general syntax of how the CLI is used. You'll notice that sometimes we specify arguments with a single hyphen (-), other times with the double hyphen (--) and sometimes it is omitted. All three are supported. The only hard rule is that the command name must be the first argument after the 'qs' command-line utility name. After that the arguments can be specified in any order with or without hyphens.

    qs help -min
    qs pool-list
    qs volume-list -xml
    qs volume-create name=vol1 size=100G pool=pool0
    qs volume-create vol1 100G pool0 -xml --server=192.168.0.88,admin,password 

Help Commands

help 
Display help for all commands. 'qs help' provides a verbose listing of all commands with their input parameters. Use 'qs help --min' for a compacted list of commands, or use 'qs help --category=<some category>' for help on aspecific category or command (for example, 'qs help --category=volume').
 qs help|h [--command=value ] [--category=value ] [--wiki=value ] [--api=value ] 
  command A specific CLI command to get detailed help with.
  category Category of commands to get help with (acl, alert, host, host-group, license, role, session, schedule, pool, quota, system, volume, volume-group, task, user, user-group).
  wiki Generates help output in a format that's importable into MediaWiki.
  api Generates help output in a parsable format for automating API.


tc-commands 
List of commands for tab completion
 qs tc-commands [--command=value ] 
  command Command to show method args for.

CLI Overview

The Command Reference covers the complete list of all operations accessible via the qs CLI utility (available on Linux, Windows, and is installed within the appliance). All commands (with few exceptions) are available via the QuantaStor REST API, QuantaStor CLI, and QuantaStor Web Management interface. The CLI includes an XML output mode which can be utilized to integrate with scripts and other automated systems but for more advanced integrations we recommend using the QuantaStor REST API. CLI commands have a short name and long time. When developing scripts it is recommended to use the long command names as it makes scripts easier to read and maintain.

CLI Command Reference Versions

Each new release of QuantaStor CLI generates an updated specification which can be found below. All effort is made to maintain backward compatibility between versions but we recommend that the XML mode be used for scripting.

QuantaStor CLI Command Reference v4.3

CHANGES: Adds commands for disk-multipath-config-add/list/remove/scan, site-cluster-restart-services, pool-add-write-log, pool-remove-write-log, replica-report-entry-get/list, replica-report-summary-get/list/delete, password-policy-get/set, share-session-get/list. session-list/get/close was renamed to volume-session-list/get/close, target-port commands are now network-port commands. To maintain backward compatibility the old command names still work but are marked as deprecated.

QuantaStor CLI Command Reference v4.2

NOTES: QuantaStor v4.2 introduces new CLI commands for creation of pass-thru Storage Volumes so that NVMe and other physical devices and be presented directly to HA control nodes via iSCSI/FC. Additionally new commands are added for creation of Network Share aliases and sub-shares.

QuantaStor CLI Command Reference v4.1 and earlier