diff --git a/doc/v3/api_samples/os-access-ips/server-action-rebuild-resp.json b/doc/v3/api_samples/os-access-ips/server-action-rebuild-resp.json index 95966df5f9ff..1a08d141e308 100644 --- a/doc/v3/api_samples/os-access-ips/server-action-rebuild-resp.json +++ b/doc/v3/api_samples/os-access-ips/server-action-rebuild-resp.json @@ -4,8 +4,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/doc/v3/api_samples/os-access-ips/server-put-resp.json b/doc/v3/api_samples/os-access-ips/server-put-resp.json index e25443007902..13f2c8e80bf2 100644 --- a/doc/v3/api_samples/os-access-ips/server-put-resp.json +++ b/doc/v3/api_samples/os-access-ips/server-put-resp.json @@ -4,8 +4,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/doc/v3/api_samples/os-disk-config/server-action-rebuild-resp.json b/doc/v3/api_samples/os-disk-config/server-action-rebuild-resp.json index a5147ae5b8a2..67032b2d675e 100644 --- a/doc/v3/api_samples/os-disk-config/server-action-rebuild-resp.json +++ b/doc/v3/api_samples/os-disk-config/server-action-rebuild-resp.json @@ -5,8 +5,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/doc/v3/api_samples/os-disk-config/server-update-put-resp.json b/doc/v3/api_samples/os-disk-config/server-update-put-resp.json index e29d81a6e2e6..1706b980d8bb 100644 --- a/doc/v3/api_samples/os-disk-config/server-update-put-resp.json +++ b/doc/v3/api_samples/os-disk-config/server-update-put-resp.json @@ -5,8 +5,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/doc/v3/api_samples/os-personality/server-action-rebuild-resp.json b/doc/v3/api_samples/os-personality/server-action-rebuild-resp.json index a78ede2669a9..4b2e5e0383bd 100644 --- a/doc/v3/api_samples/os-personality/server-action-rebuild-resp.json +++ b/doc/v3/api_samples/os-personality/server-action-rebuild-resp.json @@ -4,8 +4,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/doc/v3/api_samples/servers/server-action-rebuild-resp.json b/doc/v3/api_samples/servers/server-action-rebuild-resp.json index 8052530570c8..35b0f890920b 100644 --- a/doc/v3/api_samples/servers/server-action-rebuild-resp.json +++ b/doc/v3/api_samples/servers/server-action-rebuild-resp.json @@ -4,8 +4,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/nova/api/openstack/compute/plugins/v3/servers.py b/nova/api/openstack/compute/plugins/v3/servers.py index 8a589e973eaa..8865b1f32617 100644 --- a/nova/api/openstack/compute/plugins/v3/servers.py +++ b/nova/api/openstack/compute/plugins/v3/servers.py @@ -727,7 +727,8 @@ class ServersController(wsgi.Controller): policy.enforce(ctxt, 'compute:update', instance) instance.update(update_dict) instance.save() - return self._view_builder.show(req, instance) + return self._view_builder.show(req, instance, + extend_address=False) except exception.InstanceNotFound: msg = _("Instance could not be found") raise exc.HTTPNotFound(explanation=msg) @@ -956,7 +957,7 @@ class ServersController(wsgi.Controller): instance = self._get_server(context, req, id) - view = self._view_builder.show(req, instance) + view = self._view_builder.show(req, instance, extend_address=False) # Add on the admin_password attribute since the view doesn't do it # unless instance passwords are disabled diff --git a/nova/api/openstack/compute/views/addresses.py b/nova/api/openstack/compute/views/addresses.py index 34aacb93b7a4..894d4367887d 100644 --- a/nova/api/openstack/compute/views/addresses.py +++ b/nova/api/openstack/compute/views/addresses.py @@ -24,34 +24,38 @@ class ViewBuilder(common.ViewBuilder): _collection_name = "addresses" - def basic(self, ip): + def basic(self, ip, extend_address=False): """Return a dictionary describing an IP address.""" return { "version": ip["version"], "addr": ip["address"], } - def show(self, network, label): + def show(self, 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) for ip in all_ips]} + return {label: [self.basic(ip, extend_address) for ip in all_ips]} - def index(self, networks): + def index(self, 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) + network_dict = self.show(network, label, extend_address) addresses[label] = network_dict[label] return dict(addresses=addresses) class ViewBuilderV3(ViewBuilder): """Models server addresses as a dictionary.""" - def basic(self, ip): + def basic(self, ip, extend_address=False): """Return a dictionary describing an IP address.""" - return { + address = { "version": ip["version"], "addr": ip["address"], - "OS-EXT-IPS:type": ip["type"], - "OS-EXT-IPS-MAC:mac_addr": ip['mac_address'], } + if extend_address: + address.update({ + "OS-EXT-IPS:type": ip["type"], + "OS-EXT-IPS-MAC:mac_addr": ip['mac_address'], + }) + return address diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py index 8edfdae9fb36..005f2287888d 100644 --- a/nova/api/openstack/compute/views/servers.py +++ b/nova/api/openstack/compute/views/servers.py @@ -170,10 +170,11 @@ class ViewBuilder(common.ViewBuilder): sha_hash = hashlib.sha224(project + host) return sha_hash.hexdigest() - def _get_addresses(self, request, instance): + def _get_addresses(self, request, instance, extend_address=False): context = request.environ["nova.context"] networks = common.get_networks_for_instance(context, instance) - return self._address_builder.index(networks)["addresses"] + return self._address_builder.index(networks, + extend_address)["addresses"] def _get_image(self, request, instance): image_ref = instance["image_ref"] @@ -246,7 +247,7 @@ class ViewBuilderV3(ViewBuilder): # use glance endpoint. We revert back it to use nova endpoint for v2.1. self._image_builder = views_images.ViewBuilder() - def show(self, request, instance): + def show(self, request, instance, extend_address=True): """Detailed view of a single instance.""" server = { "server": { @@ -264,7 +265,8 @@ class ViewBuilderV3(ViewBuilder): "flavor": self._get_flavor(request, instance), "created": timeutils.isotime(instance["created_at"]), "updated": timeutils.isotime(instance["updated_at"]), - "addresses": self._get_addresses(request, instance), + "addresses": self._get_addresses(request, instance, + extend_address), "links": self._get_links(request, instance["uuid"], self._collection_name), diff --git a/nova/tests/functional/v3/api_samples/os-access-ips/server-action-rebuild-resp.json.tpl b/nova/tests/functional/v3/api_samples/os-access-ips/server-action-rebuild-resp.json.tpl index e9b7921f30a3..b8756e02d915 100644 --- a/nova/tests/functional/v3/api_samples/os-access-ips/server-action-rebuild-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/os-access-ips/server-action-rebuild-resp.json.tpl @@ -4,9 +4,7 @@ "private": [ { "addr": "%(ip)s", - "version": 4, - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed" + "version": 4 } ] }, diff --git a/nova/tests/functional/v3/api_samples/os-access-ips/server-put-resp.json.tpl b/nova/tests/functional/v3/api_samples/os-access-ips/server-put-resp.json.tpl index b3e8c665e83b..302bccd00ed5 100644 --- a/nova/tests/functional/v3/api_samples/os-access-ips/server-put-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/os-access-ips/server-put-resp.json.tpl @@ -6,8 +6,6 @@ "private": [ { "addr": "%(ip)s", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/nova/tests/functional/v3/api_samples/os-disk-config/server-action-rebuild-resp.json.tpl b/nova/tests/functional/v3/api_samples/os-disk-config/server-action-rebuild-resp.json.tpl index ebb5f3d8a0c9..e1bea0978afd 100644 --- a/nova/tests/functional/v3/api_samples/os-disk-config/server-action-rebuild-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/os-disk-config/server-action-rebuild-resp.json.tpl @@ -5,8 +5,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/nova/tests/functional/v3/api_samples/os-disk-config/server-update-put-resp.json.tpl b/nova/tests/functional/v3/api_samples/os-disk-config/server-update-put-resp.json.tpl index 26cf74e80a61..ef6eae378538 100644 --- a/nova/tests/functional/v3/api_samples/os-disk-config/server-update-put-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/os-disk-config/server-update-put-resp.json.tpl @@ -5,8 +5,6 @@ "private": [ { "addr": "192.168.0.3", - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed", "version": 4 } ] diff --git a/nova/tests/functional/v3/api_samples/os-personality/server-action-rebuild-resp.json.tpl b/nova/tests/functional/v3/api_samples/os-personality/server-action-rebuild-resp.json.tpl index d3d788e44444..81a29e433972 100644 --- a/nova/tests/functional/v3/api_samples/os-personality/server-action-rebuild-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/os-personality/server-action-rebuild-resp.json.tpl @@ -4,9 +4,7 @@ "private": [ { "addr": "%(ip)s", - "version": 4, - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed" + "version": 4 } ] }, diff --git a/nova/tests/functional/v3/api_samples/servers/server-action-rebuild-resp.json.tpl b/nova/tests/functional/v3/api_samples/servers/server-action-rebuild-resp.json.tpl index 3c44eb8d7e68..01f4c7d57143 100644 --- a/nova/tests/functional/v3/api_samples/servers/server-action-rebuild-resp.json.tpl +++ b/nova/tests/functional/v3/api_samples/servers/server-action-rebuild-resp.json.tpl @@ -4,9 +4,7 @@ "private": [ { "addr": "%(ip)s", - "version": 4, - "OS-EXT-IPS-MAC:mac_addr": "aa:bb:cc:dd:ee:ff", - "OS-EXT-IPS:type": "fixed" + "version": 4 } ] },