Initial version of the Orchard orchestration system (#3)

* Initial version of the Orchard orchestration system

* Update README.md

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>

Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
This commit is contained in:
Nikolay Edigaryev
2023-01-26 23:46:23 +04:00
committed by GitHub
co-authored by Fedor Korotkov
parent dcbbb8b8de
commit 92e8732d46
46 changed files with 2746 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
package dev
import (
"github.com/cirruslabs/orchard/internal/controller"
"github.com/cirruslabs/orchard/internal/worker"
"github.com/spf13/cobra"
"go.uber.org/zap"
"os"
)
func NewCommand() *cobra.Command {
command := &cobra.Command{
Use: "dev",
Short: "Run a controller and a worker for development purposes",
RunE: runDev,
}
return command
}
func runDev(cmd *cobra.Command, args []string) error {
tempDir, err := os.MkdirTemp("", "")
if err != nil {
return err
}
// Initialize the logger
logger, err := zap.NewDevelopment()
if err != nil {
return err
}
defer func() {
if syncErr := logger.Sync(); syncErr != nil && err == nil {
err = syncErr
}
}()
controller, err := controller.New(controller.WithDataDir(tempDir), controller.WithLogger(logger))
if err != nil {
return err
}
worker, err := worker.New(worker.WithDataDir(tempDir), worker.WithLogger(logger))
if err != nil {
return err
}
errChan := make(chan error, 2)
go func() {
if err := controller.Run(cmd.Context()); err != nil {
errChan <- err
}
}()
go func() {
if err := worker.Run(cmd.Context()); err != nil {
errChan <- err
}
}()
return <-errChan
}