Abstract Freezerclient Object creation
* Use API v2 by default if OS_BACKUP_API_VERSION env var not provided Change-Id: I2e752f702cbe8221c4312962a9be53b90766c9d8
This commit is contained in:
@@ -20,33 +20,16 @@ from cliff import app
|
||||
from cliff import commandmanager
|
||||
|
||||
import freezerclient
|
||||
from freezerclient.v1 import client as v1_client
|
||||
from freezerclient.v2 import client as v2_client
|
||||
|
||||
from freezerclient import utils
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
# Suppress output from requests
|
||||
logging.getLogger('requests').setLevel(logging.WARN)
|
||||
|
||||
|
||||
def check_api_version():
|
||||
"""Check freezer version API to use
|
||||
1: not multi-tenant, useful for infrastructure
|
||||
2: multi-tenant, useful for backup as a service
|
||||
:return: str
|
||||
"""
|
||||
freezer_api_version = os.environ.get('OS_BACKUP_API_VERSION', '1')
|
||||
if freezer_api_version == '1':
|
||||
return '1'
|
||||
elif freezer_api_version == '2':
|
||||
return '2'
|
||||
else:
|
||||
raise Exception('Freezer API version not supported')
|
||||
|
||||
|
||||
class FreezerCommandManager(commandmanager.CommandManager):
|
||||
"""All commands available for the shell are registered here"""
|
||||
if check_api_version() == '1':
|
||||
if utils.check_api_version() == '1':
|
||||
from freezerclient.v1 import actions
|
||||
from freezerclient.v1 import backups
|
||||
from freezerclient.v1 import clients
|
||||
@@ -281,10 +264,7 @@ class FreezerShell(app.App):
|
||||
'cacert': self.options.os_cacert,
|
||||
'insecure': self.options.insecure
|
||||
}
|
||||
if check_api_version() == '1':
|
||||
return v1_client.Client(**opts)
|
||||
else:
|
||||
return v2_client.Client(**opts)
|
||||
return utils.get_client_instance(opts)
|
||||
|
||||
|
||||
def main(argv=sys.argv[1:]):
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
|
||||
from oslo_utils import importutils
|
||||
|
||||
logging = logging.getLogger(__name__)
|
||||
|
||||
@@ -138,3 +141,40 @@ def prepare_search(search_term):
|
||||
if search_term:
|
||||
return {"match": [{"_all": search_term}, ], }
|
||||
return {}
|
||||
|
||||
|
||||
def check_api_version():
|
||||
"""Check freezer version API to use
|
||||
1: not multi-tenant, useful for infrastructure
|
||||
2: multi-tenant, useful for backup as a service
|
||||
:return: str
|
||||
"""
|
||||
freezer_api_version = os.environ.get('OS_BACKUP_API_VERSION', '2')
|
||||
if freezer_api_version == '1':
|
||||
return '1'
|
||||
elif freezer_api_version == '2':
|
||||
return '2'
|
||||
else:
|
||||
raise Exception('Freezer API version not supported')
|
||||
|
||||
|
||||
def get_client_class(api_version=None):
|
||||
"""Return Client Class.
|
||||
Try to use provided api_version to import client class or
|
||||
Guess the api_version form env.
|
||||
Returns freezerclient.v{x}.client.Client
|
||||
:return: class
|
||||
"""
|
||||
if not api_version:
|
||||
api_version = check_api_version()
|
||||
api_string = 'freezerclient.v{0}.client.Client'.format(api_version)
|
||||
return importutils.import_class(api_string)
|
||||
|
||||
|
||||
def get_client_instance(kwargs={}, opts=None):
|
||||
"""Get Freezerclient Instance.
|
||||
We will the provided auth dict to instantiate a client instance
|
||||
Returns freezerclient.v{x}.client.Client Object
|
||||
:return: Object
|
||||
"""
|
||||
return get_client_class()(opts=opts, **kwargs)
|
||||
|
||||
@@ -5,3 +5,4 @@ setuptools!=24.0.0,!=34.0.0,!=34.0.1,!=34.0.2,!=34.0.3,!=34.1.0,!=34.1.1,!=34.2.
|
||||
pbr!=2.1.0,>=2.0.0 # Apache-2.0
|
||||
keystoneauth1>=3.3.0 # Apache-2.0
|
||||
cliff!=2.9.0,>=2.8.0 # Apache-2.0
|
||||
oslo.utils>=3.33.0 # Apache-2.0
|
||||
|
||||
Reference in New Issue
Block a user