// NewREST returns a RESTStorage object that will work with testtype. func NewREST(s storage.Interface, storageDecorator generic.StorageDecorator) *REST { prefix := "/testtype" newListFunc := func() runtime.Object { return &testgroup.TestTypeList{} } // Usually you should reuse your RESTCreateStrategy. strategy := &NotNamespaceScoped{} storageInterface := storageDecorator( s, 100, &testgroup.TestType{}, prefix, strategy, newListFunc) store := &etcdgeneric.Etcd{ NewFunc: func() runtime.Object { return &testgroup.TestType{} }, // NewListFunc returns an object capable of storing results of an etcd list. NewListFunc: newListFunc, // Produces a path that etcd understands, to the root of the resource // by combining the namespace in the context with the given prefix. KeyRootFunc: func(ctx api.Context) string { return etcdgeneric.NamespaceKeyRootFunc(ctx, prefix) }, // Produces a path that etcd understands, to the resource by combining // the namespace in the context with the given prefix. KeyFunc: func(ctx api.Context, name string) (string, error) { return etcdgeneric.NamespaceKeyFunc(ctx, prefix, name) }, // Retrieve the name field of the resource. ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*testgroup.TestType).Name, nil }, // Used to match objects based on labels/fields for list. PredicateFunc: func(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(nil) }, Storage: storageInterface, } return &REST{store} }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { subnet, ok := obj.(*api.HostSubnet) if !ok { return false, fmt.Errorf("not a HostSubnet") } return label.Matches(labels.Set(subnet.Labels)) && field.Matches(api.HostSubnetToSelectableFields(subnet)), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { o, ok := obj.(*api.Template) if !ok { return false, fmt.Errorf("not a pod") } return label.Matches(labels.Set(o.Labels)) && field.Matches(api.TemplateToSelectableFields(o)), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { ns, ok := obj.(*api.NetNamespace) if !ok { return false, fmt.Errorf("not a NetNamespace") } return label.Matches(labels.Set(ns.Labels)) && field.Matches(api.NetNamespaceToSelectableFields(ns)), nil }) }
// MatchPodTemplate returns a generic matcher for a given label and field selector. func MatchPodTemplate(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { podObj, ok := obj.(*api.PodTemplate) if !ok { return false, fmt.Errorf("not a pod template") } return label.Matches(labels.Set(podObj.Labels)), nil }) }
// MatchAutoscaler returns a generic matcher for a given label and field selector. func MatchAutoscaler(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { autoscaler, ok := obj.(*expapi.HorizontalPodAutoscaler) if !ok { return false, fmt.Errorf("not a horizontal pod autoscaler") } return label.Matches(labels.Set(autoscaler.Labels)), nil }) }
// MatchHostSubnet returns a generic matcher for a given label and field selector. func MatchHostSubnet(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { _, ok := obj.(*api.HostSubnet) if !ok { return false, fmt.Errorf("not a HostSubnet") } return true, nil }) }
// MatchClusterNetwork returns a generic matcher for a given label and field selector. func MatchClusterNetwork(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { _, ok := obj.(*api.ClusterNetwork) if !ok { return false, fmt.Errorf("not a ClusterNetwork") } return true, nil }) }
// MatchNetNamespace returns a generic matcher for a given label and field selector. func MatchNetNamespace(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { _, ok := obj.(*api.NetNamespace) if !ok { return false, fmt.Errorf("not a NetNamespace") } return true, nil }) }
// MatchNamespace returns a generic matcher for a given label and field selector. func MatchNamespace(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { namespaceObj, ok := obj.(*api.Namespace) if !ok { return false, fmt.Errorf("not a namespace") } fields := NamespaceToSelectableFields(namespaceObj) return label.Matches(labels.Set(namespaceObj.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { sa, ok := obj.(*extensions.ThirdPartyResourceData) if !ok { return false, fmt.Errorf("not a ThirdPartyResourceData") } fields := SelectableFields(sa) return label.Matches(labels.Set(sa.Labels)) && field.Matches(fields), nil }) }
// MatchResourceQuota returns a generic matcher for a given label and field selector. func MatchResourceQuota(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { resourcequotaObj, ok := obj.(*api.ResourceQuota) if !ok { return false, fmt.Errorf("not a resourcequota") } fields := ResourceQuotaToSelectableFields(resourcequotaObj) return label.Matches(labels.Set(resourcequotaObj.Labels)) && field.Matches(fields), nil }) }
// Matchtoken returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { clientObj, ok := obj.(*api.OAuthClient) if !ok { return false, fmt.Errorf("not a client") } fields := SelectableFields(clientObj) return label.Matches(labels.Set(clientObj.Labels)) && field.Matches(fields), nil }) }
// MatchPersistentVolume returns a generic matcher for a given label and field selector. func MatchPersistentVolumes(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { persistentvolumeObj, ok := obj.(*api.PersistentVolume) if !ok { return false, fmt.Errorf("not a persistentvolume") } fields := PersistentVolumeToSelectableFields(persistentvolumeObj) return label.Matches(labels.Set(persistentvolumeObj.Labels)) && field.Matches(fields), nil }) }
// Matchtoken returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { tokenObj, ok := obj.(*api.OAuthAuthorizeToken) if !ok { return false, fmt.Errorf("not a token") } fields := api.OAuthAuthorizeTokenToSelectableFields(tokenObj) return label.Matches(labels.Set(tokenObj.Labels)) && field.Matches(fields), nil }) }
// MatchGroup returns a generic matcher for a given label and field selector. func MatchGroup(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { groupObj, ok := obj.(*api.Group) if !ok { return false, fmt.Errorf("not a group") } fields := GroupToSelectableFields(groupObj) return label.Matches(labels.Set(groupObj.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { sa, ok := obj.(*rbac.ClusterRole) if !ok { return false, fmt.Errorf("not a ClusterRole") } fields := SelectableFields(sa) return label.Matches(labels.Set(sa.Labels)) && field.Matches(fields), nil }) }
// MatchImageStreamTag returns a generic matcher for a given label and field selector. func MatchImageStreamTag(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { target, ok := obj.(*api.ImageStreamTag) if !ok { return false, fmt.Errorf("not an ImageStreamTag") } fields := ImageStreamToSelectableFields(target) return label.Matches(labels.Set(target.Labels)) && field.Matches(fields), nil }) }
// MatchTenant returns a generic matcher for a given label and field selector. func MatchTenant(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { tenantObj, ok := obj.(*api.Tenant) if !ok { return false, fmt.Errorf("not a tenant") } fields := TenantToSelectableFields(tenantObj) return label.Matches(labels.Set(tenantObj.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { scc, ok := obj.(*api.SecurityContextConstraints) if !ok { return false, fmt.Errorf("not a securitycontextconstraint") } fields := SelectableFields(scc) return label.Matches(labels.Set(scc.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { network, ok := obj.(*api.EgressNetworkPolicy) if !ok { return false, fmt.Errorf("not an EgressNetworkPolicy") } fields := api.EgressNetworkPolicyToSelectableFields(network) return label.Matches(labels.Set(network.Labels)) && field.Matches(fields), nil }) }
// MatchIdentity returns a generic matcher for a given label and field selector. func MatchIdentity(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { identityObj, ok := obj.(*api.Identity) if !ok { return false, fmt.Errorf("not an identity") } fields := IdentityToSelectableFields(identityObj) return label.Matches(labels.Set(identityObj.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { userObj, ok := obj.(*api.User) if !ok { return false, fmt.Errorf("not a user") } fields := api.UserToSelectableFields(userObj) return label.Matches(labels.Set(userObj.Labels)) && field.Matches(fields), nil }) }
// MatchImage returns a generic matcher for a given label and field selector. func MatchImage(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { image, ok := obj.(*api.Image) if !ok { return false, fmt.Errorf("not an image") } fields := api.ImageToSelectableFields(image) return label.Matches(labels.Set(image.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { sa, ok := obj.(*certificates.CertificateSigningRequest) if !ok { return false, fmt.Errorf("not a CertificateSigningRequest") } fields := SelectableFields(sa) return label.Matches(labels.Set(sa.Labels)) && field.Matches(fields), nil }) }
// Matcher returns a generic matcher for a given label and field selector. func Matcher(label labels.Selector, field fields.Selector) generic.Matcher { return generic.MatcherFunc(func(obj runtime.Object) (bool, error) { sa, ok := obj.(*api.ServiceAccount) if !ok { return false, fmt.Errorf("not a serviceaccount") } fields := SelectableFields(sa) return label.Matches(labels.Set(sa.Labels)) && field.Matches(fields), nil }) }