From e9e58e6b2b18f0909c1ec748e21cee3adb30c253 Mon Sep 17 00:00:00 2001 From: tcarrio Date: Mon, 16 Jul 2018 19:12:21 -0400 Subject: [PATCH] Tags field parsed from "tags" and updated test case --- builder/openstack/image_query.go | 14 ++++++++------ builder/openstack/image_query_test.go | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/builder/openstack/image_query.go b/builder/openstack/image_query.go index 91cfb612e..ff3a9c249 100644 --- a/builder/openstack/image_query.go +++ b/builder/openstack/image_query.go @@ -126,21 +126,16 @@ func buildImageFilters(input map[string]interface{}, listOpts *images.ListOpts) vField.Set(reflect.ValueOf(is)) } - // Generates slice of strings for Tags - case reflect.Slice: - vField.Set(reflect.ValueOf(val)) - default: multierror.Append( fmt.Errorf("Unsupported kind %s", vField.Kind()), multiErr.Errors...) } - // Handles ImageDateQuery types } else if fieldName == reflect.TypeOf(listOpts.CreatedAtQuery).Name() || fieldName == reflect.TypeOf(listOpts.UpdatedAtQuery).Name() { + // Handles ImageDateQuery types - // get ImageDateQuery from string and set to this field query, err := dateToImageDateQuery(key, val.(string)) if err != nil { multierror.Append(err, multiErr.Errors...) @@ -148,6 +143,13 @@ func buildImageFilters(input map[string]interface{}, listOpts *images.ListOpts) } vField.Set(reflect.ValueOf(query)) + + } else if fieldName == reflect.TypeOf(listOpts.Tags).Name() { + // Handles "tags" case and processes as slice of string + + if val, exists := input["tags"]; exists && vField.CanSet() { + vField.Set(reflect.ValueOf(val)) + } } } diff --git a/builder/openstack/image_query_test.go b/builder/openstack/image_query_test.go index f7eb0fa5e..accdf7e3d 100644 --- a/builder/openstack/image_query_test.go +++ b/builder/openstack/image_query_test.go @@ -37,6 +37,7 @@ func TestBuildImageFilter(t *testing.T) { "status": "active", "size_min": "0", "sort": "created_at:desc", + "tags": []string{"prod", "ready"}, } multiErr := buildImageFilters(filters, &testOpts)