2045a8d880
oslo incubator code is planned to be removed from the clients this cycle. Remove the redundant usage of it from other client plugins. This also includes an unrelated change(to remove the vpnaas post configuration, as we have removed the plugin from the gate jobs), to fix the gate. Last but not least, it limits the number of connections to the database to work around a convergence issue. Change-Id: I01c46197dfebb1eb674817ce81792972a06e529f
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
#
|
|
# 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 magnumclient import exceptions as mc_exc
|
|
from magnumclient.v1 import client as magnum_client
|
|
|
|
from heat.common import exception
|
|
from heat.engine.clients import client_plugin
|
|
from heat.engine import constraints
|
|
|
|
CLIENT_NAME = 'magnum'
|
|
|
|
|
|
class MagnumClientPlugin(client_plugin.ClientPlugin):
|
|
|
|
service_types = [CONTAINER] = ['container-infra']
|
|
|
|
def _create(self):
|
|
interface = self._get_client_option(CLIENT_NAME, 'endpoint_type')
|
|
args = {
|
|
'interface': interface,
|
|
'service_type': self.CONTAINER,
|
|
'session': self.context.keystone_session,
|
|
'region_name': self._get_region_name()
|
|
}
|
|
client = magnum_client.Client(**args)
|
|
return client
|
|
|
|
def is_not_found(self, ex):
|
|
return isinstance(ex, mc_exc.NotFound)
|
|
|
|
def is_over_limit(self, ex):
|
|
return isinstance(ex, mc_exc.RequestEntityTooLarge)
|
|
|
|
def is_conflict(self, ex):
|
|
return isinstance(ex, mc_exc.Conflict)
|
|
|
|
def get_baymodel(self, value):
|
|
try:
|
|
self.client().baymodels.get(value)
|
|
except mc_exc.NotFound:
|
|
raise exception.EntityNotFound(entity='BayModel',
|
|
name=value)
|
|
|
|
|
|
class BaymodelConstraint(constraints.BaseCustomConstraint):
|
|
|
|
resource_client_name = CLIENT_NAME
|
|
resource_getter_name = 'get_baymodel'
|