...

Source file src/edge-infra.dev/pkg/edge/bootstrapping/data_sync_secret.go

Documentation: edge-infra.dev/pkg/edge/bootstrapping

     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  	// DataSyncSecretName is the name of the secret for data sync
    10  	DataSyncSecretName = "gcp-auth-token" //nolint
    11  	// DataSyncNamespace is the namespace of the secret for data sync
    12  	DataSyncNamespace = "data-sync-connector"
    13  	// DataSyncKey is the key for the data sync secret data containing the service account
    14  	DataSyncKey = "auth-token"
    15  )
    16  
    17  // DataSyncSecret is the struct used to create the data sync secret
    18  type DataSyncSecret struct {
    19  	typeMetaKind        string
    20  	typeMetaAPIVersion  string
    21  	objectMetaName      string
    22  	objectMetaNamespace string
    23  	serviceAccount      string
    24  }
    25  
    26  // CreateDataSyncSecret creates a new data sync secret struct
    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  // TypeMetaKind sets the typeMetaKind for the data sync secret
    38  func (d *DataSyncSecret) TypeMetaKind(kind string) *DataSyncSecret {
    39  	d.typeMetaKind = kind
    40  	return d
    41  }
    42  
    43  // TypeMetaAPIVersion sets the typeMetaAPIVersion for the data sync secret
    44  func (d *DataSyncSecret) TypeMetaAPIVersion(apiVersion string) *DataSyncSecret {
    45  	d.typeMetaAPIVersion = apiVersion
    46  	return d
    47  }
    48  
    49  // ObjectMetaName sets the objectMetaName for the data sync secret
    50  func (d *DataSyncSecret) ObjectMetaName(name string) *DataSyncSecret {
    51  	d.objectMetaName = name
    52  	return d
    53  }
    54  
    55  // ObjectMetaNamespace sets the objectMetaNamespace for the data sync secret
    56  func (d *DataSyncSecret) ObjectMetaNamespace(ns string) *DataSyncSecret {
    57  	d.objectMetaNamespace = ns
    58  	return d
    59  }
    60  
    61  // ServiceAccount sets the serviceAccount for the data sync secret
    62  func (d *DataSyncSecret) ServiceAccount(sa string) *DataSyncSecret {
    63  	d.serviceAccount = sa
    64  	return d
    65  }
    66  
    67  // Build creates the data sync secret and returns it.
    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