Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit 7cbab9d

Browse files
committed
Report secret processing errors
1 parent 7aeacd1 commit 7cbab9d

7 files changed

Lines changed: 17 additions & 13 deletions

File tree

cmd/create/source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (o *CreateOptions) source(name, kind string, args []string) error {
7979

8080
secretEnv, secretsChanged, err := triggermesh.ProcessSecrets(ctx, s, manifest)
8181
if err != nil {
82-
return fmt.Errorf("component secrets: %w", err)
82+
return fmt.Errorf("spec processing: %w", err)
8383
}
8484

8585
log.Println("Updating manifest")

cmd/create/target.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func (o *CreateOptions) target(name, kind string, args []string, eventSourceFilt
8181

8282
secretEnv, secretsChanged, err := triggermesh.ProcessSecrets(ctx, t, manifest)
8383
if err != nil {
84-
return fmt.Errorf("component secrets: %w", err)
84+
return fmt.Errorf("spec processing: %w", err)
8585
}
8686

8787
log.Println("Updating manifest")

cmd/delete/delete.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"log"
2323
"os"
2424
"path"
25+
"strings"
2526

2627
"github.com/docker/docker/client"
2728
"github.com/spf13/cobra"
@@ -98,7 +99,7 @@ func (o *DeleteOptions) deleteComponents(components []string) error {
9899
if skip {
99100
continue
100101
}
101-
log.Printf("Deleting %q", object.Metadata.Name)
102+
log.Printf("Deleting %q %s", object.Metadata.Name, strings.ToLower(object.Kind))
102103
if object.Kind == "Broker" {
103104
object.Metadata.Name += "-broker"
104105
}

pkg/kubernetes/object.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,5 +125,5 @@ func ExtractSecrets(componentName, resource, crdFile string, spec map[string]int
125125
if err != nil {
126126
return nil, err
127127
}
128-
return crd.ExtractSecrets(componentName, *schema, spec), nil
128+
return crd.ExtractSecrets(componentName, *schema, spec)
129129
}

pkg/triggermesh/components/source/source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (s *Source) GetEventTypes() ([]string, error) {
121121
func (s *Source) GetChildren() ([]triggermesh.Component, error) {
122122
secrets, err := kubernetes.ExtractSecrets(s.Name, s.Kind, s.CRDFile, s.spec)
123123
if err != nil {
124-
return nil, fmt.Errorf("extracting target secrets: %w", err)
124+
return nil, fmt.Errorf("extracting secrets: %w", err)
125125
}
126126
return []triggermesh.Component{secret.New(strings.ToLower(s.Name), s.Broker, secrets)}, nil
127127
}

pkg/triggermesh/crd/secret.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package crd
1818

1919
import (
2020
"encoding/base64"
21+
"fmt"
2122
"strings"
2223

2324
"k8s.io/kube-openapi/pkg/validation/spec"
@@ -35,15 +36,15 @@ func isSecretRef(s spec.Schema) (string, bool) {
3536
return "", false
3637
}
3738

38-
func ExtractSecrets(componentName string, schema Schema, spec map[string]interface{}) map[string]string {
39+
func ExtractSecrets(componentName string, schema Schema, spec map[string]interface{}) (map[string]string, error) {
3940
result := make(map[string]string)
4041
for k, v := range spec {
4142
if nestedSchema, ok := schema.schema.Properties[k]; ok {
4243
if key, ok := isSecretRef(nestedSchema); ok {
4344
if secretValue, ok := v.(string); ok {
4445
result[k] = base64.StdEncoding.EncodeToString([]byte(secretValue))
4546
} else {
46-
// error, we want a secret value here
47+
return nil, fmt.Errorf("%q is expected to contain secret string, got %T", k, v)
4748
}
4849
spec[k] = map[string]interface{}{
4950
key: map[string]interface{}{
@@ -53,13 +54,15 @@ func ExtractSecrets(componentName string, schema Schema, spec map[string]interfa
5354
}
5455
}
5556
if nestedSpec, ok := v.(map[string]interface{}); ok {
56-
for nestedKey, nestedValue := range ExtractSecrets(componentName, Schema{nestedSchema}, nestedSpec) {
57+
nestedSecrets, err := ExtractSecrets(componentName, Schema{nestedSchema}, nestedSpec)
58+
if err != nil {
59+
return nil, err
60+
}
61+
for nestedKey, nestedValue := range nestedSecrets {
5762
result[nestedKey] = nestedValue
5863
}
5964
}
60-
} else {
61-
// spec mismatch
6265
}
6366
}
64-
return result
67+
return result, nil
6568
}

pkg/triggermesh/triggermesh.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ func secretToEnv(secret Component) ([]corev1.EnvVar, error) {
9696
func ProcessSecrets(ctx context.Context, p Parent, manifestFile string) (map[string]string, bool, error) {
9797
secrets, err := p.GetChildren()
9898
if err != nil {
99-
return nil, false, fmt.Errorf("target secrets: %w", err)
99+
return nil, false, fmt.Errorf("component nested objects: %w", err)
100100
}
101101
secretsChanged := false
102102
secretEnv := make(map[string]string)
103103
for _, s := range secrets {
104104
dirty, err := WriteObject(ctx, s, manifestFile)
105105
if err != nil {
106-
return nil, false, fmt.Errorf("write secret object: %w", err)
106+
return nil, false, fmt.Errorf("write nested object: %w", err)
107107
}
108108
if dirty {
109109
secretsChanged = true

0 commit comments

Comments
 (0)