extremely early, attempting to address or make possible to address numerous issues, including but not limited to:
324
290
21
463
The general ideas are as follows:
Factor out "Stack" from "Workspace", specifically the bits in server/workspace.go that might have multiplicity N >= 0 relative to each workspace.
Refactor "Component" in to physical and logical halves. The logical half will remain called "Component" and the physical half will be called a "Resource". Main distinction is that resources are expected to be external, have a globally unique IRI of some kind, and it is expected that their lifetime is shorter than a component and subject to external influences. Components may have zero or more resources. For example, a process-component will have start & stop, and each time it starts/stops, it will create/destroy a unix-process-resource.
Keep a pending-operations log for CRUD operations on resources, so that if an operation fails, the user can debug/recover.
Rework "apply" to use initialize/start/stop/dispose, causing components to create/delete resources, instead of create/delete-ing processes, containers, etc directly. (ie fix #290)
Write a data migration codepath that takes the component state from above and moves it to some tables in sqlite instead of storing in the state.json file.
extremely early, attempting to address or make possible to address numerous issues, including but not limited to:
324
290
21
463
The general ideas are as follows: