summaryrefslogtreecommitdiff
path: root/openstackclient/common
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/common')
-rw-r--r--openstackclient/common/clientmanager.py25
-rw-r--r--openstackclient/common/command.py8
-rw-r--r--openstackclient/common/exceptions.py57
-rw-r--r--openstackclient/common/openstackkeyring.py26
-rw-r--r--openstackclient/common/utils.py4
5 files changed, 43 insertions, 77 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py
index f6f6642e..830ecde7 100644
--- a/openstackclient/common/clientmanager.py
+++ b/openstackclient/common/clientmanager.py
@@ -13,8 +13,7 @@
# under the License.
#
-"""Manage access to the clients, including authenticating when needed.
-"""
+"""Manage access to the clients, including authenticating when needed."""
import logging
@@ -22,13 +21,12 @@ from openstackclient.compute import client as compute_client
from openstackclient.identity import client as identity_client
from openstackclient.image import client as image_client
+
LOG = logging.getLogger(__name__)
class ClientCache(object):
- """Descriptor class for caching created client handles.
- """
-
+ """Descriptor class for caching created client handles."""
def __init__(self, factory):
self.factory = factory
self._handle = None
@@ -41,20 +39,14 @@ class ClientCache(object):
class ClientManager(object):
- """Manages access to API clients, including authentication.
- """
-
+ """Manages access to API clients, including authentication."""
compute = ClientCache(compute_client.make_client)
identity = ClientCache(identity_client.make_client)
image = ClientCache(image_client.make_client)
- def __init__(self, token=None, url=None,
- auth_url=None,
- tenant_name=None, tenant_id=None,
- username=None, password=None,
- region_name=None,
- api_version=None,
- ):
+ def __init__(self, token=None, url=None, auth_url=None, tenant_name=None,
+ tenant_id=None, username=None, password=None,
+ region_name=None, api_version=None):
self._token = token
self._url = url
self._auth_url = auth_url
@@ -74,8 +66,7 @@ class ClientManager(object):
return
def get_endpoint_for_service_type(self, service_type):
- """Return the endpoint URL for the service type.
- """
+ """Return the endpoint URL for the service type."""
# See if we are using password flow auth, i.e. we have a
# service catalog to select endpoints from
if self._service_catalog:
diff --git a/openstackclient/common/command.py b/openstackclient/common/command.py
index cfcb605c..64e855df 100644
--- a/openstackclient/common/command.py
+++ b/openstackclient/common/command.py
@@ -13,17 +13,13 @@
# under the License.
#
-"""
-OpenStack base command
-"""
+"""OpenStack base command"""
from cliff.command import Command
class OpenStackCommand(Command):
- """Base class for OpenStack commands
- """
-
+ """Base class for OpenStack commands."""
api = None
def run(self, parsed_args):
diff --git a/openstackclient/common/exceptions.py b/openstackclient/common/exceptions.py
index 9dfb4bc7..ab043db0 100644
--- a/openstackclient/common/exceptions.py
+++ b/openstackclient/common/exceptions.py
@@ -13,9 +13,7 @@
# under the License.
#
-"""
-Exception definitions.
-"""
+"""Exception definitions."""
class CommandError(Exception):
@@ -27,8 +25,7 @@ class AuthorizationFailure(Exception):
class NoTokenLookupException(Exception):
- """This form of authentication does not support looking up
- endpoints from an existing token."""
+ """This does not support looking up endpoints from an existing token."""
pass
@@ -38,15 +35,12 @@ class EndpointNotFound(Exception):
class UnsupportedVersion(Exception):
- """Indicates that the user is trying to use an unsupported
- version of the API"""
+ """The user is trying to use an unsupported version of the API"""
pass
class ClientException(Exception):
- """
- The base exception class for all exceptions this library raises.
- """
+ """The base exception class for all exceptions this library raises."""
def __init__(self, code, message=None, details=None):
self.code = code
self.message = message or self.__class__.message
@@ -57,59 +51,44 @@ class ClientException(Exception):
class BadRequest(ClientException):
- """
- HTTP 400 - Bad request: you sent some malformed data.
- """
+ """HTTP 400 - Bad request: you sent some malformed data."""
http_status = 400
message = "Bad request"
class Unauthorized(ClientException):
- """
- HTTP 401 - Unauthorized: bad credentials.
- """
+ """HTTP 401 - Unauthorized: bad credentials."""
http_status = 401
message = "Unauthorized"
class Forbidden(ClientException):
- """
- HTTP 403 - Forbidden: your credentials don't give you access to this
- resource.
- """
+ """HTTP 403 - Forbidden: not authorized to access to this resource."""
http_status = 403
message = "Forbidden"
class NotFound(ClientException):
- """
- HTTP 404 - Not found
- """
+ """HTTP 404 - Not found"""
http_status = 404
message = "Not found"
class Conflict(ClientException):
- """
- HTTP 409 - Conflict
- """
+ """HTTP 409 - Conflict"""
http_status = 409
message = "Conflict"
class OverLimit(ClientException):
- """
- HTTP 413 - Over limit: you're over the API limits for this time period.
- """
+ """HTTP 413 - Over limit: reached the API limits for this time period."""
http_status = 413
message = "Over limit"
# NotImplemented is a python keyword.
class HTTPNotImplemented(ClientException):
- """
- HTTP 501 - Not Implemented: the server does not support this operation.
- """
+ """HTTP 501 - Not Implemented: server does not support this operation."""
http_status = 501
message = "Not Implemented"
@@ -120,14 +99,18 @@ class HTTPNotImplemented(ClientException):
# for c in ClientException.__subclasses__())
#
# Instead, we have to hardcode it:
-_code_map = dict((c.http_status, c) for c in [BadRequest, Unauthorized,
- Forbidden, NotFound, OverLimit, HTTPNotImplemented])
+_code_map = dict((c.http_status, c) for c in [
+ BadRequest,
+ Unauthorized,
+ Forbidden,
+ NotFound,
+ OverLimit,
+ HTTPNotImplemented
+])
def from_response(response, body):
- """
- Return an instance of a ClientException or subclass
- based on an httplib2 response.
+ """Return an instance of a ClientException based on an httplib2 response.
Usage::
diff --git a/openstackclient/common/openstackkeyring.py b/openstackclient/common/openstackkeyring.py
index 78c74b8f..e7431e54 100644
--- a/openstackclient/common/openstackkeyring.py
+++ b/openstackclient/common/openstackkeyring.py
@@ -13,50 +13,48 @@
# under the License.
#
-"""
-Keyring backend for Openstack, to store encrypted password in a file.
-"""
+"""Keyring backend for Openstack, to store encrypted password in a file."""
from Crypto.Cipher import AES
import keyring
import os
+
KEYRING_FILE = os.path.join(os.path.expanduser('~'), '.openstack-keyring.cfg')
class OpenstackKeyring(keyring.backend.BasicFileKeyring):
- """ Openstack Keyring to store encrypted password """
-
+ """Openstack Keyring to store encrypted password."""
filename = KEYRING_FILE
def supported(self):
- """ applicable for all platforms, but not recommend """
+ """Applicable for all platforms, but not recommend."""
pass
def _init_crypter(self):
- """ initialize the crypter using the class name """
+ """Initialize the crypter using the class name."""
block_size = 32
padding = '0'
# init the cipher with the class name, upto block_size
password = __name__[block_size:]
- password = password + (block_size - len(password) % \
- block_size) * padding
+ password = password + (block_size - len(password) %
+ block_size) * padding
return AES.new(password, AES.MODE_CFB)
def encrypt(self, password):
- """ encrypt the given password """
+ """Encrypt the given password."""
crypter = self._init_crypter()
return crypter.encrypt(password)
def decrypt(self, password_encrypted):
- """ decrypt the given password """
+ """Decrypt the given password."""
crypter = self._init_crypter()
return crypter.decrypt(password_encrypted)
def os_keyring():
- """ initialize the openstack keyring """
- return keyring.core.load_keyring(None,
- 'openstackclient.common.openstackkeyring.OpenstackKeyring')
+ """Initialize the openstack keyring."""
+ keyring = 'openstackclient.common.openstackkeyring.OpenstackKeyring'
+ return keyring.core.load_keyring(None, keyring)
diff --git a/openstackclient/common/utils.py b/openstackclient/common/utils.py
index 19cca3f5..6477285e 100644
--- a/openstackclient/common/utils.py
+++ b/openstackclient/common/utils.py
@@ -13,9 +13,7 @@
# under the License.
#
-"""
-Common client utilities
-"""
+"""Common client utilities"""
import os
import sys