github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/orbiter/destroy.go (about) 1 package orbiter 2 3 import ( 4 "github.com/caos/orbos/internal/operator/common" 5 "github.com/caos/orbos/mntr" 6 "github.com/caos/orbos/pkg/git" 7 "github.com/caos/orbos/pkg/tree" 8 ) 9 10 type DestroyFunc func(map[string]interface{}) error 11 12 func NoopDestroy(map[string]interface{}) error { 13 return nil 14 } 15 16 func Destroy(monitor mntr.Monitor, gitClient *git.Client, adapt AdaptFunc, finishedChan chan struct{}) error { 17 treeDesired, err := gitClient.ReadTree(git.OrbiterFile) 18 if err != nil { 19 return err 20 } 21 22 treeCurrent := &tree.Tree{} 23 24 _, destroy, _, _, _, err := adapt(monitor, finishedChan, treeDesired, treeCurrent) 25 if err != nil { 26 return err 27 } 28 29 if err := destroy(make(map[string]interface{})); err != nil { 30 return err 31 } 32 33 monitor.OnChange = func(evt string, fields map[string]string) { 34 if err := gitClient.UpdateRemote(mntr.CommitRecord([]*mntr.Field{{Key: "evt", Value: evt}}), func() []git.File { 35 return []git.File{ 36 { 37 Path: "caos-internal/orbiter/current.yml", 38 Content: []byte(""), 39 }, { 40 Path: "caos-internal/orbiter/node-agents-current.yml", 41 Content: []byte(""), 42 }, { 43 Path: "caos-internal/orbiter/node-agents-desired.yml", 44 Content: []byte(""), 45 }, { 46 Path: "orbiter.yml", 47 Content: common.MarshalYAML(treeDesired), 48 }} 49 }); err != nil { 50 panic(err) 51 } 52 } 53 monitor.Changed("Orb destroyed") 54 return nil 55 }