Skip to content

Commit

Permalink
List plugin runtimes API always includes a list even if empty (#24864)
Browse files Browse the repository at this point in the history
  • Loading branch information
tomhjp authored Jan 16, 2024
1 parent d9f0587 commit f393241
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 16 deletions.
3 changes: 3 additions & 0 deletions changelog/24864.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:change
plugins: `/sys/plugins/runtimes/catalog` response will always include a list of "runtimes" in the response, even if empty.
```
8 changes: 4 additions & 4 deletions command/plugin_runtime_list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ func TestPluginRuntimeListCommand_Run(t *testing.T) {
{
"list container on empty plugin runtime catalog",
[]string{"-type=container"},
"Error listing available plugin runtimes:",
2,
"OCI Runtime",
0,
},
{
"list on empty plugin runtime catalog",
nil,
"Error listing available plugin runtimes:",
2,
"OCI Runtime",
0,
},
}

Expand Down
18 changes: 7 additions & 11 deletions vault/logical_system.go
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,7 @@ func (b *SystemBackend) handlePluginRuntimeCatalogRead(ctx context.Context, _ *l
}

func (b *SystemBackend) handlePluginRuntimeCatalogList(ctx context.Context, _ *logical.Request, d *framework.FieldData) (*logical.Response, error) {
var data []map[string]any
runtimes := []map[string]any{}

var pluginRuntimeTypes []consts.PluginRuntimeType
runtimeTypeStr := d.Get("type").(string)
Expand Down Expand Up @@ -916,7 +916,7 @@ func (b *SystemBackend) handlePluginRuntimeCatalogList(ctx context.Context, _ *l
return strings.Compare(configs[i].Name, configs[j].Name) == -1
})
for _, conf := range configs {
data = append(data, map[string]any{
runtimes = append(runtimes, map[string]any{
"name": conf.Name,
"type": conf.Type.String(),
"oci_runtime": conf.OCIRuntime,
Expand All @@ -929,15 +929,11 @@ func (b *SystemBackend) handlePluginRuntimeCatalogList(ctx context.Context, _ *l
}
}

resp := &logical.Response{
Data: map[string]interface{}{},
}

if len(data) > 0 {
resp.Data["runtimes"] = data
}

return resp, nil
return &logical.Response{
Data: map[string]interface{}{
"runtimes": runtimes,
},
}, nil
}

// handleAuditedHeaderUpdate creates or overwrites a header entry
Expand Down
4 changes: 3 additions & 1 deletion vault/logical_system_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6164,7 +6164,9 @@ func TestSystemBackend_pluginRuntimeCRUD(t *testing.T) {
t.Fatalf("err: %v", err)
}

listExp := map[string]interface{}{}
listExp := map[string]any{
"runtimes": []map[string]any{},
}
if !reflect.DeepEqual(resp.Data, listExp) {
t.Fatalf("got: %#v expect: %#v", resp.Data, listExp)
}
Expand Down

0 comments on commit f393241

Please sign in to comment.