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  }