summaryrefslogtreecommitdiffstats
path: root/resources/resource_metadata.go
diff options
context:
space:
mode:
Diffstat (limited to 'resources/resource_metadata.go')
-rw-r--r--resources/resource_metadata.go20
1 files changed, 16 insertions, 4 deletions
diff --git a/resources/resource_metadata.go b/resources/resource_metadata.go
index adb9d6867..79e61e1a0 100644
--- a/resources/resource_metadata.go
+++ b/resources/resource_metadata.go
@@ -29,9 +29,15 @@ import (
)
var (
- _ metaAssigner = (*genericResource)(nil)
+ _ metaAssigner = (*genericResource)(nil)
+ _ metaAssigner = (*imageResource)(nil)
+ _ metaAssignerProvider = (*resourceAdapter)(nil)
)
+type metaAssignerProvider interface {
+ getMetaAssigner() metaAssigner
+}
+
// metaAssigner allows updating metadata in resources that supports it.
type metaAssigner interface {
setTitle(title string)
@@ -50,8 +56,15 @@ func AssignMetadata(metadata []map[string]interface{}, resources ...resource.Res
counters := make(map[string]int)
for _, r := range resources {
- if _, ok := r.(metaAssigner); !ok {
- continue
+ var ma metaAssigner
+ mp, ok := r.(metaAssignerProvider)
+ if ok {
+ ma = mp.getMetaAssigner()
+ } else {
+ ma, ok = r.(metaAssigner)
+ if !ok {
+ continue
+ }
}
var (
@@ -61,7 +74,6 @@ func AssignMetadata(metadata []map[string]interface{}, resources ...resource.Res
resourceSrcKey = strings.ToLower(r.Name())
)
- ma := r.(metaAssigner)
for _, meta := range metadata {
src, found := meta["src"]
if !found {