...
1 package info
2
3 import (
4 "context"
5 "fmt"
6
7 v1 "k8s.io/api/core/v1"
8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9
10 "sigs.k8s.io/controller-runtime/pkg/client"
11 )
12
13
14 func BuildBootstrapSecret(token string) *v1.Secret {
15 return &v1.Secret{
16 TypeMeta: metav1.TypeMeta{
17 APIVersion: v1.SchemeGroupVersion.String(),
18 Kind: "Secret",
19 },
20 ObjectMeta: metav1.ObjectMeta{
21 Name: EdgeConfigMapName,
22 Namespace: EdgeBootstrapping,
23 },
24 Data: map[string][]byte{
25 TotpSecret: []byte(token),
26 },
27 }
28 }
29
30
31 func ValidateEdgeInfoSecret(secret *v1.Secret) error {
32 if len(secret.Data[TotpSecret]) == 0 {
33 return fmt.Errorf("edge-info secret invalid, totp token not found")
34 }
35 return nil
36 }
37
38
39 func FromSecret(secret *v1.Secret) (string, error) {
40 if err := ValidateEdgeInfoSecret(secret); err != nil {
41 return "", err
42 }
43 return string(secret.Data[TotpSecret]), nil
44 }
45
46
47 func TokenFromClient(ctx context.Context, cl client.Client) (string, error) {
48 secret := &v1.Secret{}
49 key := client.ObjectKey{Namespace: EdgeBootstrapping, Name: EdgeConfigMapName}
50 if err := cl.Get(ctx, key, secret); err != nil {
51 return "", err
52 }
53 return FromSecret(secret)
54 }
55
View as plain text