gyro
gyro copied to clipboard
workflow can't be recovered if delete or replace action fails.
Describe the bug workflow can't be recovered if delete or replace action fails.
To Reproduce Given the example that has verify, push, commit, reset stages, workflow can be recovered in the following cases:
- verify (create) -> reset (delete)
- verify (create) -> push (update)-> reset (delete)
but workflow can't be recovered if one of the actions in commit stage fails.
resource-name: "workflow-dns-example"
google::dns-managed-zone workflow-dns-public-managed-zone-example
name: $(resource-name)
description: "workflow dns Public Managed Zone Example"
dns-name: "wde.example.com."
dnssec-config
state: "on"
end
end
google::dns-managed-zone workflow-dns-public-managed-zone-example-2
name: "workflow-dns-public-managed-zone-example-2"
description: "workflow dns Public Managed Zone Example 2"
dns-name: "wp2.example.com."
dnssec-config
state: "on"
end
end
@workflow::define google::dns-managed-zone replace-dns-managed-zone
stage verify
confirm-diff: true
@workflow::create google::dns-managed-zone workflow-dns-public-managed-zone-example-verify
@extends: $(PENDING)
name: $(resource-name)
@end
@workflow::create google::dns-managed-zone workflow-dns-public-managed-zone-example-bar
@extends: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-2)
name: "workflow-dns-public-managed-zone-example-bar"
description: "Workflow DNS Public Managed Zone Example bar"
dns-name: "p-bar.example.com."
@end
@workflow::create google::dns-managed-zone workflow-dns-public-managed-zone-example-foo
@extends: $(google::dns-managed-zone workflow-dns-public-managed-zone-example)
name: "workflow-dns-public-managed-zone-example-foo"
description: "Workflow DNS Public Managed Zone Example foo"
dns-name: "p-foo.example.com."
@end
transition push
to: push
description: "Push."
end
transition reset
to: reset
description: "Reset."
end
end
stage push
confirm-diff: true
@workflow::update $(google::dns-managed-zone workflow-dns-public-managed-zone-example-bar)
description: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-foo).name
@end
@workflow::update $(google::dns-managed-zone workflow-dns-public-managed-zone-example-foo)
description: $(google::dns-managed-zone workflow-dns-public-managed-zone-example).name
@end
transition revert
to: verify
description: 'Revert.'
end
transition commit
to: commit-first
description: "Commit."
end
end
stage commit-first
@workflow::delete: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-bar)
transition done
to: commit-second
description: 'Next.'
end
end
stage commit-second
confirm-diff: true
@workflow::replace: $(google::dns-managed-zone workflow-dns-public-managed-zone-example) $(google::dns-managed-zone workflow-dns-public-managed-zone-example-verify)
transition done
to: commit
description: 'Done.'
end
end
stage commit
confirm-diff: true
@workflow::delete: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-foo)
end
stage reset
@workflow::delete: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-foo)
@workflow::delete: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-bar)
@workflow::delete: $(google::dns-managed-zone workflow-dns-public-managed-zone-example-verify)
end
@end
Expected behavior Workflow should continue where it left off.