This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack-cloudmonkey.git

commit 1a06716e10b732f0c28b38535fe57a33f021653b
Author: Rohit Yadav <ro...@apache.org>
AuthorDate: Sun Apr 22 20:57:19 2018 +0530

    cache: add API response keys in API cache for filter options
    
    Signed-off-by: Rohit Yadav <ro...@apache.org>
---
 config/cache.go | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/config/cache.go b/config/cache.go
index a037a95..8fc9089 100644
--- a/config/cache.go
+++ b/config/cache.go
@@ -26,6 +26,8 @@ import (
        "unicode"
 )
 
+const FAKE = "fake"
+
 // APIArg are the args passable to an API
 type APIArg struct {
        Name        string
@@ -46,7 +48,7 @@ type API struct {
        Related      []string
        Async        bool
        Description  string
-       ResponseName string
+       ResponseKeys []string
 }
 
 var apiCache map[string]*API
@@ -138,10 +140,24 @@ func (c *Config) UpdateCache(response 
map[string]interface{}) interface{} {
                        })
                }
 
+               // Add filter arg
+               apiArgs = append(apiArgs, &APIArg{
+                       Name:        "filter=",
+                       Type:        FAKE,
+                       Description: "cloudmonkey specific response key 
filtering",
+               })
+
                sort.Slice(apiArgs, func(i, j int) bool {
                        return apiArgs[i].Name < apiArgs[j].Name
                })
 
+               var responseKeys []string
+               for _, respNode := range api["response"].([]interface{}) {
+                       if resp, ok := respNode.(map[string]interface{}); ok {
+                               responseKeys = append(responseKeys, 
fmt.Sprintf("%v,", resp["name"]))
+                       }
+               }
+
                var requiredArgs []string
                for _, arg := range apiArgs {
                        if arg.Required {
@@ -157,6 +173,7 @@ func (c *Config) UpdateCache(response 
map[string]interface{}) interface{} {
                        RequiredArgs: requiredArgs,
                        Async:        isAsync,
                        Description:  description,
+                       ResponseKeys: responseKeys,
                }
        }
        return count

-- 
To stop receiving notification emails like this one, please contact
ro...@apache.org.

Reply via email to