github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/cmd/orbctl/machines.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/caos/orbos/pkg/kubernetes/cli"
     7  
     8  	orbcfg "github.com/caos/orbos/pkg/orb"
     9  
    10  	"github.com/caos/orbos/pkg/labels"
    11  
    12  	"github.com/caos/orbos/internal/operator/orbiter/kinds/clusters/core/infra"
    13  	"github.com/caos/orbos/internal/operator/orbiter/kinds/orb"
    14  	"github.com/caos/orbos/mntr"
    15  	"github.com/caos/orbos/pkg/git"
    16  	"github.com/caos/orbos/pkg/tree"
    17  )
    18  
    19  func machines(monitor mntr.Monitor, gitClient *git.Client, orbConfig *orbcfg.Orb, do func(machineIDs []string, machines map[string]infra.Machine, desired *tree.Tree) error) error {
    20  
    21  	if _, err := cli.Init(monitor, orbConfig, gitClient, "", true, true, true); err != nil {
    22  		return err
    23  	}
    24  
    25  	if !gitClient.Exists(git.OrbiterFile) {
    26  		return mntr.ToUserError(fmt.Errorf("%s not found", git.OrbiterFile))
    27  	}
    28  
    29  	monitor.Debug("Reading machines from orbiter.yml")
    30  
    31  	desired, err := gitClient.ReadTree(git.OrbiterFile)
    32  	if err != nil {
    33  		return err
    34  	}
    35  
    36  	listMachines := orb.ListMachines(labels.NoopOperator("ORBOS"))
    37  
    38  	orbID, err := orbConfig.ID()
    39  	if err != nil {
    40  		return err
    41  	}
    42  
    43  	machineIDs, machines, err := listMachines(
    44  		monitor,
    45  		desired,
    46  		orbID,
    47  	)
    48  
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	return do(machineIDs, machines, desired)
    54  }