Use network proxy in openstack.cloud
Stop creating our own client in the shade layer and use the sdk adapter. Change-Id: If5f8b55a13a61b954f16712504aa8c34a66aeab1
This commit is contained in:
parent
20199e8025
commit
d75056a8be
@ -33,6 +33,7 @@ import warnings
|
||||
|
||||
import dogpile.cache
|
||||
import munch
|
||||
import requests.models
|
||||
import requestsexceptions
|
||||
from six.moves import urllib
|
||||
|
||||
@ -41,6 +42,7 @@ import keystoneauth1.session
|
||||
|
||||
from openstack import _adapter
|
||||
from openstack import _log
|
||||
from openstack import exceptions
|
||||
from openstack.cloud import exc
|
||||
from openstack.cloud._heat import event_utils
|
||||
from openstack.cloud._heat import template_utils
|
||||
@ -586,23 +588,6 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
'image', min_version=1, max_version='2.latest')
|
||||
return self._raw_clients['image']
|
||||
|
||||
@property
|
||||
def _network_client(self):
|
||||
if 'network' not in self._raw_clients:
|
||||
client = self._get_raw_client('network')
|
||||
# TODO(mordred) Replace this with self.network
|
||||
# Don't bother with version discovery - there is only one version
|
||||
# of neutron. This is what neutronclient does, fwiw.
|
||||
endpoint = client.get_endpoint()
|
||||
if not endpoint.rstrip().rsplit('/')[1] == 'v2.0':
|
||||
if not endpoint.endswith('/'):
|
||||
endpoint += '/'
|
||||
endpoint = urllib.parse.urljoin(
|
||||
endpoint, 'v2.0')
|
||||
client.endpoint_override = endpoint
|
||||
self._raw_clients['network'] = client
|
||||
return self._raw_clients['network']
|
||||
|
||||
@property
|
||||
def _object_store_client(self):
|
||||
if 'object-store' not in self._raw_clients:
|
||||
@ -825,6 +810,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
overriding the meta module making the call to meta.get_and_munchify
|
||||
to fail.
|
||||
"""
|
||||
if isinstance(data, requests.models.Response):
|
||||
data = _adapter._json_response(data)
|
||||
return meta.get_and_munchify(key, data)
|
||||
|
||||
@_utils.cache_on_arguments()
|
||||
@ -1456,8 +1443,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
@_utils.cache_on_arguments()
|
||||
def _neutron_extensions(self):
|
||||
extensions = set()
|
||||
data = self._network_client.get(
|
||||
'/extensions.json',
|
||||
resp = self.network.get('/extensions.json')
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching extension list for neutron")
|
||||
for extension in self._get_and_munchify('extensions', data):
|
||||
extensions.add(extension['alias'])
|
||||
@ -1670,7 +1658,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
# Translate None from search interface to empty {} for kwargs below
|
||||
if not filters:
|
||||
filters = {}
|
||||
data = self._network_client.get("/networks.json", params=filters)
|
||||
data = self.network.get("/networks.json", params=filters)
|
||||
return self._get_and_munchify('networks', data)
|
||||
|
||||
def list_routers(self, filters=None):
|
||||
@ -1683,8 +1671,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
# Translate None from search interface to empty {} for kwargs below
|
||||
if not filters:
|
||||
filters = {}
|
||||
data = self._network_client.get(
|
||||
"/routers.json", params=filters,
|
||||
resp = self.network.get("/routers.json", params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching router list")
|
||||
return self._get_and_munchify('routers', data)
|
||||
|
||||
@ -1698,7 +1687,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
# Translate None from search interface to empty {} for kwargs below
|
||||
if not filters:
|
||||
filters = {}
|
||||
data = self._network_client.get("/subnets.json", params=filters)
|
||||
data = self.network.get("/subnets.json", params=filters)
|
||||
return self._get_and_munchify('subnets', data)
|
||||
|
||||
def list_ports(self, filters=None):
|
||||
@ -1734,8 +1723,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
return self._ports
|
||||
|
||||
def _list_ports(self, filters):
|
||||
data = self._network_client.get(
|
||||
"/ports.json", params=filters,
|
||||
resp = self.network.get("/ports.json", params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching port list")
|
||||
return self._get_and_munchify('ports', data)
|
||||
|
||||
@ -1753,8 +1743,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
# Translate None from search interface to empty {} for kwargs below
|
||||
if not filters:
|
||||
filters = {}
|
||||
data = self._network_client.get(
|
||||
"/qos/rule-types.json", params=filters,
|
||||
resp = self.network.get("/qos/rule-types.json", params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS rule types list")
|
||||
return self._get_and_munchify('rule_types', data)
|
||||
|
||||
@ -1776,8 +1767,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
'qos-rule-type-details extension is not available '
|
||||
'on target cloud')
|
||||
|
||||
data = self._network_client.get(
|
||||
"/qos/rule-types/{rule_type}.json".format(rule_type=rule_type),
|
||||
resp = self.network.get(
|
||||
"/qos/rule-types/{rule_type}.json".format(rule_type=rule_type))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS details of {rule_type} "
|
||||
"rule type".format(rule_type=rule_type))
|
||||
return self._get_and_munchify('rule_type', data)
|
||||
@ -1795,8 +1788,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
# Translate None from search interface to empty {} for kwargs below
|
||||
if not filters:
|
||||
filters = {}
|
||||
data = self._network_client.get(
|
||||
"/qos/policies.json", params=filters,
|
||||
resp = self.network.get("/qos/policies.json", params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS policies list")
|
||||
return self._get_and_munchify('policies', data)
|
||||
|
||||
@ -2075,8 +2069,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
# Handle neutron security groups
|
||||
if self._use_neutron_secgroups():
|
||||
# Neutron returns dicts, so no need to convert objects here.
|
||||
data = self._network_client.get(
|
||||
'/security-groups.json', params=filters,
|
||||
resp = self.network.get('/security-groups.json', params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching security group list")
|
||||
return self._normalize_secgroups(
|
||||
self._get_and_munchify('security_groups', data))
|
||||
@ -2342,7 +2337,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
def _neutron_list_floating_ips(self, filters=None):
|
||||
if not filters:
|
||||
filters = {}
|
||||
data = self._network_client.get('/floatingips.json', params=filters)
|
||||
data = self.network.get('/floatingips.json', params=filters)
|
||||
return self._get_and_munchify('floatingips', data)
|
||||
|
||||
def _nova_list_floating_ips(self):
|
||||
@ -2748,8 +2743,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
:param id: ID of the network.
|
||||
:returns: A network ``munch.Munch``.
|
||||
"""
|
||||
data = self._network_client.get(
|
||||
'/networks/{id}'.format(id=id),
|
||||
resp = self.network.get('/networks/{id}'.format(id=id))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error getting network with ID {id}".format(id=id)
|
||||
)
|
||||
network = self._get_and_munchify('network', data)
|
||||
@ -2808,8 +2804,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
:param id: ID of the subnet.
|
||||
:returns: A subnet ``munch.Munch``.
|
||||
"""
|
||||
data = self._network_client.get(
|
||||
'/subnets/{id}'.format(id=id),
|
||||
resp = self.network.get('/subnets/{id}'.format(id=id))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error getting subnet with ID {id}".format(id=id)
|
||||
)
|
||||
subnet = self._get_and_munchify('subnet', data)
|
||||
@ -2846,8 +2843,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
:param id: ID of the port.
|
||||
:returns: A port ``munch.Munch``.
|
||||
"""
|
||||
data = self._network_client.get(
|
||||
'/ports/{id}'.format(id=id),
|
||||
resp = self.network.get('/ports/{id}'.format(id=id))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error getting port with ID {id}".format(id=id)
|
||||
)
|
||||
port = self._get_and_munchify('port', data)
|
||||
@ -3048,9 +3046,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
error_message = ("Error getting security group with"
|
||||
" ID {id}".format(id=id))
|
||||
if self._use_neutron_secgroups():
|
||||
data = self._network_client.get(
|
||||
'/security-groups/{id}'.format(id=id),
|
||||
error_message=error_message)
|
||||
resp = self.network.get('/security-groups/{id}'.format(id=id))
|
||||
data = _adapter._json_response(resp, error_message=error_message)
|
||||
else:
|
||||
data = _adapter._json_response(
|
||||
self.compute.get(
|
||||
@ -3292,8 +3289,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
error_message = "Error getting floating ip with ID {id}".format(id=id)
|
||||
|
||||
if self._use_neutron_floating():
|
||||
data = self._network_client.get(
|
||||
'/floatingips/{id}'.format(id=id),
|
||||
data = _adapter._json_response(
|
||||
self.network.get('/floatingips/{id}'.format(id=id)),
|
||||
error_message=error_message)
|
||||
return self._normalize_floating_ip(
|
||||
self._get_and_munchify('floatingip', data))
|
||||
@ -3458,8 +3455,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
|
||||
network['mtu'] = mtu_size
|
||||
|
||||
data = self._network_client.post("/networks.json",
|
||||
json={'network': network})
|
||||
data = self.network.post("/networks.json", json={'network': network})
|
||||
|
||||
# Reset cache so the new network is picked up
|
||||
self._reset_network_caches()
|
||||
@ -3519,9 +3515,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
raise exc.OpenStackCloudException(
|
||||
"Network %s not found." % name_or_id)
|
||||
|
||||
data = self._network_client.put(
|
||||
data = _adapter._json_response(self.network.put(
|
||||
"/networks/{net_id}.json".format(net_id=network.id),
|
||||
json={"network": kwargs},
|
||||
json={"network": kwargs}),
|
||||
error_message="Error updating network {0}".format(name_or_id))
|
||||
|
||||
self._reset_network_caches()
|
||||
@ -3542,8 +3538,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
self.log.debug("Network %s not found for deleting", name_or_id)
|
||||
return False
|
||||
|
||||
self._network_client.delete(
|
||||
"/networks/{network_id}.json".format(network_id=network['id']))
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/networks/{network_id}.json".format(network_id=network['id'])))
|
||||
|
||||
# Reset cache so the deleted network is removed
|
||||
self._reset_network_caches()
|
||||
@ -3577,8 +3573,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
self.log.debug("'qos-default' extension is not available on "
|
||||
"target cloud")
|
||||
|
||||
data = self._network_client.post("/qos/policies.json",
|
||||
json={'policy': kwargs})
|
||||
data = self.network.post("/qos/policies.json", json={'policy': kwargs})
|
||||
return self._get_and_munchify('policy', data)
|
||||
|
||||
@_utils.valid_kwargs("name", "description", "shared", "default",
|
||||
@ -3621,7 +3616,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
raise exc.OpenStackCloudException(
|
||||
"QoS policy %s not found." % name_or_id)
|
||||
|
||||
data = self._network_client.put(
|
||||
data = self.network.put(
|
||||
"/qos/policies/{policy_id}.json".format(
|
||||
policy_id=curr_policy['id']),
|
||||
json={'policy': kwargs})
|
||||
@ -3644,8 +3639,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
self.log.debug("QoS policy %s not found for deleting", name_or_id)
|
||||
return False
|
||||
|
||||
self._network_client.delete(
|
||||
"/qos/policies/{policy_id}.json".format(policy_id=policy['id']))
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/qos/policies/{policy_id}.json".format(policy_id=policy['id'])))
|
||||
|
||||
return True
|
||||
|
||||
@ -3693,10 +3688,12 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if not filters:
|
||||
filters = {}
|
||||
|
||||
data = self._network_client.get(
|
||||
resp = self.network.get(
|
||||
"/qos/policies/{policy_id}/bandwidth_limit_rules.json".format(
|
||||
policy_id=policy['id']),
|
||||
params=filters,
|
||||
params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS bandwith limit rules from "
|
||||
"{policy}".format(policy=policy['id']))
|
||||
return self._get_and_munchify('bandwidth_limit_rules', data)
|
||||
@ -3722,9 +3719,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"QoS policy {name_or_id} not Found.".format(
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
data = self._network_client.get(
|
||||
resp = self.network.get(
|
||||
"/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id}.json".
|
||||
format(policy_id=policy['id'], rule_id=rule_id),
|
||||
format(policy_id=policy['id'], rule_id=rule_id))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS bandwith limit rule {rule_id} "
|
||||
"from {policy}".format(rule_id=rule_id,
|
||||
policy=policy['id']))
|
||||
@ -3764,7 +3763,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"target cloud")
|
||||
|
||||
kwargs['max_kbps'] = max_kbps
|
||||
data = self._network_client.post(
|
||||
data = self.network.post(
|
||||
"/qos/policies/{policy_id}/bandwidth_limit_rules".format(
|
||||
policy_id=policy['id']),
|
||||
json={'bandwidth_limit_rule': kwargs})
|
||||
@ -3816,7 +3815,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"{policy_id}".format(rule_id=rule_id,
|
||||
policy_id=policy['id']))
|
||||
|
||||
data = self._network_client.put(
|
||||
data = self.network.put(
|
||||
"/qos/policies/{policy_id}/bandwidth_limit_rules/{rule_id}.json".
|
||||
format(policy_id=policy['id'], rule_id=rule_id),
|
||||
json={'bandwidth_limit_rule': kwargs})
|
||||
@ -3842,9 +3841,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
try:
|
||||
self._network_client.delete(
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/qos/policies/{policy}/bandwidth_limit_rules/{rule}.json".
|
||||
format(policy=policy['id'], rule=rule_id))
|
||||
format(policy=policy['id'], rule=rule_id)))
|
||||
except exc.OpenStackCloudURINotFound:
|
||||
self.log.debug(
|
||||
"QoS bandwidth limit rule {rule_id} not found in policy "
|
||||
@ -3898,13 +3897,15 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if not filters:
|
||||
filters = {}
|
||||
|
||||
data = self._network_client.get(
|
||||
resp = self.network.get(
|
||||
"/qos/policies/{policy_id}/dscp_marking_rules.json".format(
|
||||
policy_id=policy['id']),
|
||||
params=filters,
|
||||
params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS DSCP marking rules from "
|
||||
"{policy}".format(policy=policy['id']))
|
||||
return meta.get_and_munchify('dscp_marking_rules', data)
|
||||
return self._get_and_munchify('dscp_marking_rules', data)
|
||||
|
||||
def get_qos_dscp_marking_rule(self, policy_name_or_id, rule_id):
|
||||
"""Get a QoS DSCP marking rule by name or ID.
|
||||
@ -3927,13 +3928,15 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"QoS policy {name_or_id} not Found.".format(
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
data = self._network_client.get(
|
||||
resp = self.network.get(
|
||||
"/qos/policies/{policy_id}/dscp_marking_rules/{rule_id}.json".
|
||||
format(policy_id=policy['id'], rule_id=rule_id),
|
||||
format(policy_id=policy['id'], rule_id=rule_id))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS DSCP marking rule {rule_id} "
|
||||
"from {policy}".format(rule_id=rule_id,
|
||||
policy=policy['id']))
|
||||
return meta.get_and_munchify('dscp_marking_rule', data)
|
||||
return self._get_and_munchify('dscp_marking_rule', data)
|
||||
|
||||
def create_qos_dscp_marking_rule(self, policy_name_or_id, dscp_mark):
|
||||
"""Create a QoS DSCP marking rule.
|
||||
@ -3958,11 +3961,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
body = {
|
||||
'dscp_mark': dscp_mark
|
||||
}
|
||||
data = self._network_client.post(
|
||||
data = self.network.post(
|
||||
"/qos/policies/{policy_id}/dscp_marking_rules".format(
|
||||
policy_id=policy['id']),
|
||||
json={'dscp_marking_rule': body})
|
||||
return meta.get_and_munchify('dscp_marking_rule', data)
|
||||
return self._get_and_munchify('dscp_marking_rule', data)
|
||||
|
||||
@_utils.valid_kwargs("dscp_mark")
|
||||
def update_qos_dscp_marking_rule(self, policy_name_or_id, rule_id,
|
||||
@ -3999,11 +4002,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"{policy_id}".format(rule_id=rule_id,
|
||||
policy_id=policy['id']))
|
||||
|
||||
data = self._network_client.put(
|
||||
data = self.network.put(
|
||||
"/qos/policies/{policy_id}/dscp_marking_rules/{rule_id}.json".
|
||||
format(policy_id=policy['id'], rule_id=rule_id),
|
||||
json={'dscp_marking_rule': kwargs})
|
||||
return meta.get_and_munchify('dscp_marking_rule', data)
|
||||
return self._get_and_munchify('dscp_marking_rule', data)
|
||||
|
||||
def delete_qos_dscp_marking_rule(self, policy_name_or_id, rule_id):
|
||||
"""Delete a QoS DSCP marking rule.
|
||||
@ -4025,9 +4028,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
try:
|
||||
self._network_client.delete(
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/qos/policies/{policy}/dscp_marking_rules/{rule}.json".
|
||||
format(policy=policy['id'], rule=rule_id))
|
||||
format(policy=policy['id'], rule=rule_id)))
|
||||
except exc.OpenStackCloudURINotFound:
|
||||
self.log.debug(
|
||||
"QoS DSCP marking rule {rule_id} not found in policy "
|
||||
@ -4083,10 +4086,12 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if not filters:
|
||||
filters = {}
|
||||
|
||||
data = self._network_client.get(
|
||||
resp = self.network.get(
|
||||
"/qos/policies/{policy_id}/minimum_bandwidth_rules.json".format(
|
||||
policy_id=policy['id']),
|
||||
params=filters,
|
||||
params=filters)
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS minimum bandwith rules from "
|
||||
"{policy}".format(policy=policy['id']))
|
||||
return self._get_and_munchify('minimum_bandwidth_rules', data)
|
||||
@ -4112,9 +4117,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"QoS policy {name_or_id} not Found.".format(
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
data = self._network_client.get(
|
||||
resp = self.network.get(
|
||||
"/qos/policies/{policy_id}/minimum_bandwidth_rules/{rule_id}.json".
|
||||
format(policy_id=policy['id'], rule_id=rule_id),
|
||||
format(policy_id=policy['id'], rule_id=rule_id))
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error fetching QoS minimum_bandwith rule {rule_id} "
|
||||
"from {policy}".format(rule_id=rule_id,
|
||||
policy=policy['id']))
|
||||
@ -4145,7 +4152,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
kwargs['min_kbps'] = min_kbps
|
||||
data = self._network_client.post(
|
||||
data = self.network.post(
|
||||
"/qos/policies/{policy_id}/minimum_bandwidth_rules".format(
|
||||
policy_id=policy['id']),
|
||||
json={'minimum_bandwidth_rule': kwargs})
|
||||
@ -4188,7 +4195,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"{policy_id}".format(rule_id=rule_id,
|
||||
policy_id=policy['id']))
|
||||
|
||||
data = self._network_client.put(
|
||||
data = self.network.put(
|
||||
"/qos/policies/{policy_id}/minimum_bandwidth_rules/{rule_id}.json".
|
||||
format(policy_id=policy['id'], rule_id=rule_id),
|
||||
json={'minimum_bandwidth_rule': kwargs})
|
||||
@ -4214,9 +4221,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
name_or_id=policy_name_or_id))
|
||||
|
||||
try:
|
||||
self._network_client.delete(
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/qos/policies/{policy}/minimum_bandwidth_rules/{rule}.json".
|
||||
format(policy=policy['id'], rule=rule_id))
|
||||
format(policy=policy['id'], rule=rule_id)))
|
||||
except exc.OpenStackCloudURINotFound:
|
||||
self.log.debug(
|
||||
"QoS minimum bandwidth rule {rule_id} not found in policy "
|
||||
@ -4262,10 +4269,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if port_id:
|
||||
json_body['port_id'] = port_id
|
||||
|
||||
return self._network_client.put(
|
||||
"/routers/{router_id}/add_router_interface.json".format(
|
||||
router_id=router['id']),
|
||||
json=json_body,
|
||||
return _adapter._json_response(
|
||||
self.network.put(
|
||||
"/routers/{router_id}/add_router_interface.json".format(
|
||||
router_id=router['id']),
|
||||
json=json_body),
|
||||
error_message="Error attaching interface to router {0}".format(
|
||||
router['id']))
|
||||
|
||||
@ -4296,10 +4304,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
raise ValueError(
|
||||
"At least one of subnet_id or port_id must be supplied.")
|
||||
|
||||
self._network_client.put(
|
||||
"/routers/{router_id}/remove_router_interface.json".format(
|
||||
router_id=router['id']),
|
||||
json=json_body,
|
||||
exceptions.raise_from_response(
|
||||
self.network.put(
|
||||
"/routers/{router_id}/remove_router_interface.json".format(
|
||||
router_id=router['id']),
|
||||
json=json_body),
|
||||
error_message="Error detaching interface from router {0}".format(
|
||||
router['id']))
|
||||
|
||||
@ -4384,8 +4393,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
'target cloud')
|
||||
router['availability_zone_hints'] = availability_zone_hints
|
||||
|
||||
data = self._network_client.post(
|
||||
"/routers.json", json={"router": router},
|
||||
data = _adapter._json_response(
|
||||
self.network.post("/routers.json", json={"router": router}),
|
||||
error_message="Error creating router {0}".format(name))
|
||||
return self._get_and_munchify('router', data)
|
||||
|
||||
@ -4450,9 +4459,11 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
raise exc.OpenStackCloudException(
|
||||
"Router %s not found." % name_or_id)
|
||||
|
||||
data = self._network_client.put(
|
||||
resp = self.network.put(
|
||||
"/routers/{router_id}.json".format(router_id=curr_router['id']),
|
||||
json={"router": router},
|
||||
json={"router": router})
|
||||
data = _adapter._json_response(
|
||||
resp,
|
||||
error_message="Error updating router {0}".format(name_or_id))
|
||||
return self._get_and_munchify('router', data)
|
||||
|
||||
@ -4474,9 +4485,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
self.log.debug("Router %s not found for deleting", name_or_id)
|
||||
return False
|
||||
|
||||
self._network_client.delete(
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/routers/{router_id}.json".format(router_id=router['id']),
|
||||
error_message="Error deleting router {0}".format(name_or_id))
|
||||
error_message="Error deleting router {0}".format(name_or_id)))
|
||||
|
||||
return True
|
||||
|
||||
@ -5952,7 +5963,7 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
|
||||
def _submit_create_fip(self, kwargs):
|
||||
# Split into a method to aid in test mocking
|
||||
data = self._network_client.post(
|
||||
data = self.network.post(
|
||||
"/floatingips.json", json={"floatingip": kwargs})
|
||||
return self._normalize_floating_ip(
|
||||
self._get_and_munchify('floatingip', data))
|
||||
@ -6103,9 +6114,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
|
||||
def _neutron_delete_floating_ip(self, floating_ip_id):
|
||||
try:
|
||||
self._network_client.delete(
|
||||
_adapter._json_response(self.network.delete(
|
||||
"/floatingips/{fip_id}.json".format(fip_id=floating_ip_id),
|
||||
error_message="unable to delete floating IP")
|
||||
error_message="unable to delete floating IP"))
|
||||
except exc.OpenStackCloudResourceNotFound:
|
||||
return False
|
||||
except Exception as e:
|
||||
@ -6344,9 +6355,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if fixed_address is not None:
|
||||
floating_ip_args['fixed_ip_address'] = fixed_address
|
||||
|
||||
return self._network_client.put(
|
||||
"/floatingips/{fip_id}.json".format(fip_id=floating_ip['id']),
|
||||
json={'floatingip': floating_ip_args},
|
||||
return _adapter._json_response(
|
||||
self.network.put(
|
||||
"/floatingips/{fip_id}.json".format(fip_id=floating_ip['id']),
|
||||
json={'floatingip': floating_ip_args}),
|
||||
error_message=("Error attaching IP {ip} to "
|
||||
"server {server_id}".format(
|
||||
ip=floating_ip['id'],
|
||||
@ -6401,9 +6413,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
f_ip = self.get_floating_ip(id=floating_ip_id)
|
||||
if f_ip is None or not f_ip['attached']:
|
||||
return False
|
||||
self._network_client.put(
|
||||
"/floatingips/{fip_id}.json".format(fip_id=floating_ip_id),
|
||||
json={"floatingip": {"port_id": None}},
|
||||
exceptions.raise_from_response(
|
||||
self.network.put(
|
||||
"/floatingips/{fip_id}.json".format(fip_id=floating_ip_id),
|
||||
json={"floatingip": {"port_id": None}}),
|
||||
error_message=("Error detaching IP {ip} from "
|
||||
"server {server_id}".format(
|
||||
ip=floating_ip_id, server_id=server_id)))
|
||||
@ -8234,10 +8247,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if use_default_subnetpool:
|
||||
subnet['use_default_subnetpool'] = True
|
||||
|
||||
data = self._network_client.post("/subnets.json",
|
||||
json={"subnet": subnet})
|
||||
response = self.network.post("/subnets.json", json={"subnet": subnet})
|
||||
|
||||
return self._get_and_munchify('subnet', data)
|
||||
return self._get_and_munchify('subnet', response)
|
||||
|
||||
def delete_subnet(self, name_or_id):
|
||||
"""Delete a subnet.
|
||||
@ -8257,8 +8269,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
self.log.debug("Subnet %s not found for deleting", name_or_id)
|
||||
return False
|
||||
|
||||
self._network_client.delete(
|
||||
"/subnets/{subnet_id}.json".format(subnet_id=subnet['id']))
|
||||
exceptions.raise_from_response(self.network.delete(
|
||||
"/subnets/{subnet_id}.json".format(subnet_id=subnet['id'])))
|
||||
return True
|
||||
|
||||
def update_subnet(self, name_or_id, subnet_name=None, enable_dhcp=None,
|
||||
@ -8343,10 +8355,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
raise exc.OpenStackCloudException(
|
||||
"Subnet %s not found." % name_or_id)
|
||||
|
||||
data = self._network_client.put(
|
||||
response = self.network.put(
|
||||
"/subnets/{subnet_id}.json".format(subnet_id=curr_subnet['id']),
|
||||
json={"subnet": subnet})
|
||||
return self._get_and_munchify('subnet', data)
|
||||
return self._get_and_munchify('subnet', response)
|
||||
|
||||
@_utils.valid_kwargs('name', 'admin_state_up', 'mac_address', 'fixed_ips',
|
||||
'subnet_id', 'ip_address', 'security_groups',
|
||||
@ -8407,8 +8419,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"""
|
||||
kwargs['network_id'] = network_id
|
||||
|
||||
data = self._network_client.post(
|
||||
"/ports.json", json={'port': kwargs},
|
||||
data = _adapter._json_response(
|
||||
self.network.post("/ports.json", json={'port': kwargs}),
|
||||
error_message="Error creating port for network {0}".format(
|
||||
network_id))
|
||||
return self._get_and_munchify('port', data)
|
||||
@ -8471,9 +8483,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
raise exc.OpenStackCloudException(
|
||||
"failed to find port '{port}'".format(port=name_or_id))
|
||||
|
||||
data = self._network_client.put(
|
||||
"/ports/{port_id}.json".format(port_id=port['id']),
|
||||
json={"port": kwargs},
|
||||
data = _adapter._json_response(
|
||||
self.network.put(
|
||||
"/ports/{port_id}.json".format(port_id=port['id']),
|
||||
json={"port": kwargs}),
|
||||
error_message="Error updating port {0}".format(name_or_id))
|
||||
return self._get_and_munchify('port', data)
|
||||
|
||||
@ -8491,8 +8504,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
self.log.debug("Port %s not found for deleting", name_or_id)
|
||||
return False
|
||||
|
||||
self._network_client.delete(
|
||||
"/ports/{port_id}.json".format(port_id=port['id']),
|
||||
exceptions.raise_from_response(
|
||||
self.network.delete(
|
||||
"/ports/{port_id}.json".format(port_id=port['id'])),
|
||||
error_message="Error deleting port {0}".format(name_or_id))
|
||||
return True
|
||||
|
||||
@ -8526,9 +8540,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if project_id is not None:
|
||||
security_group_json['security_group']['tenant_id'] = project_id
|
||||
if self._use_neutron_secgroups():
|
||||
data = self._network_client.post(
|
||||
'/security-groups.json',
|
||||
json=security_group_json,
|
||||
data = _adapter._json_response(
|
||||
self.network.post(
|
||||
'/security-groups.json',
|
||||
json=security_group_json),
|
||||
error_message="Error creating security group {0}".format(name))
|
||||
else:
|
||||
data = _adapter._json_response(self.compute.post(
|
||||
@ -8562,8 +8577,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
return False
|
||||
|
||||
if self._use_neutron_secgroups():
|
||||
self._network_client.delete(
|
||||
'/security-groups/{sg_id}.json'.format(sg_id=secgroup['id']),
|
||||
exceptions.raise_from_response(
|
||||
self.network.delete(
|
||||
'/security-groups/{sg_id}.json'.format(
|
||||
sg_id=secgroup['id'])),
|
||||
error_message="Error deleting security group {0}".format(
|
||||
name_or_id)
|
||||
)
|
||||
@ -8599,9 +8616,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
"Security group %s not found." % name_or_id)
|
||||
|
||||
if self._use_neutron_secgroups():
|
||||
data = self._network_client.put(
|
||||
'/security-groups/{sg_id}.json'.format(sg_id=group['id']),
|
||||
json={'security_group': kwargs},
|
||||
data = _adapter._json_response(
|
||||
self.network.put(
|
||||
'/security-groups/{sg_id}.json'.format(sg_id=group['id']),
|
||||
json={'security_group': kwargs}),
|
||||
error_message="Error updating security group {0}".format(
|
||||
name_or_id))
|
||||
else:
|
||||
@ -8698,9 +8716,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if project_id is not None:
|
||||
rule_def['tenant_id'] = project_id
|
||||
|
||||
data = self._network_client.post(
|
||||
'/security-group-rules.json',
|
||||
json={'security_group_rule': rule_def},
|
||||
data = _adapter._json_response(
|
||||
self.network.post(
|
||||
'/security-group-rules.json',
|
||||
json={'security_group_rule': rule_def}),
|
||||
error_message="Error creating security group rule")
|
||||
else:
|
||||
# NOTE: Neutron accepts None for protocol. Nova does not.
|
||||
@ -8770,8 +8789,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
|
||||
if self._use_neutron_secgroups():
|
||||
try:
|
||||
self._network_client.delete(
|
||||
'/security-group-rules/{sg_id}.json'.format(sg_id=rule_id),
|
||||
exceptions.raise_from_response(
|
||||
self.network.delete(
|
||||
'/security-group-rules/{sg_id}.json'.format(
|
||||
sg_id=rule_id)),
|
||||
error_message="Error deleting security group rule "
|
||||
"{0}".format(rule_id))
|
||||
except exc.OpenStackCloudResourceNotFound:
|
||||
@ -8779,8 +8800,13 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
return True
|
||||
|
||||
else:
|
||||
_adapter._json_response(self.compute.delete(
|
||||
'/os-security-group-rules/{id}'.format(id=rule_id)))
|
||||
try:
|
||||
exceptions.raise_from_response(
|
||||
self.compute.delete(
|
||||
'/os-security-group-rules/{id}'.format(id=rule_id)))
|
||||
except exc.OpenStackCloudResourceNotFound:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
def list_zones(self):
|
||||
@ -11876,9 +11902,10 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if not proj:
|
||||
raise exc.OpenStackCloudException("project does not exist")
|
||||
|
||||
self._network_client.put(
|
||||
'/quotas/{project_id}.json'.format(project_id=proj.id),
|
||||
json={'quota': kwargs},
|
||||
exceptions.raise_from_response(
|
||||
self.network.put(
|
||||
'/quotas/{project_id}.json'.format(project_id=proj.id),
|
||||
json={'quota': kwargs}),
|
||||
error_message=("Error setting Neutron's quota for "
|
||||
"project {0}".format(proj.id)))
|
||||
|
||||
@ -11899,8 +11926,8 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
if details:
|
||||
url = url + "/details"
|
||||
url = url + ".json"
|
||||
data = self._network_client.get(
|
||||
url,
|
||||
data = _adapter._json_response(
|
||||
self.network.get(url),
|
||||
error_message=("Error fetching Neutron's quota for "
|
||||
"project {0}".format(proj.id)))
|
||||
return self._get_and_munchify('quota', data)
|
||||
@ -11924,8 +11951,9 @@ class OpenStackCloud(_normalize.Normalizer):
|
||||
proj = self.get_project(name_or_id)
|
||||
if not proj:
|
||||
raise exc.OpenStackCloudException("project does not exist")
|
||||
self._network_client.delete(
|
||||
'/quotas/{project_id}.json'.format(project_id=proj.id),
|
||||
exceptions.raise_from_response(
|
||||
self.network.delete(
|
||||
'/quotas/{project_id}.json'.format(project_id=proj.id)),
|
||||
error_message=("Error deleting Neutron's quota for "
|
||||
"project {0}".format(proj.id)))
|
||||
|
||||
|
@ -117,6 +117,7 @@ class ServiceDescription(object):
|
||||
)
|
||||
|
||||
if proxy_obj:
|
||||
|
||||
data = proxy_obj.get_endpoint_data()
|
||||
if data.catalog_url != data.service_url:
|
||||
ep_key = '{service_type}_endpoint_override'.format(
|
||||
|
Loading…
x
Reference in New Issue
Block a user