diff options
Diffstat (limited to 'resources/resource_metadata.go')
-rw-r--r-- | resources/resource_metadata.go | 20 |
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 { |