Add openstacksdk plugin
Change-Id: I70349b9a3d66e50bd096422594bfe97f8fa15500 Partially-Implements: blueprint neutron-routed-networks
This commit is contained in:
parent
4992593baa
commit
5ad8241f98
45
heat/engine/clients/os/openstacksdk.py
Normal file
45
heat/engine/clients/os/openstacksdk.py
Normal file
@ -0,0 +1,45 @@
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from openstack import connection
|
||||
from openstack import exceptions
|
||||
from openstack import profile
|
||||
|
||||
from heat.engine.clients import client_plugin
|
||||
|
||||
|
||||
class OpenStackSDKPlugin(client_plugin.ClientPlugin):
|
||||
|
||||
exceptions_module = exceptions
|
||||
|
||||
service_types = [NETWORK] = ['network']
|
||||
service_client_map = {NETWORK: 'neutron'}
|
||||
api_version_map = {NETWORK: '2.0'}
|
||||
|
||||
def _create(self, version=None):
|
||||
prof = profile.Profile()
|
||||
for svc_type in self.service_types:
|
||||
interface = self._get_client_option(
|
||||
self.service_client_map[svc_type], 'endpoint_type')
|
||||
prof.set_interface(svc_type, interface)
|
||||
prof.set_region(svc_type, self._get_region_name())
|
||||
prof.set_version(svc_type, self.api_version_map[svc_type])
|
||||
|
||||
key_session = self.context.keystone_session
|
||||
return connection.Connection(authenticator=key_session.auth,
|
||||
verify=key_session.verify,
|
||||
cert=key_session.cert,
|
||||
profile=prof)
|
||||
|
||||
def is_not_found(self, ex):
|
||||
return isinstance(ex, exceptions.ResourceNotFound)
|
@ -22,6 +22,7 @@ from keystoneauth1.identity import generic
|
||||
from manilaclient import exceptions as manila_exc
|
||||
import mock
|
||||
from neutronclient.common import exceptions as neutron_exc
|
||||
from openstack import exceptions
|
||||
from oslo_config import cfg
|
||||
from saharaclient.api import base as sahara_base
|
||||
import six
|
||||
@ -640,6 +641,15 @@ class TestIsNotFound(common.HeatTestCase):
|
||||
plugin='nova',
|
||||
exception=lambda: fakes_nova.fake_exception(409),
|
||||
)),
|
||||
('openstack_not_found', dict(
|
||||
is_not_found=True,
|
||||
is_over_limit=False,
|
||||
is_client_exception=True,
|
||||
is_conflict=False,
|
||||
is_unprocessable_entity=False,
|
||||
plugin='openstack',
|
||||
exception=lambda: exceptions.ResourceNotFound,
|
||||
)),
|
||||
('swift_not_found', dict(
|
||||
is_not_found=True,
|
||||
is_over_limit=False,
|
||||
|
24
heat/tests/clients/test_sdk_client.py
Normal file
24
heat/tests/clients/test_sdk_client.py
Normal file
@ -0,0 +1,24 @@
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from heat.tests import common
|
||||
from heat.tests import utils
|
||||
|
||||
|
||||
class OpenStackSDKPluginTest(common.HeatTestCase):
|
||||
|
||||
def test_create(self):
|
||||
context = utils.dummy_context()
|
||||
plugin = context.clients.client_plugin('openstack')
|
||||
client = plugin.client()
|
||||
self.assertIsNotNone(client.network.segments)
|
@ -12,6 +12,7 @@ keystoneauth1>=2.18.0 # Apache-2.0
|
||||
keystonemiddleware>=4.12.0 # Apache-2.0
|
||||
lxml!=3.7.0,>=2.3 # BSD
|
||||
netaddr!=0.7.16,>=0.7.13 # BSD
|
||||
openstacksdk>=0.9.14 # Apache-2.0
|
||||
oslo.cache>=1.5.0 # Apache-2.0
|
||||
oslo.config>=3.22.0 # Apache-2.0
|
||||
oslo.concurrency>=3.8.0 # Apache-2.0
|
||||
|
@ -72,6 +72,7 @@ heat.clients =
|
||||
monasca = heat.engine.clients.os.monasca:MonascaClientPlugin
|
||||
nova = heat.engine.clients.os.nova:NovaClientPlugin
|
||||
neutron = heat.engine.clients.os.neutron:NeutronClientPlugin
|
||||
openstack = heat.engine.clients.os.openstacksdk:OpenStackSDKPlugin
|
||||
sahara = heat.engine.clients.os.sahara:SaharaClientPlugin
|
||||
senlin = heat.engine.clients.os.senlin:SenlinClientPlugin
|
||||
swift = heat.engine.clients.os.swift:SwiftClientPlugin
|
||||
|
Loading…
Reference in New Issue
Block a user