The cinder.volume.drivers.zfssa.restclient Module

ZFS Storage Appliance REST API Client Programmatic Interface

exception RestClientError(status, name='ERR_INTERNAL', message=None)

Bases: exceptions.Exception

Exception for ZFS REST API client errors

class RestClientURL(url, **kwargs)

Bases: object

ZFSSA urllib client

delete(path, **kwargs)

Make an HTTP DELETE request

Parameters:path – Path to resource that will be deleted.
get(path, **kwargs)

Make an HTTP GET request

Parameters:path – Path to resource.
head(path, **kwargs)

Make an HTTP HEAD request

Parameters:path – Path to resource.
islogin()

return if client is login

login(auth_str)

Login to an appliance using a user name and password.

Start a session like what is done logging into the BUI. This is not a requirement to run REST commands, since the protocol is stateless. What is does is set up a cookie session so that some server side caching can be done. If login is used remember to call logout when finished.

Parameters:auth_str – Authorization string (base64)
logout()

Logout of an appliance

static mkpath(*args, **kwargs)

Make a path?query string for making a REST request

Cmd_params args:
 The path part
Cmd_params kwargs:
 The query part
post(path, body='', **kwargs)

Make an HTTP POST request

Parameters:
  • path – Path to resource.
  • body – Post data content
put(path, body='', **kwargs)

Make an HTTP PUT request

Parameters:
  • path – Path to resource.
  • body – Put data content
request(path, request, body=None, **kwargs)

Make an HTTP request and return the results

Parameters:
  • path – Path used with the initialized URL to make a request
  • request – HTTP request type (GET, POST, PUT, DELETE)
  • body – HTTP body of request
Key accept:

Set HTTP ‘Accept’ header with this value

Key base_path:

Override the base_path for this request

Key content:

Set HTTP ‘Content-Type’ header with this value

class RestResult(response=None, err=None)

Bases: object

Result from a REST API operation

get_header(name)

Get an HTTP header with the given name from the results

Parameters:name – HTTP header name
Returns:The header value or None if no value is found
class Status

Bases: object

Result HTTP Status

ACCEPTED = 202

Command accepted

BAD_REQUEST = 400

Bad Request

BUSY = 503

Service Unavailable

CONFLICT = 409

Invalid request

CREATED = 201

New resource created successfully

FORBIDDEN = 403

The request is not allowed

NOT_ALLOWED = 405

The request is not allowed

NOT_FOUND = 404

The requested resource was not found

NO_CONTENT = 204

Command returned OK but no data will be returned

OK = 200

Request return OK

TIMEOUT = 408

Request timed out

UNAUTHORIZED = 401

User is not authorized