...

Source file src/edge-infra.dev/pkg/sds/etcd/operator/internal/reconcilers/lifecycle/create.go

Documentation: edge-infra.dev/pkg/sds/etcd/operator/internal/reconcilers/lifecycle

     1  package lifecycle
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"sigs.k8s.io/controller-runtime/pkg/client"
     8  
     9  	"edge-infra.dev/pkg/lib/fog"
    10  	"edge-infra.dev/pkg/sds/etcd/operator/internal/resources"
    11  )
    12  
    13  // create creates a new EtcdMember if one does not exist and
    14  // a node exists for that EtcdMember
    15  func (r *Reconciler) create(ctx context.Context, handlers *Handlers) error {
    16  	log := fog.FromContext(ctx)
    17  	if err := r.generateEtcdMember(handlers); err != nil {
    18  		return err
    19  	}
    20  	if err := handlers.member.Validate(ctx); err != nil {
    21  		return fmt.Errorf("EtcdMember failed validation: %w", err)
    22  	}
    23  	err := handlers.member.CreateRemote(ctx)
    24  	if client.IgnoreAlreadyExists(err) != nil {
    25  		return fmt.Errorf("failed to create EtcdMember: %w", err)
    26  	}
    27  	if err == nil {
    28  		r.Metrics.Custom.RecordEtcdMemberCreate(handlers.member.EtcdMember)
    29  		log.V(0).Info("created EtcdMember", "eoaudit", "")
    30  	}
    31  	return nil
    32  }
    33  
    34  // generateEtcdMember generates a new EtcdMember object for the current Node
    35  func (r *Reconciler) generateEtcdMember(handlers *Handlers) error {
    36  	ip, err := handlers.node.IP()
    37  	if err != nil {
    38  		return fmt.Errorf("failed to get etcd host address: %w", err)
    39  	}
    40  
    41  	ienVersion := handlers.node.IENVersion()
    42  
    43  	b := resources.NewEtcdMemberHandlerBuilder().
    44  		WithClient(handlers.member.Client).
    45  		WithKey(handlers.member.Key).
    46  		HandlesEtcdMember().
    47  		Named(handlers.member.Key.Name).
    48  		InstalledFor(ienVersion).
    49  		AtHost(ip).
    50  		OnPeerPort(2380).
    51  		OnClientPort(2379)
    52  	handlers.member = b.Build()
    53  
    54  	return nil
    55  }
    56  

View as plain text