Merge "Lazy load client classes"
This commit is contained in:
commit
dcd88f6f19
@ -14,28 +14,31 @@
|
||||
|
||||
import functools
|
||||
|
||||
from barbicanclient import client as barbicanclient
|
||||
from ceilometerclient.v2 import client as ceilometerclient
|
||||
from cinderclient.v2 import client as cinderclient
|
||||
from designateclient import v1 as designateclient
|
||||
from glanceclient.v2 import client as glanceclient
|
||||
from heatclient.v1 import client as heatclient
|
||||
from ironic_inspector_client import v1 as ironic_inspector_client
|
||||
from ironicclient.v1 import client as ironicclient
|
||||
from keystoneclient.auth import identity
|
||||
from keystoneclient import httpclient
|
||||
from keystoneclient.v3 import client as keystoneclient
|
||||
from magnumclient.v1 import client as magnumclient
|
||||
from mistralclient.api.v2 import client as mistralclient
|
||||
from muranoclient.v1 import client as muranoclient
|
||||
from neutronclient.v2_0 import client as neutronclient
|
||||
from novaclient import client as novaclient
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
from swiftclient import client as swift_client
|
||||
from tackerclient.v1_0 import client as tackerclient
|
||||
from troveclient.v1 import client as troveclient
|
||||
from zaqarclient.queues.v2 import client as zaqarclient
|
||||
from oslo_utils import importutils
|
||||
|
||||
from keystoneclient.auth import identity
|
||||
from keystoneclient import httpclient
|
||||
|
||||
barbicanclient = importutils.try_import('barbicanclient.client')
|
||||
ceilometerclient = importutils.try_import('ceilometerclient.v2.client')
|
||||
cinderclient = importutils.try_import('cinderclient.v2.client')
|
||||
designateclient = importutils.try_import('designateclient.v1')
|
||||
glanceclient = importutils.try_import('glanceclient.v2.client')
|
||||
heatclient = importutils.try_import('heatclient.v1.client')
|
||||
keystoneclient = importutils.try_import('keystoneclient.v3.client')
|
||||
ironic_inspector_client = importutils.try_import('ironic_inspector_client.v1')
|
||||
ironicclient = importutils.try_import('ironicclient.v1.client')
|
||||
magnumclient = importutils.try_import('magnumclient.v1.client')
|
||||
mistralclient = importutils.try_import('mistralclient.api.v2.client')
|
||||
muranoclient = importutils.try_import('muranoclient.v1.client')
|
||||
neutronclient = importutils.try_import('neutronclient.v2_0.client')
|
||||
novaclient = importutils.try_import('novaclient.client')
|
||||
swift_client = importutils.try_import('swiftclient.client')
|
||||
tackerclient = importutils.try_import('tackerclient.v1_0.client')
|
||||
troveclient = importutils.try_import('troveclient.v1.client')
|
||||
zaqarclient = importutils.try_import('zaqarclient.queues.v2.client')
|
||||
|
||||
from mistral.actions.openstack import base
|
||||
from mistral import context
|
||||
@ -82,7 +85,10 @@ class NovaAction(base.OpenStackAction):
|
||||
|
||||
|
||||
class GlanceAction(base.OpenStackAction):
|
||||
_client_class = glanceclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return glanceclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -91,7 +97,7 @@ class GlanceAction(base.OpenStackAction):
|
||||
|
||||
glance_endpoint = keystone_utils.get_endpoint_for_project('glance')
|
||||
|
||||
return self._client_class(
|
||||
return GlanceAction._get_client_class()(
|
||||
glance_endpoint.url,
|
||||
region_name=glance_endpoint.region,
|
||||
token=ctx.auth_token
|
||||
@ -99,11 +105,14 @@ class GlanceAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class("fake_endpoint")
|
||||
return cls._get_client_class()("fake_endpoint")
|
||||
|
||||
|
||||
class KeystoneAction(base.OpenStackAction):
|
||||
_client_class = keystoneclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return keystoneclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -125,7 +134,7 @@ class KeystoneAction(base.OpenStackAction):
|
||||
or keystone_utils.is_token_trust_scoped(ctx.auth_token)):
|
||||
kwargs['endpoint'] = ctx.auth_uri
|
||||
|
||||
client = self._client_class(**kwargs)
|
||||
client = KeystoneAction._get_client_class()(**kwargs)
|
||||
|
||||
client.management_url = ctx.auth_uri
|
||||
|
||||
@ -137,7 +146,7 @@ class KeystoneAction(base.OpenStackAction):
|
||||
authenticate = httpclient.HTTPClient.authenticate
|
||||
|
||||
httpclient.HTTPClient.authenticate = lambda x: True
|
||||
fake_client = cls._client_class()
|
||||
fake_client = cls._get_client_class()()
|
||||
|
||||
# Once we get fake client, return back authenticate method
|
||||
httpclient.HTTPClient.authenticate = authenticate
|
||||
@ -146,7 +155,10 @@ class KeystoneAction(base.OpenStackAction):
|
||||
|
||||
|
||||
class CeilometerAction(base.OpenStackAction):
|
||||
_client_class = ceilometerclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return ceilometerclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -162,7 +174,7 @@ class CeilometerAction(base.OpenStackAction):
|
||||
{'tenant_id': ctx.project_id}
|
||||
)
|
||||
|
||||
return self._client_class(
|
||||
return CeilometerAction._get_client_class()(
|
||||
endpoint_url,
|
||||
region_name=ceilometer_endpoint.region,
|
||||
token=ctx.auth_token,
|
||||
@ -171,11 +183,14 @@ class CeilometerAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class("")
|
||||
return cls._get_client_class()("")
|
||||
|
||||
|
||||
class HeatAction(base.OpenStackAction):
|
||||
_client_class = heatclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return heatclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -192,7 +207,7 @@ class HeatAction(base.OpenStackAction):
|
||||
}
|
||||
)
|
||||
|
||||
return self._client_class(
|
||||
return HeatAction._get_client_class()(
|
||||
endpoint_url,
|
||||
region_name=heat_endpoint.region,
|
||||
token=ctx.auth_token,
|
||||
@ -201,11 +216,14 @@ class HeatAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class("")
|
||||
return cls._get_client_class()("")
|
||||
|
||||
|
||||
class NeutronAction(base.OpenStackAction):
|
||||
_client_class = neutronclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return neutronclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -214,7 +232,7 @@ class NeutronAction(base.OpenStackAction):
|
||||
|
||||
neutron_endpoint = keystone_utils.get_endpoint_for_project('neutron')
|
||||
|
||||
return self._client_class(
|
||||
return NeutronAction._get_client_class()(
|
||||
endpoint_url=neutron_endpoint.url,
|
||||
region_name=neutron_endpoint.region,
|
||||
token=ctx.auth_token,
|
||||
@ -223,7 +241,10 @@ class NeutronAction(base.OpenStackAction):
|
||||
|
||||
|
||||
class CinderAction(base.OpenStackAction):
|
||||
_client_class = cinderclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return cinderclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -242,7 +263,7 @@ class CinderAction(base.OpenStackAction):
|
||||
}
|
||||
)
|
||||
|
||||
client = self._client_class(
|
||||
client = CinderAction._get_client_class()(
|
||||
ctx.user_name,
|
||||
ctx.auth_token,
|
||||
project_id=ctx.project_id,
|
||||
@ -257,11 +278,14 @@ class CinderAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class()
|
||||
return cls._get_client_class()()
|
||||
|
||||
|
||||
class MistralAction(base.OpenStackAction):
|
||||
_client_class = mistralclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return mistralclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -281,7 +305,7 @@ class MistralAction(base.OpenStackAction):
|
||||
auth_url = keystone_endpoint.url
|
||||
mistral_url = None
|
||||
|
||||
return self._client_class(
|
||||
return MistralAction._get_client_class()(
|
||||
mistral_url=mistral_url,
|
||||
auth_token=ctx.auth_token,
|
||||
project_id=ctx.project_id,
|
||||
@ -291,11 +315,14 @@ class MistralAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class()
|
||||
return cls._get_client_class()()
|
||||
|
||||
|
||||
class TroveAction(base.OpenStackAction):
|
||||
_client_class = troveclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return troveclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -311,7 +338,7 @@ class TroveAction(base.OpenStackAction):
|
||||
{'tenant_id': ctx.project_id}
|
||||
)
|
||||
|
||||
client = self._client_class(
|
||||
client = TroveAction._get_client_class()(
|
||||
ctx.user_name,
|
||||
ctx.auth_token,
|
||||
project_id=ctx.project_id,
|
||||
@ -326,11 +353,14 @@ class TroveAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class("fake_user", "fake_passwd")
|
||||
return cls._get_client_class()("fake_user", "fake_passwd")
|
||||
|
||||
|
||||
class IronicAction(base.OpenStackAction):
|
||||
_client_class = ironicclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return ironicclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -339,7 +369,7 @@ class IronicAction(base.OpenStackAction):
|
||||
|
||||
ironic_endpoint = keystone_utils.get_endpoint_for_project('ironic')
|
||||
|
||||
return self._client_class(
|
||||
return IronicAction._get_client_class()(
|
||||
ironic_endpoint.url,
|
||||
token=ctx.auth_token,
|
||||
region_name=ironic_endpoint.region
|
||||
@ -347,11 +377,14 @@ class IronicAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class("http://127.0.0.1:6385/")
|
||||
return cls._get_client_class()("http://127.0.0.1:6385/")
|
||||
|
||||
|
||||
class BaremetalIntrospectionAction(base.OpenStackAction):
|
||||
_client_class = ironic_inspector_client.ClientV1
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return ironic_inspector_client.ClientV1
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -362,7 +395,7 @@ class BaremetalIntrospectionAction(base.OpenStackAction):
|
||||
service_type='baremetal-introspection'
|
||||
)
|
||||
|
||||
return self._client_class(
|
||||
return BaremetalIntrospectionAction._get_client_class()(
|
||||
api_version=1,
|
||||
inspector_url=inspector_endpoint.url,
|
||||
auth_token=ctx.auth_token,
|
||||
@ -370,7 +403,10 @@ class BaremetalIntrospectionAction(base.OpenStackAction):
|
||||
|
||||
|
||||
class SwiftAction(base.OpenStackAction):
|
||||
_client_class = swift_client.Connection
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return swift_client.Connection
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -384,11 +420,14 @@ class SwiftAction(base.OpenStackAction):
|
||||
'preauthtoken': ctx.auth_token
|
||||
}
|
||||
|
||||
return self._client_class(**kwargs)
|
||||
return SwiftAction._get_client_class()(**kwargs)
|
||||
|
||||
|
||||
class ZaqarAction(base.OpenStackAction):
|
||||
_client_class = zaqarclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return zaqarclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -407,11 +446,11 @@ class ZaqarAction(base.OpenStackAction):
|
||||
auth_opts = {'backend': 'keystone', 'options': opts}
|
||||
conf = {'auth_opts': auth_opts}
|
||||
|
||||
return self._client_class(zaqar_endpoint.url, conf=conf)
|
||||
return ZaqarAction._get_client_class()(zaqar_endpoint.url, conf=conf)
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class("")
|
||||
return cls._get_client_class()("")
|
||||
|
||||
@classmethod
|
||||
def _get_client_method(cls, client):
|
||||
@ -481,7 +520,10 @@ class ZaqarAction(base.OpenStackAction):
|
||||
|
||||
|
||||
class BarbicanAction(base.OpenStackAction):
|
||||
_client_class = barbicanclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return barbicanclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -498,7 +540,7 @@ class BarbicanAction(base.OpenStackAction):
|
||||
tenant_id=ctx.project_id
|
||||
)
|
||||
|
||||
return self._client_class(
|
||||
return BarbicanAction._get_client_class()(
|
||||
project_id=ctx.project_id,
|
||||
endpoint=barbican_endpoint.url,
|
||||
auth=auth
|
||||
@ -506,7 +548,7 @@ class BarbicanAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class(
|
||||
return cls._get_client_class()(
|
||||
project_id="1",
|
||||
endpoint="http://127.0.0.1:9311"
|
||||
)
|
||||
@ -580,7 +622,10 @@ class BarbicanAction(base.OpenStackAction):
|
||||
|
||||
|
||||
class DesignateAction(base.OpenStackAction):
|
||||
_client_class = designateclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return designateclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -596,7 +641,7 @@ class DesignateAction(base.OpenStackAction):
|
||||
{'tenant_id': ctx.project_id}
|
||||
)
|
||||
|
||||
client = self._client_class(
|
||||
client = DesignateAction._get_client_class()(
|
||||
endpoint=designate_url,
|
||||
tenant_id=ctx.project_id,
|
||||
auth_url=ctx.auth_uri,
|
||||
@ -611,11 +656,14 @@ class DesignateAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class()
|
||||
return cls._get_client_class()()
|
||||
|
||||
|
||||
class MagnumAction(base.OpenStackAction):
|
||||
_client_class = magnumclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return magnumclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -626,7 +674,7 @@ class MagnumAction(base.OpenStackAction):
|
||||
auth_url = keystone_endpoint.url
|
||||
magnum_url = keystone_utils.get_endpoint_for_project('magnum').url
|
||||
|
||||
return self._client_class(
|
||||
return MagnumAction._get_client_class()(
|
||||
magnum_url=magnum_url,
|
||||
auth_token=ctx.auth_token,
|
||||
project_id=ctx.project_id,
|
||||
@ -636,11 +684,14 @@ class MagnumAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class()
|
||||
return cls._get_client_class()()
|
||||
|
||||
|
||||
class MuranoAction(base.OpenStackAction):
|
||||
_client_class = muranoclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return muranoclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -650,7 +701,7 @@ class MuranoAction(base.OpenStackAction):
|
||||
keystone_endpoint = keystone_utils.get_keystone_endpoint_v2()
|
||||
murano_endpoint = keystone_utils.get_endpoint_for_project('murano')
|
||||
|
||||
return self._client_class(
|
||||
return MuranoAction._get_client_class()(
|
||||
endpoint=murano_endpoint.url,
|
||||
token=ctx.auth_token,
|
||||
tenant=ctx.project_id,
|
||||
@ -660,11 +711,14 @@ class MuranoAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class()
|
||||
return cls._get_client_class()()
|
||||
|
||||
|
||||
class TackerAction(base.OpenStackAction):
|
||||
_client_class = tackerclient.Client
|
||||
|
||||
@classmethod
|
||||
def _get_client_class(cls):
|
||||
return tackerclient.Client
|
||||
|
||||
def _get_client(self):
|
||||
ctx = context.ctx()
|
||||
@ -674,7 +728,7 @@ class TackerAction(base.OpenStackAction):
|
||||
keystone_endpoint = keystone_utils.get_keystone_endpoint_v2()
|
||||
tacker_endpoint = keystone_utils.get_endpoint_for_project('tacker')
|
||||
|
||||
return self._client_class(
|
||||
return TackerAction._get_client_class()(
|
||||
endpoint_url=tacker_endpoint.url,
|
||||
token=ctx.auth_token,
|
||||
tenant_id=ctx.project_id,
|
||||
@ -684,4 +738,4 @@ class TackerAction(base.OpenStackAction):
|
||||
|
||||
@classmethod
|
||||
def _get_fake_client(cls):
|
||||
return cls._client_class()
|
||||
return cls._get_client_class()()
|
||||
|
@ -31,7 +31,6 @@ class OpenStackAction(base.Action):
|
||||
which are constructed via OpenStack Action generators.
|
||||
"""
|
||||
_kwargs_for_run = {}
|
||||
_client_class = None
|
||||
client_method_name = None
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
@ -64,8 +63,8 @@ class OpenStackAction(base.Action):
|
||||
It is needed for getting client-method args and description for
|
||||
saving into DB.
|
||||
"""
|
||||
# Default is simple _client_class instance
|
||||
return cls._client_class()
|
||||
# Default is simple _get_client_class instance
|
||||
return cls._get_client_class()
|
||||
|
||||
@classmethod
|
||||
def get_fake_client_method(cls):
|
||||
|
Loading…
Reference in New Issue
Block a user