MCPcopy Create free account
hub / github.com/pydio/cells / initProcesses

Method initProcesses

common/runtime/manager/manager.go:612–790  ·  view source on GitHub ↗
(ctx context.Context, bootstrap config.Store, base string)

Source from the content-addressed store, hash-verified

610}
611
612func (m *manager) initProcesses(ctx context.Context, bootstrap config.Store, base string) error {
613 cmds := make(map[string]*fork.Process)
614
615 var baseWatch []string
616 if base != "#" {
617 baseWatch = append(baseWatch, strings.Split(strings.TrimLeft(base, "#/"), "/")...)
618 }
619
620 w, err := bootstrap.Watch(watch.WithPath(append(baseWatch, "processes", "*")...), watch.WithChangesOnly())
621 if err != nil {
622 return err
623 }
624
625 for {
626 diff, err := w.Next()
627 if err != nil {
628 return err
629 }
630 baseRead := append(baseWatch, "processes")
631 create := diff.(kv.Values).Val(append([]string{"create"}, baseRead...)...)
632 update := diff.(kv.Values).Val(append([]string{"update"}, baseRead...)...)
633 deletes := diff.(kv.Values).Val(append([]string{"delete"}, baseRead...)...)
634
635 var processesToStart, processesToStop []string
636
637 for name := range create.Map() {
638 processesToStart = append(processesToStart, name)
639 }
640 for name := range update.Map() {
641 processesToStop = append(processesToStop, name)
642 processesToStart = append(processesToStart, name)
643 }
644 for name := range deletes.Map() {
645 processesToStop = append(processesToStop, name)
646 }
647
648 for _, name := range processesToStop {
649 if cmd, ok := cmds[name]; ok {
650 cmd.Stop()
651 }
652 }
653
654 processes := bootstrap.Val(base + "/processes")
655
656 for _, name := range processesToStart {
657 process := processes.Val(name)
658
659 childBinary := os.Args[0]
660 var childArgs []string
661 var childEnv []string
662
663 connections := process.Val("connections")
664 // TODO
665 //binary := process.Val("binary")
666 //args := process.Val("args")
667 env := process.Val("env")
668 servers := process.Val("servers")
669 tags := process.Val("tags")

Callers 1

BootstrapMethod · 0.95

Calls 15

coreLoggerMethod · 0.95
WithPathFunction · 0.92
WithChangesOnlyFunction · 0.92
GetStringFunction · 0.92
GetStringSliceFunction · 0.92
NewProcessFunction · 0.92
WithBinaryFunction · 0.92
WithNameFunction · 0.92
WithArgsFunction · 0.92
WithEnvFunction · 0.92
makeFunction · 0.85
StartAndWaitMethod · 0.80

Tested by

no test coverage detected