heat/heat/engine/clients/default_client_plugin.py
Zane Bitter 714d9eea4c Handle resource plugins without default_client_name
We want to be able to call is_not_found() or is_conflict() from the client
plugin from the Resource class, regardless of what resource plugin is
implementing the resource type. This is only possible when the
default_client_name is set, which is optional for plugins to do. As a
result, when handling an exception we need to check explicitly that there
is a default_client name, or (as in Resource.validate_external()) we will
get an assertion error.

To simplify the avoidance of programming errors, define a
_default_client_plugin() method that *always* returns a plugin whose
is_not_found() and is_conflict() methods can be called.

Change-Id: I1005397187457d9be42ba86096644dd17287d0e7
Story: #1745024
Task: 17677
2018-06-18 16:41:43 -04:00

26 lines
1001 B
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 heat.engine.clients import client_plugin
class DefaultClientPlugin(client_plugin.ClientPlugin):
"""A ClientPlugin that has no client.
This is provided so that Resource can make use of the is_not_found() and
is_conflict() methods even if the resource plugin has not specified a
client plugin.
"""
def _create(self, version=None):
return super(DefaultClientPlugin, self)._create(version)