package info import ( "context" "fmt" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" ) // BuildBootstrapSecret create edge-info Secret func BuildBootstrapSecret(token string) *v1.Secret { return &v1.Secret{ TypeMeta: metav1.TypeMeta{ APIVersion: v1.SchemeGroupVersion.String(), Kind: "Secret", }, ObjectMeta: metav1.ObjectMeta{ Name: EdgeConfigMapName, Namespace: EdgeBootstrapping, }, Data: map[string][]byte{ TotpSecret: []byte(token), }, } } // ValidateEdgeInfoSecret validates edge-info Secret func ValidateEdgeInfoSecret(secret *v1.Secret) error { if len(secret.Data[TotpSecret]) == 0 { return fmt.Errorf("edge-info secret invalid, totp token not found") } return nil } // FromSecret retrieves token from secret func FromSecret(secret *v1.Secret) (string, error) { if err := ValidateEdgeInfoSecret(secret); err != nil { return "", err } return string(secret.Data[TotpSecret]), nil } // TokenFromClient grabs the secret from the cluster func TokenFromClient(ctx context.Context, cl client.Client) (string, error) { secret := &v1.Secret{} key := client.ObjectKey{Namespace: EdgeBootstrapping, Name: EdgeConfigMapName} if err := cl.Get(ctx, key, secret); err != nil { return "", err } return FromSecret(secret) }