...

Source file src/edge-infra.dev/pkg/sds/remoteaccess/wireguard/secret/secret.go

Documentation: edge-infra.dev/pkg/sds/remoteaccess/wireguard/secret

     1  package secret
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"time"
     7  
     8  	corev1 "k8s.io/api/core/v1"
     9  	"k8s.io/apimachinery/pkg/api/errors"
    10  	"sigs.k8s.io/controller-runtime/pkg/client"
    11  
    12  	"edge-infra.dev/pkg/sds/remoteaccess/constants"
    13  )
    14  
    15  func CreateOrPatchSecret(ctx context.Context, c client.Client, secret *corev1.Secret) error {
    16  	currentSecret := &corev1.Secret{}
    17  	err := c.Get(ctx, client.ObjectKeyFromObject(secret), currentSecret)
    18  	if errors.IsNotFound(err) {
    19  		return c.Create(ctx, secret)
    20  	} else if err != nil {
    21  		return err
    22  	}
    23  	return c.Patch(ctx, secret, client.StrategicMergeFrom(currentSecret.DeepCopy()))
    24  }
    25  
    26  // Returns the time in the future that secrets should expire at
    27  func ExpireAt() *time.Time {
    28  	current := time.Now()
    29  	rotateAfter, err := time.ParseDuration(os.Getenv(constants.SecretValidityEnvField))
    30  	if err != nil {
    31  		// if unable to parse secret rotation env variable, set to 30d as default
    32  		future := current.AddDate(0, 0, 30)
    33  		return &future
    34  	}
    35  	future := current.Add(rotateAfter)
    36  	return &future
    37  }
    38  

View as plain text