Adding function to output the CLI required YAML for manifests.

- Adding helper structs and tags
This commit is contained in:
Aleksandr Melnikov
2020-07-06 17:07:14 -07:00
parent df74766a66
commit e2f94e937c

View File

@@ -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.