diff options
Diffstat (limited to 'nova/api/openstack/compute/servers.py')
-rw-r--r-- | nova/api/openstack/compute/servers.py | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 1d6d29b45f..33e74456fd 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -68,7 +68,6 @@ INVALID_FLAVOR_IMAGE_EXCEPTIONS = ( exception.ImageNUMATopologyIncomplete, exception.ImageNUMATopologyMemoryOutOfRange, exception.ImageNUMATopologyRebuildConflict, - exception.ImagePMUConflict, exception.ImageSerialPortNumberExceedFlavorValue, exception.ImageSerialPortNumberInvalid, exception.ImageVCPULimitsRangeExceeded, @@ -678,7 +677,8 @@ class ServersController(wsgi.Controller): @validation.schema(schema_servers.create_v263, '2.63', '2.66') @validation.schema(schema_servers.create_v267, '2.67', '2.73') @validation.schema(schema_servers.create_v274, '2.74', '2.89') - @validation.schema(schema_servers.create_v290, '2.90') + @validation.schema(schema_servers.create_v290, '2.90', '2.93') + @validation.schema(schema_servers.create_v294, '2.94') def create(self, req, body): """Creates a new server for a given user.""" context = req.environ['nova.context'] @@ -797,8 +797,7 @@ class ServersController(wsgi.Controller): supports_multiattach=supports_multiattach, supports_port_resource_request=supports_port_resource_request, **create_kwargs) - except (exception.QuotaError, - exception.PortLimitExceeded) as error: + except exception.OverQuota as error: raise exc.HTTPForbidden( explanation=error.format_message()) except exception.ImageNotFound: @@ -862,6 +861,7 @@ class ServersController(wsgi.Controller): exception.DeviceProfileError, exception.ComputeHostNotFound, exception.ForbiddenPortsWithAccelerator, + exception.ForbiddenWithRemoteManagedPorts, exception.ExtendedResourceRequestOldCompute, ) as error: raise exc.HTTPBadRequest(explanation=error.format_message()) @@ -907,7 +907,8 @@ class ServersController(wsgi.Controller): @validation.schema(schema_servers.update_v20, '2.0', '2.0') @validation.schema(schema_servers.update, '2.1', '2.18') @validation.schema(schema_servers.update_v219, '2.19', '2.89') - @validation.schema(schema_servers.update_v290, '2.90') + @validation.schema(schema_servers.update_v290, '2.90', '2.93') + @validation.schema(schema_servers.update_v294, '2.94') def update(self, req, id, body): """Update server then pass on to version-specific controller.""" @@ -1053,7 +1054,7 @@ class ServersController(wsgi.Controller): try: self.compute_api.resize(context, instance, flavor_id, auto_disk_config=auto_disk_config) - except exception.QuotaError as error: + except exception.OverQuota as error: raise exc.HTTPForbidden( explanation=error.format_message()) except ( @@ -1148,7 +1149,8 @@ class ServersController(wsgi.Controller): @validation.schema(schema_servers.rebuild_v254, '2.54', '2.56') @validation.schema(schema_servers.rebuild_v257, '2.57', '2.62') @validation.schema(schema_servers.rebuild_v263, '2.63', '2.89') - @validation.schema(schema_servers.rebuild_v290, '2.90') + @validation.schema(schema_servers.rebuild_v290, '2.90', '2.93') + @validation.schema(schema_servers.rebuild_v294, '2.94') def _action_rebuild(self, req, id, body): """Rebuild an instance with the given attributes.""" rebuild_dict = body['rebuild'] @@ -1206,6 +1208,9 @@ class ServersController(wsgi.Controller): ): kwargs['hostname'] = rebuild_dict['hostname'] + if api_version_request.is_supported(req, min_version='2.93'): + kwargs['reimage_boot_volume'] = True + for request_attribute, instance_attribute in attr_map.items(): try: if request_attribute == 'name': @@ -1237,7 +1242,7 @@ class ServersController(wsgi.Controller): except exception.KeypairNotFound: msg = _("Invalid key_name provided.") raise exc.HTTPBadRequest(explanation=msg) - except exception.QuotaError as error: + except exception.OverQuota as error: raise exc.HTTPForbidden(explanation=error.format_message()) except (exception.AutoDiskConfigDisabledByImage, exception.CertificateValidationFailed, @@ -1351,6 +1356,8 @@ class ServersController(wsgi.Controller): except exception.InstanceInvalidState as state_error: common.raise_http_conflict_for_instance_invalid_state(state_error, 'createImage', id) + except exception.InstanceQuiesceFailed as err: + raise exc.HTTPConflict(explanation=err.format_message()) except exception.Invalid as err: raise exc.HTTPBadRequest(explanation=err.format_message()) except exception.OverQuota as e: |