in src/app/backend/resource/customresourcedefinition/v1/objects.go [35:85]
func GetCustomResourceObjectList(client apiextensionsclientset.Interface, config *rest.Config, namespace *common.NamespaceQuery,
dsQuery *dataselect.DataSelectQuery, crdName string) (*types.CustomResourceObjectList, error) {
var list *types.CustomResourceObjectList
customResourceDefinition, err := client.ApiextensionsV1().
CustomResourceDefinitions().
Get(context.TODO(), crdName, metav1.GetOptions{})
nonCriticalErrors, criticalError := errors.HandleError(err)
if criticalError != nil {
return nil, criticalError
}
customResourceDefinition = &[]apiextensionsv1.CustomResourceDefinition{removeNonServedVersions(*customResourceDefinition)}[0]
if !isServed(*customResourceDefinition) {
return nil, errors.NewNotFound(fmt.Sprintf("could not find any served versions for the requested resource (%s)", customResourceDefinition.Name))
}
restClient, err := NewRESTClient(config, customResourceDefinition)
nonCriticalErrors, criticalError = errors.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
raw, err := restClient.Get().
NamespaceIfScoped(namespace.ToRequestParam(), customResourceDefinition.Spec.Scope == apiextensionsv1.NamespaceScoped).
Resource(customResourceDefinition.Spec.Names.Plural).
Do(context.TODO()).Raw()
nonCriticalErrors, criticalError = errors.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
err = json.Unmarshal(raw, &list)
nonCriticalErrors, criticalError = errors.AppendError(err, nonCriticalErrors)
if criticalError != nil {
return nil, criticalError
}
list.Errors = nonCriticalErrors
// Return only slice of data, pagination is done here.
crdObjectCells, filteredTotal := dataselect.GenericDataSelectWithFilter(toObjectCells(list.Items), dsQuery)
list.Items = fromObjectCells(crdObjectCells)
list.ListMeta = api.ListMeta{TotalItems: filteredTotal}
for i := range list.Items {
toCRDObject(&list.Items[i], customResourceDefinition)
}
return list, nil
}