Initial project snapshot
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package secrets
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
type AssignmentSecretMergeResult struct {
|
||||
Metadata map[string]any
|
||||
Keys []string
|
||||
}
|
||||
|
||||
func MergeResourceSecretIntoAssignmentMetadata(metadata map[string]any, payload json.RawMessage) (AssignmentSecretMergeResult, error) {
|
||||
if metadata == nil {
|
||||
metadata = map[string]any{}
|
||||
}
|
||||
var secretPayload map[string]any
|
||||
if err := json.Unmarshal(payload, &secretPayload); err != nil {
|
||||
return AssignmentSecretMergeResult{}, fmt.Errorf("decode resolved resource secret: %w", err)
|
||||
}
|
||||
resource, _ := metadata["resource"].(map[string]any)
|
||||
if resource == nil {
|
||||
resource = map[string]any{}
|
||||
metadata["resource"] = resource
|
||||
}
|
||||
resourceMetadata, _ := resource["metadata"].(map[string]any)
|
||||
if resourceMetadata == nil {
|
||||
resourceMetadata = map[string]any{}
|
||||
resource["metadata"] = resourceMetadata
|
||||
}
|
||||
keys := make([]string, 0, len(secretPayload))
|
||||
for key, value := range secretPayload {
|
||||
resourceMetadata[key] = value
|
||||
keys = append(keys, key)
|
||||
}
|
||||
return AssignmentSecretMergeResult{Metadata: metadata, Keys: keys}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user