...
1 package bootstrapping
2
3 import (
4 corev1 "k8s.io/api/core/v1"
5 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
6 )
7
8 const (
9
10 DataSyncSecretName = "gcp-auth-token"
11
12 DataSyncNamespace = "data-sync-connector"
13
14 DataSyncKey = "auth-token"
15 )
16
17
18 type DataSyncSecret struct {
19 typeMetaKind string
20 typeMetaAPIVersion string
21 objectMetaName string
22 objectMetaNamespace string
23 serviceAccount string
24 }
25
26
27 func CreateDataSyncSecret() *DataSyncSecret {
28 return &DataSyncSecret{
29 typeMetaKind: secretKind,
30 typeMetaAPIVersion: secretAPIVersion,
31 objectMetaName: DataSyncSecretName,
32 objectMetaNamespace: DataSyncNamespace,
33 serviceAccount: defaultStr,
34 }
35 }
36
37
38 func (d *DataSyncSecret) TypeMetaKind(kind string) *DataSyncSecret {
39 d.typeMetaKind = kind
40 return d
41 }
42
43
44 func (d *DataSyncSecret) TypeMetaAPIVersion(apiVersion string) *DataSyncSecret {
45 d.typeMetaAPIVersion = apiVersion
46 return d
47 }
48
49
50 func (d *DataSyncSecret) ObjectMetaName(name string) *DataSyncSecret {
51 d.objectMetaName = name
52 return d
53 }
54
55
56 func (d *DataSyncSecret) ObjectMetaNamespace(ns string) *DataSyncSecret {
57 d.objectMetaNamespace = ns
58 return d
59 }
60
61
62 func (d *DataSyncSecret) ServiceAccount(sa string) *DataSyncSecret {
63 d.serviceAccount = sa
64 return d
65 }
66
67
68 func (d *DataSyncSecret) Build(stringData bool) *corev1.Secret {
69 dataSyncSecret := &corev1.Secret{
70 TypeMeta: metav1.TypeMeta{
71 Kind: d.typeMetaKind,
72 APIVersion: d.typeMetaAPIVersion,
73 },
74 ObjectMeta: metav1.ObjectMeta{
75 Name: d.objectMetaName,
76 Namespace: d.objectMetaNamespace,
77 },
78 }
79
80 data := removeEmptyFields(map[string]string{
81 DataSyncKey: d.serviceAccount,
82 })
83
84 if stringData {
85 dataSyncSecret.StringData = removeEmptyFields(data)
86 } else {
87 byteData := make(map[string][]byte)
88 for key, val := range data {
89 byteData[key] = []byte(val)
90 }
91 dataSyncSecret.Data = byteData
92 }
93 return dataSyncSecret
94 }
95
View as plain text