api: Pass request to 'addresses' view builder
We'll need this to add some microversion-specific behavior in the near future. An out-of-date comment is removed. Change-Id: Ia6a13e3c25f4276a595026a4cda7944898da43b7 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
parent
b543f8226c
commit
0942163c82
|
@ -25,10 +25,6 @@ from nova.policies import ips as ips_policies
|
|||
|
||||
class IPsController(wsgi.Controller):
|
||||
"""The servers addresses API controller for the OpenStack API."""
|
||||
# Note(gmann): here using V2 view builder instead of V3 to have V2.1
|
||||
# server ips response same as V2 which does not include "OS-EXT-IPS:type"
|
||||
# & "OS-EXT-IPS-MAC:mac_addr". If needed those can be added with
|
||||
# microversion by using V2.1 view builder.
|
||||
_view_builder_class = views_addresses.ViewBuilder
|
||||
|
||||
def __init__(self):
|
||||
|
@ -42,7 +38,7 @@ class IPsController(wsgi.Controller):
|
|||
context.can(ips_policies.POLICY_ROOT % 'index',
|
||||
target={'project_id': instance.project_id})
|
||||
networks = common.get_networks_for_instance(context, instance)
|
||||
return self._view_builder.index(networks)
|
||||
return self._view_builder.index(req, networks)
|
||||
|
||||
@wsgi.expected_errors(404)
|
||||
def show(self, req, server_id, id):
|
||||
|
@ -55,4 +51,4 @@ class IPsController(wsgi.Controller):
|
|||
msg = _("Instance is not a member of specified network")
|
||||
raise exc.HTTPNotFound(explanation=msg)
|
||||
|
||||
return self._view_builder.show(networks[id], id)
|
||||
return self._view_builder.show(req, networks[id], id)
|
||||
|
|
|
@ -24,7 +24,7 @@ class ViewBuilder(common.ViewBuilder):
|
|||
|
||||
_collection_name = "addresses"
|
||||
|
||||
def basic(self, ip, extend_address=False):
|
||||
def basic(self, request, ip, extend_address=False):
|
||||
"""Return a dictionary describing an IP address."""
|
||||
address = {
|
||||
"version": ip["version"],
|
||||
|
@ -37,15 +37,17 @@ class ViewBuilder(common.ViewBuilder):
|
|||
})
|
||||
return address
|
||||
|
||||
def show(self, network, label, extend_address=False):
|
||||
def show(self, request, network, label, extend_address=False):
|
||||
"""Returns a dictionary describing a network."""
|
||||
all_ips = itertools.chain(network["ips"], network["floating_ips"])
|
||||
return {label: [self.basic(ip, extend_address) for ip in all_ips]}
|
||||
return {
|
||||
label: [self.basic(request, ip, extend_address) for ip in all_ips],
|
||||
}
|
||||
|
||||
def index(self, networks, extend_address=False):
|
||||
def index(self, request, networks, extend_address=False):
|
||||
"""Return a dictionary describing a list of networks."""
|
||||
addresses = collections.OrderedDict()
|
||||
for label, network in networks.items():
|
||||
network_dict = self.show(network, label, extend_address)
|
||||
network_dict = self.show(request, network, label, extend_address)
|
||||
addresses[label] = network_dict[label]
|
||||
return dict(addresses=addresses)
|
||||
return {'addresses': addresses}
|
||||
|
|
|
@ -525,10 +525,13 @@ class ViewBuilder(common.ViewBuilder):
|
|||
# Hide server addresses while the server is building.
|
||||
if instance.vm_state == vm_states.BUILDING:
|
||||
return {}
|
||||
|
||||
context = request.environ["nova.context"]
|
||||
networks = common.get_networks_for_instance(context, instance)
|
||||
return self._address_builder.index(networks,
|
||||
extend_address)["addresses"]
|
||||
|
||||
return self._address_builder.index(
|
||||
request, networks, extend_address,
|
||||
)["addresses"]
|
||||
|
||||
def _get_image(self, request, instance):
|
||||
image_ref = instance["image_ref"]
|
||||
|
|
Loading…
Reference in New Issue