PutReplicationStatus updates the state of a replication.
(ctx context.Context, replicationID, action string)
| 1497 | |
| 1498 | // PutReplicationStatus updates the state of a replication. |
| 1499 | func (m *sgReplicateManager) PutReplicationStatus(ctx context.Context, replicationID, action string) (status *ReplicationStatus, auditEvent base.AuditID, err error) { |
| 1500 | |
| 1501 | targetState := "" |
| 1502 | switch action { |
| 1503 | case "reset": |
| 1504 | auditEvent = base.AuditIDISGRReset |
| 1505 | targetState = ReplicationStateResetting |
| 1506 | case "stop": |
| 1507 | auditEvent = base.AuditIDISGRStop |
| 1508 | targetState = ReplicationStateStopped |
| 1509 | case "start": |
| 1510 | auditEvent = base.AuditIDISGRStart |
| 1511 | targetState = ReplicationStateRunning |
| 1512 | default: |
| 1513 | return nil, 0, base.HTTPErrorf(http.StatusBadRequest, "Unrecognized action %q. Valid values are start/stop/reset.", action) |
| 1514 | } |
| 1515 | |
| 1516 | err = m.UpdateReplicationState(replicationID, targetState) |
| 1517 | if err != nil { |
| 1518 | return nil, auditEvent, err |
| 1519 | } |
| 1520 | |
| 1521 | updatedStatus, err := m.GetReplicationStatus(ctx, replicationID, DefaultReplicationStatusOptions()) |
| 1522 | if err != nil { |
| 1523 | // Not found is expected when adhoc replication is stopped, return removed status instead of error |
| 1524 | // since UpdateReplicationState was successful |
| 1525 | if err == base.ErrNotFound { |
| 1526 | replicationStatus := &ReplicationStatus{ |
| 1527 | ID: replicationID, |
| 1528 | Status: "removed", |
| 1529 | } |
| 1530 | return replicationStatus, auditEvent, nil |
| 1531 | } else { |
| 1532 | return nil, auditEvent, err |
| 1533 | } |
| 1534 | } |
| 1535 | |
| 1536 | // Modify the returned replication state to align with the requested state |
| 1537 | updatedStatus.Status = transitionStateName(updatedStatus.Status, targetState) |
| 1538 | return updatedStatus, auditEvent, nil |
| 1539 | } |
| 1540 | |
| 1541 | func (m *sgReplicateManager) GetReplicationStatusAll(ctx context.Context, options ReplicationStatusOptions) ([]*ReplicationStatus, error) { |
| 1542 |