mirror of
https://github.com/rancher/steve.git
synced 2025-08-22 16:16:49 +00:00
Updating ByNames to not return nil, nil
ByNames could previously return a nil value and a nil error. This caused issues when other parts of the application (pkg/stores/partition/parallel.go) tried to use the result. Now this will return an empty list on the error condition, instead of nil
This commit is contained in:
parent
811e0b3572
commit
0b23400f9f
@ -205,9 +205,10 @@ func tableToObjects(obj map[string]interface{}) []unstructured.Unstructured {
|
|||||||
// be returned in the list.
|
// be returned in the list.
|
||||||
func (s *Store) ByNames(apiOp *types.APIRequest, schema *types.APISchema, names sets.String) (*unstructured.UnstructuredList, []types.Warning, error) {
|
func (s *Store) ByNames(apiOp *types.APIRequest, schema *types.APISchema, names sets.String) (*unstructured.UnstructuredList, []types.Warning, error) {
|
||||||
if apiOp.Namespace == "*" {
|
if apiOp.Namespace == "*" {
|
||||||
// This happens when you grant namespaced objects with "get" by name in a clusterrolebinding. We will treat
|
// This happens when you grant namespaced objects with "get" or "list "by name in a clusterrolebinding.
|
||||||
// this as an invalid situation instead of listing all objects in the cluster and filtering by name.
|
// We will treat this as an invalid situation instead of listing all objects in the cluster
|
||||||
return nil, nil, nil
|
// and filtering by name.
|
||||||
|
return &unstructured.UnstructuredList{}, nil, nil
|
||||||
}
|
}
|
||||||
buffer := WarningBuffer{}
|
buffer := WarningBuffer{}
|
||||||
adminClient, err := s.clientGetter.TableAdminClient(apiOp, schema, apiOp.Namespace, &buffer)
|
adminClient, err := s.clientGetter.TableAdminClient(apiOp, schema, apiOp.Namespace, &buffer)
|
||||||
|
@ -68,6 +68,18 @@ func TestWatchNamesErrReceive(t *testing.T) {
|
|||||||
assert.Equal(t, 0, len(c.ResultChan()), "Expected all secrets to have been received")
|
assert.Equal(t, 0, len(c.ResultChan()), "Expected all secrets to have been received")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestByNames(t *testing.T) {
|
||||||
|
s := Store{}
|
||||||
|
apiSchema := &types.APISchema{Schema: &schemas.Schema{}}
|
||||||
|
apiOp := &types.APIRequest{Namespace: "*", Schema: apiSchema, Request: &http.Request{}}
|
||||||
|
names := sets.NewString("some-resource", "some-other-resource")
|
||||||
|
result, warn, err := s.ByNames(apiOp, apiSchema, names)
|
||||||
|
assert.NotNil(t, result)
|
||||||
|
assert.Len(t, result.Items, 0)
|
||||||
|
assert.Nil(t, err)
|
||||||
|
assert.Nil(t, warn)
|
||||||
|
}
|
||||||
|
|
||||||
func (t *testFactory) TableAdminClientForWatch(ctx *types.APIRequest, schema *types.APISchema, namespace string, warningHandler rest.WarningHandler) (dynamic.ResourceInterface, error) {
|
func (t *testFactory) TableAdminClientForWatch(ctx *types.APIRequest, schema *types.APISchema, namespace string, warningHandler rest.WarningHandler) (dynamic.ResourceInterface, error) {
|
||||||
return t.fakeClient.Resource(schema2.GroupVersionResource{}), nil
|
return t.fakeClient.Resource(schema2.GroupVersionResource{}), nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user