Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Action rollback #502

Open
pkosiec opened this issue Sep 17, 2021 · 0 comments
Open

Implement Action rollback #502

pkosiec opened this issue Sep 17, 2021 · 0 comments
Labels
area/cli Relates to CLI area/engine Relates to Engine area/hub-manifests Relates to Hub manifests enhancement New feature or request

Comments

@pkosiec
Copy link
Member

pkosiec commented Sep 17, 2021

Description

This task lists all consequences of the Action rollback proposal, which was introduced in #83.

  • Introduce new properties in OCF schema and Local Hub GraphQL API (1SP)
    • new Implementation rollback property - optional
    • new TypeInstance properties: standalone (required) and rollbackActionRef(optional),
    • Modify Engine: Upload TypeInstances with standalone: false
  • Create Rollback Custom Resource Definition (1SP)
  • Create Rollback-related queries, mutations and types for Engine GraphQL
    API (3SP)
type Query {
    rollback(name: String!): Rollback
    rollbacks(filter: RollbackFilter!): [Rollback!]
}

type Mutation {
    createRollback(in: RollbackDetailsInput): Rollback!
    runRollback(name: String!): Rollback!
    cancelRollback(name: String!): Rollback!
    updateRollback(in: RollbackDetailsInput!): Rollback!
    deleteRollback(name: String!): Rollback!
}

Additional scope

What about the data that is created by the given runner, when and how this will be deleted? For example, ArgoWorkflow CR created during install/upgrade. Now it is connected with the Action CR, so the Rollback CR controller should remove the Action CR from the creation phase? Also, when the Rollback CR will be removed? Are we going to keep them with some retention policy as helm does with history?

Reason

Capact makes it easy to execute arbitrary Actions in a form of Argo workflows, which can modify cluster state, run
external workloads and output TypeInstances. However, a User should be able to rollback any run Action. For example, to have a complete application lifecycle implemented using Workflow, there should be an ability to uninstall or downgrade the app.

Rollback feature will be required for:

  • Application uninstallation
  • Application downgrade
  • cancelling Action (rollback to previous state)
  • retrying Action (rollback to previous state + run the same Action)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/cli Relates to CLI area/engine Relates to Engine area/hub-manifests Relates to Hub manifests enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant