Add openstacksdk plugin
Change-Id: I70349b9a3d66e50bd096422594bfe97f8fa15500 Partially-Implements: blueprint neutron-routed-networks
This commit is contained in:
parent
4992593baa
commit
5ad8241f98
|
@ -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
|
from manilaclient import exceptions as manila_exc
|
||||||
import mock
|
import mock
|
||||||
from neutronclient.common import exceptions as neutron_exc
|
from neutronclient.common import exceptions as neutron_exc
|
||||||
|
from openstack import exceptions
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from saharaclient.api import base as sahara_base
|
from saharaclient.api import base as sahara_base
|
||||||
import six
|
import six
|
||||||
|
@ -640,6 +641,15 @@ class TestIsNotFound(common.HeatTestCase):
|
||||||
plugin='nova',
|
plugin='nova',
|
||||||
exception=lambda: fakes_nova.fake_exception(409),
|
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(
|
('swift_not_found', dict(
|
||||||
is_not_found=True,
|
is_not_found=True,
|
||||||
is_over_limit=False,
|
is_over_limit=False,
|
||||||
|
|
|
@ -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
|
keystonemiddleware>=4.12.0 # Apache-2.0
|
||||||
lxml!=3.7.0,>=2.3 # BSD
|
lxml!=3.7.0,>=2.3 # BSD
|
||||||
netaddr!=0.7.16,>=0.7.13 # 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.cache>=1.5.0 # Apache-2.0
|
||||||
oslo.config>=3.22.0 # Apache-2.0
|
oslo.config>=3.22.0 # Apache-2.0
|
||||||
oslo.concurrency>=3.8.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
|
monasca = heat.engine.clients.os.monasca:MonascaClientPlugin
|
||||||
nova = heat.engine.clients.os.nova:NovaClientPlugin
|
nova = heat.engine.clients.os.nova:NovaClientPlugin
|
||||||
neutron = heat.engine.clients.os.neutron:NeutronClientPlugin
|
neutron = heat.engine.clients.os.neutron:NeutronClientPlugin
|
||||||
|
openstack = heat.engine.clients.os.openstacksdk:OpenStackSDKPlugin
|
||||||
sahara = heat.engine.clients.os.sahara:SaharaClientPlugin
|
sahara = heat.engine.clients.os.sahara:SaharaClientPlugin
|
||||||
senlin = heat.engine.clients.os.senlin:SenlinClientPlugin
|
senlin = heat.engine.clients.os.senlin:SenlinClientPlugin
|
||||||
swift = heat.engine.clients.os.swift:SwiftClientPlugin
|
swift = heat.engine.clients.os.swift:SwiftClientPlugin
|
||||||
|
|
Loading…
Reference in New Issue