def validate_can_perform_action(self): """ Raises exception if an instance action cannot currently be performed. """ # cases where action cannot be performed if self.db_info.server_status != "ACTIVE": status = self.db_info.server_status elif ( self.db_info.task_status != InstanceTasks.NONE and self.db_info.task_status != InstanceTasks.RESTART_REQUIRED ): status = self.db_info.task_status elif not self.datastore_status.status.action_is_allowed: status = self.status elif Backup.running(self.id): status = InstanceStatus.BACKUP else: # action can be performed return msg = _( "Instance %(instance_id)s is not currently available for an " "action to be performed (status was %(action_status)s)." ) % {"instance_id": self.id, "action_status": status} LOG.error(msg) raise exception.UnprocessableEntity(msg)
def validate_can_perform_action(self): """ Raises exception if an instance action cannot currently be performed. """ # cases where action cannot be performed if self.db_info.server_status != 'ACTIVE': status = self.db_info.server_status elif (self.db_info.task_status != InstanceTasks.NONE and self.db_info.task_status != InstanceTasks.RESTART_REQUIRED): status = self.db_info.task_status elif not self.datastore_status.status.action_is_allowed: status = self.status elif Backup.running(self.id): status = InstanceStatus.BACKUP else: # action can be performed return msg = (_("Instance %(instance_id)s is not currently available for an " "action to be performed (status was %(action_status)s).") % { 'instance_id': self.id, 'action_status': status }) LOG.error(msg) raise exception.UnprocessableEntity(msg)
def status(self): # Check for taskmanager errors. if self.db_info.task_status.is_error: return InstanceStatus.ERROR # Check for taskmanager status. action = self.db_info.task_status.action if "BUILDING" == action: if "ERROR" == self.db_info.server_status: return InstanceStatus.ERROR return InstanceStatus.BUILD if "REBOOTING" == action: return InstanceStatus.REBOOT if "RESIZING" == action: return InstanceStatus.RESIZE if "RESTART_REQUIRED" == action: return InstanceStatus.RESTART_REQUIRED if InstanceTasks.PROMOTING.action == action: return InstanceStatus.PROMOTE if InstanceTasks.EJECTING.action == action: return InstanceStatus.EJECT if InstanceTasks.LOGGING.action == action: return InstanceStatus.LOGGING # Check for server status. if self.db_info.server_status in ["BUILD", "ERROR", "REBOOT", "RESIZE"]: return self.db_info.server_status # As far as Trove is concerned, Nova instances in VERIFY_RESIZE should # still appear as though they are in RESIZE. if self.db_info.server_status in ["VERIFY_RESIZE"]: return InstanceStatus.RESIZE # Check if there is a backup running for this instance if Backup.running(self.id): return InstanceStatus.BACKUP # Report as Shutdown while deleting, unless there's an error. if "DELETING" == action: if self.db_info.server_status in ["ACTIVE", "SHUTDOWN", "DELETED"]: return InstanceStatus.SHUTDOWN else: LOG.error( _LE("While shutting down instance (%(instance)s): " "server had status (%(status)s)."), {"instance": self.id, "status": self.db_info.server_status}, ) return InstanceStatus.ERROR # Check against the service status. # The service is only paused during a reboot. if tr_instance.ServiceStatuses.PAUSED == self.datastore_status.status: return InstanceStatus.REBOOT # If the service status is NEW, then we are building. if tr_instance.ServiceStatuses.NEW == self.datastore_status.status: return InstanceStatus.BUILD # For everything else we can look at the service status mapping. return self.datastore_status.status.api_status
def status(self): ### Check for taskmanager errors. if self.db_info.task_status.is_error: return InstanceStatus.ERROR ### Check for taskmanager status. action = self.db_info.task_status.action if 'BUILDING' == action: if 'ERROR' == self.db_info.server_status: return InstanceStatus.ERROR return InstanceStatus.BUILD if 'REBOOTING' == action: return InstanceStatus.REBOOT if 'RESIZING' == action: return InstanceStatus.RESIZE if 'RESTART_REQUIRED' == action: return InstanceStatus.RESTART_REQUIRED ### Check for server status. if self.db_info.server_status in [ "BUILD", "ERROR", "REBOOT", "RESIZE" ]: return self.db_info.server_status # As far as Trove is concerned, Nova instances in VERIFY_RESIZE should # still appear as though they are in RESIZE. if self.db_info.server_status in ["VERIFY_RESIZE"]: return InstanceStatus.RESIZE ### Check if there is a backup running for this instance if Backup.running(self.id): return InstanceStatus.BACKUP ### Report as Shutdown while deleting, unless there's an error. if 'DELETING' == action: if self.db_info.server_status in ["ACTIVE", "SHUTDOWN", "DELETED"]: return InstanceStatus.SHUTDOWN else: LOG.error( _LE("While shutting down instance (%(instance)s): " "server had status (%(status)s)."), { 'instance': self.id, 'status': self.db_info.server_status }) return InstanceStatus.ERROR ### Check against the service status. # The service is only paused during a reboot. if tr_instance.ServiceStatuses.PAUSED == self.datastore_status.status: return InstanceStatus.REBOOT # If the service status is NEW, then we are building. if tr_instance.ServiceStatuses.NEW == self.datastore_status.status: return InstanceStatus.BUILD # For everything else we can look at the service status mapping. return self.datastore_status.status.api_status
def status(self): ### Check for taskmanager errors. if self.db_info.task_status.is_error: return InstanceStatus.ERROR ### Check for taskmanager status. ACTION = self.db_info.task_status.action if 'BUILDING' == ACTION: if 'ERROR' == self.db_info.server_status: return InstanceStatus.ERROR return InstanceStatus.BUILD if 'REBOOTING' == ACTION: return InstanceStatus.REBOOT if 'RESIZING' == ACTION: return InstanceStatus.RESIZE ### Check for server status. if self.db_info.server_status in ["BUILD", "ERROR", "REBOOT", "RESIZE"]: return self.db_info.server_status # As far as Trove is concerned, Nova instances in VERIFY_RESIZE should # still appear as though they are in RESIZE. if self.db_info.server_status in ["VERIFY_RESIZE"]: return InstanceStatus.RESIZE ### Check if there is a backup running for this instance if Backup.running(self.id): return InstanceStatus.BACKUP ### Report as Shutdown while deleting, unless there's an error. if 'DELETING' == ACTION: if self.db_info.server_status in ["ACTIVE", "SHUTDOWN", "DELETED"]: return InstanceStatus.SHUTDOWN else: LOG.error(_("While shutting down instance (%(instance)s): " "server had status (%(status)s).") % {'instance': self.id, 'status': self.db_info.server_status}) return InstanceStatus.ERROR ### Check against the service status. # The service is only paused during a reboot. if rd_instance.ServiceStatuses.PAUSED == self.service_status.status: return InstanceStatus.REBOOT # If the service status is NEW, then we are building. if rd_instance.ServiceStatuses.NEW == self.service_status.status: return InstanceStatus.BUILD # For everything else we can look at the service status mapping. return self.service_status.status.api_status
def validate_can_perform_action(self): """ Raises exception if an instance action cannot currently be performed. """ if self.db_info.server_status != "ACTIVE": status = self.db_info.server_status elif self.db_info.task_status != InstanceTasks.NONE: status = self.db_info.task_status elif not self.service_status.status.action_is_allowed: status = self.status elif Backup.running(self.id): status = InstanceStatus.BACKUP else: return msg = "Instance is not currently available for an action to be " "performed (status was %s)." % status LOG.error(msg) raise exception.UnprocessableEntity(msg)
def status(self): ### Check for taskmanager errors. if self.db_info.task_status.is_error: return InstanceStatus.ERROR ### Check for taskmanager status. ACTION = self.db_info.task_status.action if 'BUILDING' == ACTION: if 'ERROR' == self.db_info.server_status: return InstanceStatus.ERROR return InstanceStatus.BUILD if 'REBOOTING' == ACTION: return InstanceStatus.REBOOT if 'RESIZING' == ACTION: return InstanceStatus.RESIZE ### Check for server status. if self.db_info.server_status in ["BUILD", "ERROR", "REBOOT", "RESIZE"]: return self.db_info.server_status ### Check if there is a backup running for this instance if Backup.running(self.id): return InstanceStatus.BACKUP ### Report as Shutdown while deleting, unless there's an error. if 'DELETING' == ACTION: if self.db_info.server_status in ["ACTIVE", "SHUTDOWN", "DELETED"]: return InstanceStatus.SHUTDOWN else: LOG.error(_("While shutting down instance (%(instance)s): " "server had status (%(status)s).") % {'instance': self.id, 'status': self.db_info.server_status}) return InstanceStatus.ERROR ### Check against the service status. # The service is only paused during a reboot. if rd_instance.ServiceStatuses.PAUSED == self.service_status.status: return InstanceStatus.REBOOT # If the service status is NEW, then we are building. if rd_instance.ServiceStatuses.NEW == self.service_status.status: return InstanceStatus.BUILD # For everything else we can look at the service status mapping. return self.service_status.status.api_status
def status(self): ### Check for taskmanager errors. if self.db_info.task_status.is_error: return InstanceStatus.ERROR ### Check for taskmanager status. ACTION = self.db_info.task_status.action if "BUILDING" == ACTION: if "ERROR" == self.db_info.server_status: return InstanceStatus.ERROR return InstanceStatus.BUILD if "REBOOTING" == ACTION: return InstanceStatus.REBOOT if "RESIZING" == ACTION: return InstanceStatus.RESIZE ### Check for server status. if self.db_info.server_status in ["BUILD", "ERROR", "REBOOT", "RESIZE"]: return self.db_info.server_status ### Check if there is a backup running for this instance if Backup.running(self.id): return InstanceStatus.BACKUP ### Report as Shutdown while deleting, unless there's an error. if "DELETING" == ACTION: if self.db_info.server_status in ["ACTIVE", "SHUTDOWN", "DELETED"]: return InstanceStatus.SHUTDOWN else: LOG.error( _("While shutting down instance (%(instance)s): " "server had status (%(status)s).") % {"instance": self.id, "status": self.db_info.server_status} ) return InstanceStatus.ERROR ### Check against the service status. # The service is only paused during a reboot. if ServiceStatuses.PAUSED == self.service_status.status: return InstanceStatus.REBOOT # If the service status is NEW, then we are building. if ServiceStatuses.NEW == self.service_status.status: return InstanceStatus.BUILD # For everything else we can look at the service status mapping. return self.service_status.status.api_status
def validate_can_perform_action(self): """ Raises exception if an instance action cannot currently be performed. """ if self.db_info.server_status != 'ACTIVE': status = self.db_info.server_status elif self.db_info.task_status != InstanceTasks.NONE: status = self.db_info.task_status elif not self.service_status.status.action_is_allowed: status = self.status elif Backup.running(self.id): status = InstanceStatus.BACKUP else: return msg = ("Instance is not currently available for an action to be " "performed (status was %s)." % status) LOG.error(msg) raise exception.UnprocessableEntity(msg)