konveyor/tackle

[RFE] Export / Import Functionality

Opened this issue · 0 comments

What is your persona?

  • I'm an architect, conducting assessments of applications.

What is your story / use case?

As a Tackle user / assessor, I want to export all artifacts (assessments, reports, application inventory, tags, etc) of a tackle instance, so that I'm able to import them into a new instance of Tackle.

What is your specific intent, not necessarily the feature you want, but what are
you trying to achieve?

I need to move my results from one Tackle instance to another.
There are three cases:

  • I start working with Tackle running on my laptop (on CodeReady Containers or minikube), conduct the first assessments and when the customer is ready / the target OpenShift Cluster has been set up, I need to move the current working state to the customer premises
  • I start working on a PoC or demo instance of OpenShift with a limited lifetime. When this is decommissioned, I need to be able to move my results / working state to another instance (see above)
  • The customer needs to migrate their applications (including Tackle) from one cluster to another. While there are other ways to accomplish that (e.g. Crane/MTC), a simple export/import would simplify that, since Tackle is operator-based and easy to spin up.

How does your immediate need fit into your bigger picture? What's the overall
benefit?

An application assessment, especially in larger organisations, will start small and grow over time. Losing results/reports/inventory and metadata (tags, stakeholders, etc) is a problem for longer engagements where Tackle is not just used for a few assessments.

Do you have a suggestion for implementation?

As an MVP, something similar to what has been described here would be sufficient, however not as a hack but maybe as a script - and "official" so it wouldn't break between versions.... however, that would mean that the DB schemas have to remain stable, so maybe not such a good idea.
Also, in my opinion, an MVP import would be sufficient to overwrite everything (so, no need to check for duplicates, etc.). Maybe even show a warning and then drop all content before import, to avoid side effects if the target DBs have not been empty.
That would support the three use-cases above, although others might warrant a merge of imported data with existing data - but let's start simple.

Cheers,

Markus

bitmoji