You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.3 KiB
59 lines
2.3 KiB
/* |
|
Copyright 2016 The Kubernetes Authors. |
|
|
|
Licensed under the Apache License, Version 2.0 (the "License"); |
|
you may not use this file except in compliance with the License. |
|
You may obtain a copy of the License at |
|
|
|
http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
Unless required by applicable law or agreed to in writing, software |
|
distributed under the License is distributed on an "AS IS" BASIS, |
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
See the License for the specific language governing permissions and |
|
limitations under the License. |
|
*/ |
|
|
|
package dynamic |
|
|
|
import ( |
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" |
|
"k8s.io/apimachinery/pkg/runtime/schema" |
|
"k8s.io/apimachinery/pkg/types" |
|
"k8s.io/apimachinery/pkg/watch" |
|
) |
|
|
|
type Interface interface { |
|
Resource(resource schema.GroupVersionResource) NamespaceableResourceInterface |
|
} |
|
|
|
type ResourceInterface interface { |
|
Create(obj *unstructured.Unstructured, subresources ...string) (*unstructured.Unstructured, error) |
|
Update(obj *unstructured.Unstructured, subresources ...string) (*unstructured.Unstructured, error) |
|
UpdateStatus(obj *unstructured.Unstructured) (*unstructured.Unstructured, error) |
|
Delete(name string, options *metav1.DeleteOptions, subresources ...string) error |
|
DeleteCollection(options *metav1.DeleteOptions, listOptions metav1.ListOptions) error |
|
Get(name string, options metav1.GetOptions, subresources ...string) (*unstructured.Unstructured, error) |
|
List(opts metav1.ListOptions) (*unstructured.UnstructuredList, error) |
|
Watch(opts metav1.ListOptions) (watch.Interface, error) |
|
Patch(name string, pt types.PatchType, data []byte, subresources ...string) (*unstructured.Unstructured, error) |
|
} |
|
|
|
type NamespaceableResourceInterface interface { |
|
Namespace(string) ResourceInterface |
|
ResourceInterface |
|
} |
|
|
|
// APIPathResolverFunc knows how to convert a groupVersion to its API path. The Kind field is optional. |
|
// TODO find a better place to move this for existing callers |
|
type APIPathResolverFunc func(kind schema.GroupVersionKind) string |
|
|
|
// LegacyAPIPathResolverFunc can resolve paths properly with the legacy API. |
|
// TODO find a better place to move this for existing callers |
|
func LegacyAPIPathResolverFunc(kind schema.GroupVersionKind) string { |
|
if len(kind.Group) == 0 { |
|
return "/api" |
|
} |
|
return "/apis" |
|
}
|
|
|