Closed
Milestone
expired on Sep 22, 2023
v0.0.1 Barebones Deployment with GRPC
First milestone is to have things working over GRPC
Workflow spec services that can be deployed over GRPC, thereby running in separate processes. Manually start the processes and submit a workload on the same machine.
Plugins required:
-
Workflow Spec Services Plugin -
Golang Process Plugin -
GRPC Plugin
Detailed task list:
- Golang Process Plugin
- Tidying
-
Update DICodeBuilder and Impl to add an ImportType method for convenience. Remove the current Import implementation on DICodeBuilder and replace its usage with the gogen.Imports struct. Simplify template generation -
Update the workflow spec plugin implementation to use the above, simplifying the implementation. Also move codegen parts into a codegen subdir
-
- Generated DI code
-
Generated graph() method must declare all string args in di. It should return the container (with Get method), not graph.
-
- DI runtime graph/container
-
container Get method should receive a context so that things like server goroutines can shutdown on process exit -
Container should have a waitgroup so that callers can wait on things like server goroutines -
Add an Await method on the DI container to wait for the waitgroup
-
- Generated main method
-
Main-method generation that takes cmd line args, puts them in a map, and invokes the graph function -
Process IRNode should keep track of which nodes must be explicitly instantiated. Generated main() should do that instantiation by calling get() after the definitions. -
Generated main method should create a context for cancellation, pass it to the DI container, and await the waitgroup after getting all definitions
-
- Tidying
- GRPC Plugin
- Client and Server Handler
-
Finish implementing generated client methods; see if using copier is sufficient -
Finish implementing generated server methods -
Implement instantiation code for client, making use of the ctx above -
Implement instantiation code for server, making use of the ctx and waitgroup above
-
- Configuration
-
Add a general IRNode representing runtime configuration -- ie specifying that this config should come from runtime -
Add config for timeout, allowing both a runtime configured value, or a directly configured value
-
- Client and Server Handler