From e2f94e937ceedb9026711c87b707e6b1010b173a Mon Sep 17 00:00:00 2001 From: Aleksandr Melnikov Date: Mon, 6 Jul 2020 17:07:14 -0700 Subject: [PATCH] Adding function to output the CLI required YAML for manifests. - Adding helper structs and tags --- pkg/config_types.go | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/pkg/config_types.go b/pkg/config_types.go index 034c00b..6566d92 100644 --- a/pkg/config_types.go +++ b/pkg/config_types.go @@ -1,6 +1,7 @@ package v1 import ( + "gopkg.in/yaml.v3" corev1 "k8s.io/api/core/v1" "strings" ) @@ -16,6 +17,57 @@ type ArtifactRepositoryS3Config struct { AccessKey string `yaml:"accessKey"` Secretkey string `yaml:"secretKey"` } + +// ArtifactRepositoryS3Provider is meant to be used +// by the CLI. CLI will marshal this struct into the correct +// YAML structure for k8s configmap / secret. +type ArtifactRepositoryS3Provider struct { + KeyFormat string `yaml:"keyFormat"` + Bucket string + Endpoint string + Insecure bool + Region string + AccessKeySecret ArtifactRepositorySecret `yaml:"accessKeySecret"` + SecretKeySecret ArtifactRepositorySecret `yaml:"secretKeySecret"` +} + +type ArtifactRepositoryProviderConfig struct { + S3 ArtifactRepositoryS3Provider `yaml:"s3"` +} + +type ArtifactRepositorySecret struct { + Key string `yaml:"key"` + Name string `yaml:"name"` +} + +func (a *ArtifactRepositoryS3Config) MarshalToYaml() (error, string) { + builder := &strings.Builder{} + encoder := yaml.NewEncoder(builder) + encoder.SetIndent(6) + defer encoder.Close() + err := encoder.Encode(&ArtifactRepositoryProviderConfig{ + S3: ArtifactRepositoryS3Provider{ + KeyFormat: a.KeyFormat, + Bucket: a.Bucket, + Endpoint: a.Endpoint, + Insecure: a.Insecure, + Region: a.Region, + AccessKeySecret: ArtifactRepositorySecret{ + Name: a.AccessKeySecret.Name, + Key: a.AccessKey, + }, + SecretKeySecret: ArtifactRepositorySecret{ + Name: a.SecretKeySecret.Name, + Key: a.Secretkey, + }, + }, + }) + + if err != nil { + return err, "" + } + + return nil, builder.String() } // FormatKey replaces placeholder values with their actual values and returns this string.