Skip to content

Commit

Permalink
update apis
Browse files Browse the repository at this point in the history
simplify status check

update tests
  • Loading branch information
kaibocai committed Dec 15, 2023
1 parent 6ccd188 commit 76c6eeb
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 22 deletions.
22 changes: 11 additions & 11 deletions api/orchestration.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,22 +26,22 @@ var (
type CreateOrchestrationAction = protos.CreateOrchestrationAction

const (
ERROR CreateOrchestrationAction = protos.CreateOrchestrationAction_ERROR
IGNORE CreateOrchestrationAction = protos.CreateOrchestrationAction_IGNORE
TERMINATE CreateOrchestrationAction = protos.CreateOrchestrationAction_TERMINATE
REUSE_ID_ACTION_ERROR CreateOrchestrationAction = protos.CreateOrchestrationAction_ERROR
REUSE_ID_ACTION_IGNORE CreateOrchestrationAction = protos.CreateOrchestrationAction_IGNORE
REUSE_ID_ACTION_TERMINATE CreateOrchestrationAction = protos.CreateOrchestrationAction_TERMINATE
)

type OrchestrationStatus = protos.OrchestrationStatus

const (
RUNNING OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING
COMPLETED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED
CONTINUED_AS_NEW OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_CONTINUED_AS_NEW
FAILED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED
CANCELED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_CANCELED
TERMINATED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED
PENDING OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_PENDING
SUSPENDED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_SUSPENDED
RUNTIME_STATUS_RUNNING OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_RUNNING
RUNTIME_STATUS_COMPLETED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_COMPLETED
RUNTIME_STATUS_CONTINUED_AS_NEW OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_CONTINUED_AS_NEW
RUNTIME_STATUS_FAILED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_FAILED
RUNTIME_STATUS_CANCELED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_CANCELED
RUNTIME_STATUS_TERMINATED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_TERMINATED
RUNTIME_STATUS_PENDING OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_PENDING
RUNTIME_STATUS_SUSPENDED OrchestrationStatus = protos.OrchestrationStatus_ORCHESTRATION_STATUS_SUSPENDED
)

type OrchestrationIdReusePolicy = protos.OrchestrationIdReusePolicy
Expand Down
13 changes: 6 additions & 7 deletions backend/sqlite/sqlite.go
Original file line number Diff line number Diff line change
Expand Up @@ -511,10 +511,8 @@ func (be *sqliteBackend) handleInstanceExists(ctx context.Context, tx *sql.Tx, s
return fmt.Errorf("failed to scan the Instances table result: %w", err)
}

// instance already exists
targetStatusValues := buildStatusSet(policy.OperationStatus)
// status not match, return instance duplicate error
if _, ok := targetStatusValues[helpers.FromRuntimeStatusString(*runtimeStatus)]; !ok {
if !isStatusMatch(policy.OperationStatus, helpers.FromRuntimeStatusString(*runtimeStatus)) {
return api.ErrDuplicateInstance
}

Expand Down Expand Up @@ -545,12 +543,13 @@ func (be *sqliteBackend) handleInstanceExists(ctx context.Context, tx *sql.Tx, s
return api.ErrDuplicateInstance
}

func buildStatusSet(statuses []api.OrchestrationStatus) map[api.OrchestrationStatus]struct{} {
statusSet := make(map[api.OrchestrationStatus]struct{}, len(statuses))
func isStatusMatch(statuses []protos.OrchestrationStatus, runtimeStatus protos.OrchestrationStatus) bool {
for _, status := range statuses {
statusSet[status] = struct{}{}
if status == runtimeStatus {
return true
}
}
return statusSet
return false
}

func (be *sqliteBackend) cleanupOrchestrationStateInternal(ctx context.Context, tx *sql.Tx, id api.InstanceID, requireCompleted bool) error {
Expand Down
8 changes: 4 additions & 4 deletions tests/orchestrations_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -853,8 +853,8 @@ func Test_SingleActivity_ReuseInstanceIDIgnore(t *testing.T) {

instanceID := api.InstanceID("IGNORE_IF_RUNNING_OR_COMPLETED")
reuseIdPolicy := &api.OrchestrationIdReusePolicy{
Action: api.IGNORE,
OperationStatus: []api.OrchestrationStatus{api.RUNNING, api.COMPLETED, api.PENDING},
Action: api.REUSE_ID_ACTION_IGNORE,
OperationStatus: []api.OrchestrationStatus{api.RUNTIME_STATUS_RUNNING, api.RUNTIME_STATUS_COMPLETED, api.RUNTIME_STATUS_PENDING},
}

// Run the orchestration
Expand Down Expand Up @@ -904,8 +904,8 @@ func Test_SingleActivity_ReuseInstanceIDTerminate(t *testing.T) {

instanceID := api.InstanceID("TERMINATE_IF_RUNNING_OR_COMPLETED")
reuseIdPolicy := &api.OrchestrationIdReusePolicy{
Action: api.TERMINATE,
OperationStatus: []api.OrchestrationStatus{api.RUNNING, api.COMPLETED, api.PENDING},
Action: api.REUSE_ID_ACTION_TERMINATE,
OperationStatus: []api.OrchestrationStatus{api.RUNTIME_STATUS_RUNNING, api.RUNTIME_STATUS_COMPLETED, api.RUNTIME_STATUS_PENDING},
}

// Run the orchestration
Expand Down

0 comments on commit 76c6eeb

Please sign in to comment.