Merge "api: Simplify servers views (3/3)"

This commit is contained in:
Zuul
2026-01-27 14:17:53 +00:00
committed by Gerrit Code Review

View File

@@ -292,25 +292,24 @@ class ViewBuilder(common.ViewBuilder):
server = {
"server": {
"accessIPv4": str(ip_v4) if ip_v4 is not None else '',
"accessIPv6": str(ip_v6) if ip_v6 is not None else '',
"addresses": self._get_addresses(
request, instance, extend_address),
"created": utils.isotime(instance["created_at"]),
"flavor": self._get_flavor(
request, instance, show_extra_specs),
"hostId": self._get_host_id(instance),
"id": instance["uuid"],
"image": self._get_image(request, instance),
"links": self._get_links(
request, instance["uuid"], self._collection_name),
"metadata": self._get_metadata(instance),
"name": instance["display_name"],
"status": self._get_vm_status(instance),
"tenant_id": instance.get("project_id") or "",
"user_id": instance.get("user_id") or "",
"metadata": self._get_metadata(instance),
"hostId": self._get_host_id(instance),
"image": self._get_image(request, instance),
"flavor": self._get_flavor(request, instance,
show_extra_specs),
"created": utils.isotime(instance["created_at"]),
"updated": utils.isotime(instance["updated_at"]),
"addresses": self._get_addresses(request, instance,
extend_address),
"accessIPv4": str(ip_v4) if ip_v4 is not None else '',
"accessIPv6": str(ip_v6) if ip_v6 is not None else '',
"links": self._get_links(request,
instance["uuid"],
self._collection_name),
# NOTE(sdague): historically this was the
# os-disk-config extension, but now that extensions
# are gone, we merge these attributes here.
@@ -334,14 +333,6 @@ class ViewBuilder(common.ViewBuilder):
# attributes after v2.1. They are only in v2.1 for backward compat
# with v2.0.
server["server"]["OS-EXT-AZ:availability_zone"] = az or ''
if api_version_request.is_supported(request, '2.96'):
pinned_az = self._get_pinned_az(context, instance, provided_az)
server['server']['pinned_availability_zone'] = pinned_az
if api_version_request.is_supported(request, '2.100'):
server['server']['scheduler_hints'] = (
self._get_scheduler_hints(
context, instance, provided_sched_hints))
if show_config_drive:
server["server"]["config_drive"] = instance["config_drive"]
@@ -416,6 +407,9 @@ class ViewBuilder(common.ViewBuilder):
context, [instance["uuid"]])
self._add_volumes_attachments(request, server["server"], bdms)
if api_version_request.is_supported(request, '2.9'):
server["server"]["locked"] = bool(instance["locked_by"])
if api_version_request.is_supported(request, '2.16'):
if show_host_status is None:
unknown_only = self._get_host_status_unknown_only(
@@ -435,22 +429,14 @@ class ViewBuilder(common.ViewBuilder):
host_status == fields.HostStatus.UNKNOWN):
server["server"]['host_status'] = host_status
if api_version_request.is_supported(request, "2.9"):
server["server"]["locked"] = (True if instance["locked_by"]
else False)
if api_version_request.is_supported(request, "2.73"):
server["server"]["locked_reason"] = (instance.system_metadata.get(
"locked_reason"))
if api_version_request.is_supported(request, "2.19"):
if api_version_request.is_supported(request, '2.19'):
server["server"]["description"] = instance.get(
"display_description")
"display_description")
if api_version_request.is_supported(request, "2.26"):
if api_version_request.is_supported(request, '2.26'):
server["server"]["tags"] = [t.tag for t in instance.tags]
if api_version_request.is_supported(request, "2.63"):
if api_version_request.is_supported(request, '2.63'):
trusted_certs = None
if instance.trusted_certs:
trusted_certs = instance.trusted_certs.ids
@@ -461,14 +447,27 @@ class ViewBuilder(common.ViewBuilder):
server['server']['server_groups'] = self._get_server_groups(
context, instance)
if api_version_request.is_supported(request, '2.73'):
server["server"]["locked_reason"] = (
instance.system_metadata.get("locked_reason"))
# TODO(stephenfin): Remove this check once we remove the
# OS-EXT-SRV-ATTR:hostname policy checks from the policy is Y or later
if api_version_request.is_supported(request, '2.90'):
# API 2.90 made this field visible to non-admins, but we only show
# it if it's not already added
if not show_extended_attr:
server["server"]["OS-EXT-SRV-ATTR:hostname"] = \
instance.hostname
server["server"]["OS-EXT-SRV-ATTR:hostname"] = (
instance.hostname)
if show_AZ:
if api_version_request.is_supported(request, '2.96'):
pinned_az = self._get_pinned_az(context, instance, provided_az)
server['server']['pinned_availability_zone'] = pinned_az
if api_version_request.is_supported(request, '2.100'):
server['server']['scheduler_hints'] = self._get_scheduler_hints(
context, instance, provided_sched_hints)
return server