summaryrefslogtreecommitdiff
path: root/openstackclient/network/common.py
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-08-19 15:58:33 +0000
committerGerrit Code Review <review@openstack.org>2020-08-19 15:58:33 +0000
commit13e7d43b9777dd0719df5fb89ec7946ea761f5cf (patch)
treed4a36c43d97d2aac37e594ea60df9f2c051eeabb /openstackclient/network/common.py
parent3bcfe983c70c0bc6217b5e685edb379b5d54640c (diff)
parente7a8687a2c87a507ce25e042014d6a918e95d035 (diff)
downloadpython-openstackclient-stable/rocky.tar.gz
Merge "Add dns-domain support to Network object" into stable/rockystable/rocky
Diffstat (limited to 'openstackclient/network/common.py')
-rw-r--r--openstackclient/network/common.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/openstackclient/network/common.py b/openstackclient/network/common.py
index 37bf1406..d22b2caa 100644
--- a/openstackclient/network/common.py
+++ b/openstackclient/network/common.py
@@ -12,6 +12,7 @@
#
import abc
+import contextlib
import logging
import openstack.exceptions
@@ -24,6 +25,30 @@ from openstackclient.i18n import _
LOG = logging.getLogger(__name__)
+_required_opt_extensions_map = {
+ 'allowed_address_pairs': 'allowed-address-pairs',
+ 'dns_domain': 'dns-integration',
+ 'dns_name': 'dns-integration',
+ 'extra_dhcp_opts': 'extra_dhcp_opt',
+ 'qos_policy_id': 'qos',
+ 'security_groups': 'security-groups',
+}
+
+
+@contextlib.contextmanager
+def check_missing_extension_if_error(client_manager, attrs):
+ # If specified option requires extension, then try to
+ # find out if it exists. If it does not exist,
+ # then an exception with the appropriate message
+ # will be thrown from within client.find_extension
+ try:
+ yield
+ except openstack.exceptions.HttpException:
+ for opt, ext in _required_opt_extensions_map.items():
+ if opt in attrs:
+ client_manager.find_extension(ext, ignore_missing=False)
+ raise
+
@six.add_metaclass(abc.ABCMeta)
class NetworkAndComputeCommand(command.Command):