validateInstanceStatusTransition validates instance status state transition
(current, newStatus commonParams.InstanceStatus)
| 326 | |
| 327 | // validateInstanceStatusTransition validates instance status state transition |
| 328 | func (s *sqlDatabase) validateInstanceStatusTransition(current, newStatus commonParams.InstanceStatus) error { |
| 329 | if newStatus == "" || newStatus == current { |
| 330 | return nil |
| 331 | } |
| 332 | |
| 333 | allowedTransitions, ok := params.InstanceStatusTransitions[current] |
| 334 | if !ok { |
| 335 | // we need a better way to handle this. Because if we err out here, we cannot recover |
| 336 | // unless the user manually updates the instance. |
| 337 | return fmt.Errorf("Instance is in invalid state: %s", current) |
| 338 | } |
| 339 | |
| 340 | if !slices.Contains(allowedTransitions, newStatus) { |
| 341 | return runnerErrors.NewBadRequestError("invalid instance status transition from %s to %s", current, newStatus) |
| 342 | } |
| 343 | return nil |
| 344 | } |
| 345 | |
| 346 | // applyInstanceUpdates applies parameter updates to the instance |
| 347 | func (s *sqlDatabase) applyInstanceUpdates(instance *Instance, param params.UpdateInstanceParams) error { |