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

     1  package orb
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  
     7  	"github.com/caos/orbos/internal/operator/core"
     8  	"github.com/caos/orbos/mntr"
     9  	"github.com/caos/orbos/pkg/kubernetes"
    10  	"github.com/caos/orbos/pkg/tree"
    11  	"github.com/caos/orbos/pkg/treelabels"
    12  )
    13  
    14  func Reconcile(
    15  	monitor mntr.Monitor,
    16  	spec *Spec,
    17  	gitops bool,
    18  ) core.EnsureFunc {
    19  	return func(k8sClient kubernetes.ClientInt) (err error) {
    20  		recMonitor := monitor.WithField("version", spec.Version)
    21  
    22  		if spec.Version == "" {
    23  			err := errors.New("No version set in networking.yml")
    24  			monitor.Error(err)
    25  			return err
    26  		}
    27  
    28  		imageRegistry := spec.CustomImageRegistry
    29  		if imageRegistry == "" {
    30  			imageRegistry = "ghcr.io"
    31  		}
    32  
    33  		if spec.SelfReconciling {
    34  			desiredTree := &tree.Tree{
    35  				Common: tree.NewCommon("networking.caos.ch/Orb", "v0", false),
    36  			}
    37  
    38  			if err := kubernetes.EnsureNetworkingArtifacts(monitor, treelabels.MustForAPI(desiredTree, mustDatabaseOperator(&spec.Version)), k8sClient, spec.Version, spec.NodeSelector, spec.Tolerations, imageRegistry, gitops); err != nil {
    39  				return fmt.Errorf("failed to deploy networking-operator into k8s-cluster: %w", err)
    40  			}
    41  
    42  			recMonitor.Info("Applied networking-operator")
    43  		}
    44  		return nil
    45  
    46  	}
    47  }