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 }