github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/networking/takeoff.go (about)

     1  package networking
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/caos/orbos/internal/operator/core"
     7  	"github.com/caos/orbos/mntr"
     8  	"github.com/caos/orbos/pkg/git"
     9  	kubernetes2 "github.com/caos/orbos/pkg/kubernetes"
    10  	"github.com/caos/orbos/pkg/tree"
    11  )
    12  
    13  func Takeoff(monitor mntr.Monitor, gitClient *git.Client, adapt core.AdaptFunc, k8sClient *kubernetes2.Client) func() {
    14  	return func() {
    15  		internalMonitor := monitor.WithField("operator", "networking")
    16  		internalMonitor.Info("Takeoff")
    17  		treeDesired, err := core.Parse(gitClient, "networking.yml")
    18  		if err != nil {
    19  			monitor.Error(err)
    20  			return
    21  		}
    22  		treeCurrent := &tree.Tree{}
    23  
    24  		if k8sClient == nil {
    25  			internalMonitor.Error(errors.New("kubeclient is not available"))
    26  			return
    27  		}
    28  
    29  		query, _, _, _, _, err := adapt(internalMonitor, treeDesired, treeCurrent)
    30  		if err != nil {
    31  			internalMonitor.Error(err)
    32  			return
    33  		}
    34  
    35  		ensure, err := query(k8sClient, map[string]interface{}{})
    36  		if err != nil {
    37  			internalMonitor.Error(err)
    38  			return
    39  		}
    40  
    41  		if err := ensure(k8sClient); err != nil {
    42  			internalMonitor.Error(err)
    43  			return
    44  		}
    45  	}
    46  }