1
0
mirror of https://github.com/rancher/types.git synced 2025-08-01 13:07:05 +00:00

go generate

This commit is contained in:
rmweir 2019-06-12 11:50:54 -07:00
parent 1b3c529b0c
commit 453910517a
9 changed files with 2498 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2995,6 +2995,70 @@ func (in *ExportOutput) DeepCopy() *ExportOutput {
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Feature) DeepCopyInto(out *Feature) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
if in.Value != nil {
in, out := &in.Value, &out.Value
*out = new(bool)
**out = **in
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Feature.
func (in *Feature) DeepCopy() *Feature {
if in == nil {
return nil
}
out := new(Feature)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *Feature) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FeatureList) DeepCopyInto(out *FeatureList) {
*out = *in
out.TypeMeta = in.TypeMeta
out.ListMeta = in.ListMeta
if in.Items != nil {
in, out := &in.Items, &out.Items
*out = make([]Feature, len(*in))
for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FeatureList.
func (in *FeatureList) DeepCopy() *FeatureList {
if in == nil {
return nil
}
out := new(FeatureList)
in.DeepCopyInto(out)
return out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *FeatureList) DeepCopyObject() runtime.Object {
if c := in.DeepCopy(); c != nil {
return c
}
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Field) DeepCopyInto(out *Field) {
*out = *in

View File

@ -0,0 +1,504 @@
package v3
import (
"context"
"github.com/rancher/norman/controller"
"github.com/rancher/norman/objectclient"
"github.com/rancher/norman/resource"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/watch"
"k8s.io/client-go/tools/cache"
)
var (
FeatureGroupVersionKind = schema.GroupVersionKind{
Version: Version,
Group: GroupName,
Kind: "Feature",
}
FeatureResource = metav1.APIResource{
Name: "features",
SingularName: "feature",
Namespaced: false,
Kind: FeatureGroupVersionKind.Kind,
}
FeatureGroupVersionResource = schema.GroupVersionResource{
Group: GroupName,
Version: Version,
Resource: "features",
}
)
func init() {
resource.Put(FeatureGroupVersionResource)
}
func NewFeature(namespace, name string, obj Feature) *Feature {
obj.APIVersion, obj.Kind = FeatureGroupVersionKind.ToAPIVersionAndKind()
obj.Name = name
obj.Namespace = namespace
return &obj
}
type FeatureList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Feature `json:"items"`
}
type FeatureHandlerFunc func(key string, obj *Feature) (runtime.Object, error)
type FeatureChangeHandlerFunc func(obj *Feature) (runtime.Object, error)
type FeatureLister interface {
List(namespace string, selector labels.Selector) (ret []*Feature, err error)
Get(namespace, name string) (*Feature, error)
}
type FeatureController interface {
Generic() controller.GenericController
Informer() cache.SharedIndexInformer
Lister() FeatureLister
AddHandler(ctx context.Context, name string, handler FeatureHandlerFunc)
AddFeatureHandler(ctx context.Context, enabled func() bool, name string, sync FeatureHandlerFunc)
AddClusterScopedHandler(ctx context.Context, name, clusterName string, handler FeatureHandlerFunc)
AddClusterScopedFeatureHandler(ctx context.Context, enabled func() bool, name, clusterName string, handler FeatureHandlerFunc)
Enqueue(namespace, name string)
Sync(ctx context.Context) error
Start(ctx context.Context, threadiness int) error
}
type FeatureInterface interface {
ObjectClient() *objectclient.ObjectClient
Create(*Feature) (*Feature, error)
GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Feature, error)
Get(name string, opts metav1.GetOptions) (*Feature, error)
Update(*Feature) (*Feature, error)
Delete(name string, options *metav1.DeleteOptions) error
DeleteNamespaced(namespace, name string, options *metav1.DeleteOptions) error
List(opts metav1.ListOptions) (*FeatureList, error)
Watch(opts metav1.ListOptions) (watch.Interface, error)
DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error
Controller() FeatureController
AddHandler(ctx context.Context, name string, sync FeatureHandlerFunc)
AddFeatureHandler(ctx context.Context, enabled func() bool, name string, sync FeatureHandlerFunc)
AddLifecycle(ctx context.Context, name string, lifecycle FeatureLifecycle)
AddFeatureLifecycle(ctx context.Context, enabled func() bool, name string, lifecycle FeatureLifecycle)
AddClusterScopedHandler(ctx context.Context, name, clusterName string, sync FeatureHandlerFunc)
AddClusterScopedFeatureHandler(ctx context.Context, enabled func() bool, name, clusterName string, sync FeatureHandlerFunc)
AddClusterScopedLifecycle(ctx context.Context, name, clusterName string, lifecycle FeatureLifecycle)
AddClusterScopedFeatureLifecycle(ctx context.Context, enabled func() bool, name, clusterName string, lifecycle FeatureLifecycle)
}
type featureLister struct {
controller *featureController
}
func (l *featureLister) List(namespace string, selector labels.Selector) (ret []*Feature, err error) {
err = cache.ListAllByNamespace(l.controller.Informer().GetIndexer(), namespace, selector, func(obj interface{}) {
ret = append(ret, obj.(*Feature))
})
return
}
func (l *featureLister) Get(namespace, name string) (*Feature, error) {
var key string
if namespace != "" {
key = namespace + "/" + name
} else {
key = name
}
obj, exists, err := l.controller.Informer().GetIndexer().GetByKey(key)
if err != nil {
return nil, err
}
if !exists {
return nil, errors.NewNotFound(schema.GroupResource{
Group: FeatureGroupVersionKind.Group,
Resource: "feature",
}, key)
}
return obj.(*Feature), nil
}
type featureController struct {
controller.GenericController
}
func (c *featureController) Generic() controller.GenericController {
return c.GenericController
}
func (c *featureController) Lister() FeatureLister {
return &featureLister{
controller: c,
}
}
func (c *featureController) AddHandler(ctx context.Context, name string, handler FeatureHandlerFunc) {
c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) {
if obj == nil {
return handler(key, nil)
} else if v, ok := obj.(*Feature); ok {
return handler(key, v)
} else {
return nil, nil
}
})
}
func (c *featureController) AddFeatureHandler(ctx context.Context, enabled func() bool, name string, handler FeatureHandlerFunc) {
c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) {
if !enabled() {
return nil, nil
} else if obj == nil {
return handler(key, nil)
} else if v, ok := obj.(*Feature); ok {
return handler(key, v)
} else {
return nil, nil
}
})
}
func (c *featureController) AddClusterScopedHandler(ctx context.Context, name, cluster string, handler FeatureHandlerFunc) {
resource.PutClusterScoped(FeatureGroupVersionResource)
c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) {
if obj == nil {
return handler(key, nil)
} else if v, ok := obj.(*Feature); ok && controller.ObjectInCluster(cluster, obj) {
return handler(key, v)
} else {
return nil, nil
}
})
}
func (c *featureController) AddClusterScopedFeatureHandler(ctx context.Context, enabled func() bool, name, cluster string, handler FeatureHandlerFunc) {
resource.PutClusterScoped(FeatureGroupVersionResource)
c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) {
if !enabled() {
return nil, nil
} else if obj == nil {
return handler(key, nil)
} else if v, ok := obj.(*Feature); ok && controller.ObjectInCluster(cluster, obj) {
return handler(key, v)
} else {
return nil, nil
}
})
}
type featureFactory struct {
}
func (c featureFactory) Object() runtime.Object {
return &Feature{}
}
func (c featureFactory) List() runtime.Object {
return &FeatureList{}
}
func (s *featureClient) Controller() FeatureController {
s.client.Lock()
defer s.client.Unlock()
c, ok := s.client.featureControllers[s.ns]
if ok {
return c
}
genericController := controller.NewGenericController(FeatureGroupVersionKind.Kind+"Controller",
s.objectClient)
c = &featureController{
GenericController: genericController,
}
s.client.featureControllers[s.ns] = c
s.client.starters = append(s.client.starters, c)
return c
}
type featureClient struct {
client *Client
ns string
objectClient *objectclient.ObjectClient
controller FeatureController
}
func (s *featureClient) ObjectClient() *objectclient.ObjectClient {
return s.objectClient
}
func (s *featureClient) Create(o *Feature) (*Feature, error) {
obj, err := s.objectClient.Create(o)
return obj.(*Feature), err
}
func (s *featureClient) Get(name string, opts metav1.GetOptions) (*Feature, error) {
obj, err := s.objectClient.Get(name, opts)
return obj.(*Feature), err
}
func (s *featureClient) GetNamespaced(namespace, name string, opts metav1.GetOptions) (*Feature, error) {
obj, err := s.objectClient.GetNamespaced(namespace, name, opts)
return obj.(*Feature), err
}
func (s *featureClient) Update(o *Feature) (*Feature, error) {
obj, err := s.objectClient.Update(o.Name, o)
return obj.(*Feature), err
}
func (s *featureClient) Delete(name string, options *metav1.DeleteOptions) error {
return s.objectClient.Delete(name, options)
}
func (s *featureClient) DeleteNamespaced(namespace, name string, options *metav1.DeleteOptions) error {
return s.objectClient.DeleteNamespaced(namespace, name, options)
}
func (s *featureClient) List(opts metav1.ListOptions) (*FeatureList, error) {
obj, err := s.objectClient.List(opts)
return obj.(*FeatureList), err
}
func (s *featureClient) Watch(opts metav1.ListOptions) (watch.Interface, error) {
return s.objectClient.Watch(opts)
}
// Patch applies the patch and returns the patched deployment.
func (s *featureClient) Patch(o *Feature, patchType types.PatchType, data []byte, subresources ...string) (*Feature, error) {
obj, err := s.objectClient.Patch(o.Name, o, patchType, data, subresources...)
return obj.(*Feature), err
}
func (s *featureClient) DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error {
return s.objectClient.DeleteCollection(deleteOpts, listOpts)
}
func (s *featureClient) AddHandler(ctx context.Context, name string, sync FeatureHandlerFunc) {
s.Controller().AddHandler(ctx, name, sync)
}
func (s *featureClient) AddFeatureHandler(ctx context.Context, enabled func() bool, name string, sync FeatureHandlerFunc) {
s.Controller().AddFeatureHandler(ctx, enabled, name, sync)
}
func (s *featureClient) AddLifecycle(ctx context.Context, name string, lifecycle FeatureLifecycle) {
sync := NewFeatureLifecycleAdapter(name, false, s, lifecycle)
s.Controller().AddHandler(ctx, name, sync)
}
func (s *featureClient) AddFeatureLifecycle(ctx context.Context, enabled func() bool, name string, lifecycle FeatureLifecycle) {
sync := NewFeatureLifecycleAdapter(name, false, s, lifecycle)
s.Controller().AddFeatureHandler(ctx, enabled, name, sync)
}
func (s *featureClient) AddClusterScopedHandler(ctx context.Context, name, clusterName string, sync FeatureHandlerFunc) {
s.Controller().AddClusterScopedHandler(ctx, name, clusterName, sync)
}
func (s *featureClient) AddClusterScopedFeatureHandler(ctx context.Context, enabled func() bool, name, clusterName string, sync FeatureHandlerFunc) {
s.Controller().AddClusterScopedFeatureHandler(ctx, enabled, name, clusterName, sync)
}
func (s *featureClient) AddClusterScopedLifecycle(ctx context.Context, name, clusterName string, lifecycle FeatureLifecycle) {
sync := NewFeatureLifecycleAdapter(name+"_"+clusterName, true, s, lifecycle)
s.Controller().AddClusterScopedHandler(ctx, name, clusterName, sync)
}
func (s *featureClient) AddClusterScopedFeatureLifecycle(ctx context.Context, enabled func() bool, name, clusterName string, lifecycle FeatureLifecycle) {
sync := NewFeatureLifecycleAdapter(name+"_"+clusterName, true, s, lifecycle)
s.Controller().AddClusterScopedFeatureHandler(ctx, enabled, name, clusterName, sync)
}
type FeatureIndexer func(obj *Feature) ([]string, error)
type FeatureClientCache interface {
Get(namespace, name string) (*Feature, error)
List(namespace string, selector labels.Selector) ([]*Feature, error)
Index(name string, indexer FeatureIndexer)
GetIndexed(name, key string) ([]*Feature, error)
}
type FeatureClient interface {
Create(*Feature) (*Feature, error)
Get(namespace, name string, opts metav1.GetOptions) (*Feature, error)
Update(*Feature) (*Feature, error)
Delete(namespace, name string, options *metav1.DeleteOptions) error
List(namespace string, opts metav1.ListOptions) (*FeatureList, error)
Watch(opts metav1.ListOptions) (watch.Interface, error)
Cache() FeatureClientCache
OnCreate(ctx context.Context, name string, sync FeatureChangeHandlerFunc)
OnChange(ctx context.Context, name string, sync FeatureChangeHandlerFunc)
OnRemove(ctx context.Context, name string, sync FeatureChangeHandlerFunc)
Enqueue(namespace, name string)
Generic() controller.GenericController
ObjectClient() *objectclient.ObjectClient
Interface() FeatureInterface
}
type featureClientCache struct {
client *featureClient2
}
type featureClient2 struct {
iface FeatureInterface
controller FeatureController
}
func (n *featureClient2) Interface() FeatureInterface {
return n.iface
}
func (n *featureClient2) Generic() controller.GenericController {
return n.iface.Controller().Generic()
}
func (n *featureClient2) ObjectClient() *objectclient.ObjectClient {
return n.Interface().ObjectClient()
}
func (n *featureClient2) Enqueue(namespace, name string) {
n.iface.Controller().Enqueue(namespace, name)
}
func (n *featureClient2) Create(obj *Feature) (*Feature, error) {
return n.iface.Create(obj)
}
func (n *featureClient2) Get(namespace, name string, opts metav1.GetOptions) (*Feature, error) {
return n.iface.GetNamespaced(namespace, name, opts)
}
func (n *featureClient2) Update(obj *Feature) (*Feature, error) {
return n.iface.Update(obj)
}
func (n *featureClient2) Delete(namespace, name string, options *metav1.DeleteOptions) error {
return n.iface.DeleteNamespaced(namespace, name, options)
}
func (n *featureClient2) List(namespace string, opts metav1.ListOptions) (*FeatureList, error) {
return n.iface.List(opts)
}
func (n *featureClient2) Watch(opts metav1.ListOptions) (watch.Interface, error) {
return n.iface.Watch(opts)
}
func (n *featureClientCache) Get(namespace, name string) (*Feature, error) {
return n.client.controller.Lister().Get(namespace, name)
}
func (n *featureClientCache) List(namespace string, selector labels.Selector) ([]*Feature, error) {
return n.client.controller.Lister().List(namespace, selector)
}
func (n *featureClient2) Cache() FeatureClientCache {
n.loadController()
return &featureClientCache{
client: n,
}
}
func (n *featureClient2) OnCreate(ctx context.Context, name string, sync FeatureChangeHandlerFunc) {
n.loadController()
n.iface.AddLifecycle(ctx, name+"-create", &featureLifecycleDelegate{create: sync})
}
func (n *featureClient2) OnChange(ctx context.Context, name string, sync FeatureChangeHandlerFunc) {
n.loadController()
n.iface.AddLifecycle(ctx, name+"-change", &featureLifecycleDelegate{update: sync})
}
func (n *featureClient2) OnRemove(ctx context.Context, name string, sync FeatureChangeHandlerFunc) {
n.loadController()
n.iface.AddLifecycle(ctx, name, &featureLifecycleDelegate{remove: sync})
}
func (n *featureClientCache) Index(name string, indexer FeatureIndexer) {
err := n.client.controller.Informer().GetIndexer().AddIndexers(map[string]cache.IndexFunc{
name: func(obj interface{}) ([]string, error) {
if v, ok := obj.(*Feature); ok {
return indexer(v)
}
return nil, nil
},
})
if err != nil {
panic(err)
}
}
func (n *featureClientCache) GetIndexed(name, key string) ([]*Feature, error) {
var result []*Feature
objs, err := n.client.controller.Informer().GetIndexer().ByIndex(name, key)
if err != nil {
return nil, err
}
for _, obj := range objs {
if v, ok := obj.(*Feature); ok {
result = append(result, v)
}
}
return result, nil
}
func (n *featureClient2) loadController() {
if n.controller == nil {
n.controller = n.iface.Controller()
}
}
type featureLifecycleDelegate struct {
create FeatureChangeHandlerFunc
update FeatureChangeHandlerFunc
remove FeatureChangeHandlerFunc
}
func (n *featureLifecycleDelegate) HasCreate() bool {
return n.create != nil
}
func (n *featureLifecycleDelegate) Create(obj *Feature) (runtime.Object, error) {
if n.create == nil {
return obj, nil
}
return n.create(obj)
}
func (n *featureLifecycleDelegate) HasFinalize() bool {
return n.remove != nil
}
func (n *featureLifecycleDelegate) Remove(obj *Feature) (runtime.Object, error) {
if n.remove == nil {
return obj, nil
}
return n.remove(obj)
}
func (n *featureLifecycleDelegate) Updated(obj *Feature) (runtime.Object, error) {
if n.update == nil {
return obj, nil
}
return n.update(obj)
}

View File

@ -0,0 +1,62 @@
package v3
import (
"github.com/rancher/norman/lifecycle"
"k8s.io/apimachinery/pkg/runtime"
)
type FeatureLifecycle interface {
Create(obj *Feature) (runtime.Object, error)
Remove(obj *Feature) (runtime.Object, error)
Updated(obj *Feature) (runtime.Object, error)
}
type featureLifecycleAdapter struct {
lifecycle FeatureLifecycle
}
func (w *featureLifecycleAdapter) HasCreate() bool {
o, ok := w.lifecycle.(lifecycle.ObjectLifecycleCondition)
return !ok || o.HasCreate()
}
func (w *featureLifecycleAdapter) HasFinalize() bool {
o, ok := w.lifecycle.(lifecycle.ObjectLifecycleCondition)
return !ok || o.HasFinalize()
}
func (w *featureLifecycleAdapter) Create(obj runtime.Object) (runtime.Object, error) {
o, err := w.lifecycle.Create(obj.(*Feature))
if o == nil {
return nil, err
}
return o, err
}
func (w *featureLifecycleAdapter) Finalize(obj runtime.Object) (runtime.Object, error) {
o, err := w.lifecycle.Remove(obj.(*Feature))
if o == nil {
return nil, err
}
return o, err
}
func (w *featureLifecycleAdapter) Updated(obj runtime.Object) (runtime.Object, error) {
o, err := w.lifecycle.Updated(obj.(*Feature))
if o == nil {
return nil, err
}
return o, err
}
func NewFeatureLifecycleAdapter(name string, clusterScoped bool, client FeatureInterface, l FeatureLifecycle) FeatureHandlerFunc {
adapter := &featureLifecycleAdapter{lifecycle: l}
syncFn := lifecycle.NewObjectLifecycleAdapter(name, clusterScoped, adapter, client.ObjectClient())
return func(key string, obj *Feature) (runtime.Object, error) {
newObj, err := syncFn(key, obj)
if o, ok := newObj.(runtime.Object); ok {
return o, err
}
return nil, err
}
}

View File

@ -55,6 +55,7 @@ type Interface interface {
ProjectLoggingsGetter
ListenConfigsGetter
SettingsGetter
FeaturesGetter
ClusterAlertsGetter
ProjectAlertsGetter
NotifiersGetter
@ -118,6 +119,7 @@ type Clients struct {
ProjectLogging ProjectLoggingClient
ListenConfig ListenConfigClient
Setting SettingClient
Feature FeatureClient
ClusterAlert ClusterAlertClient
ProjectAlert ProjectAlertClient
Notifier NotifierClient
@ -183,6 +185,7 @@ type Client struct {
projectLoggingControllers map[string]ProjectLoggingController
listenConfigControllers map[string]ListenConfigController
settingControllers map[string]SettingController
featureControllers map[string]FeatureController
clusterAlertControllers map[string]ClusterAlertController
projectAlertControllers map[string]ProjectAlertController
notifierControllers map[string]NotifierController
@ -346,6 +349,9 @@ func NewClientsFromInterface(iface Interface) *Clients {
Setting: &settingClient2{
iface: iface.Settings(""),
},
Feature: &featureClient2{
iface: iface.Features(""),
},
ClusterAlert: &clusterAlertClient2{
iface: iface.ClusterAlerts(""),
},
@ -466,6 +472,7 @@ func NewForConfig(config rest.Config) (Interface, error) {
projectLoggingControllers: map[string]ProjectLoggingController{},
listenConfigControllers: map[string]ListenConfigController{},
settingControllers: map[string]SettingController{},
featureControllers: map[string]FeatureController{},
clusterAlertControllers: map[string]ClusterAlertController{},
projectAlertControllers: map[string]ProjectAlertController{},
notifierControllers: map[string]NotifierController{},
@ -959,6 +966,19 @@ func (c *Client) Settings(namespace string) SettingInterface {
}
}
type FeaturesGetter interface {
Features(namespace string) FeatureInterface
}
func (c *Client) Features(namespace string) FeatureInterface {
objectClient := objectclient.NewObjectClient(namespace, c.restClient, &FeatureResource, FeatureGroupVersionKind, featureFactory{})
return &featureClient{
ns: namespace,
client: c,
objectClient: objectClient,
}
}
type ClusterAlertsGetter interface {
ClusterAlerts(namespace string) ClusterAlertInterface
}

View File

@ -103,6 +103,8 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&ListenConfigList{},
&Setting{},
&SettingList{},
&Feature{},
&FeatureList{},
&ClusterAlert{},
&ClusterAlertList{},
&ProjectAlert{},

View File

@ -41,6 +41,7 @@ type Client struct {
ProjectLogging ProjectLoggingOperations
ListenConfig ListenConfigOperations
Setting SettingOperations
Feature FeatureOperations
ClusterAlert ClusterAlertOperations
ProjectAlert ProjectAlertOperations
Notifier NotifierOperations
@ -111,6 +112,7 @@ func NewClient(opts *clientbase.ClientOpts) (*Client, error) {
client.ProjectLogging = newProjectLoggingClient(client)
client.ListenConfig = newListenConfigClient(client)
client.Setting = newSettingClient(client)
client.Feature = newFeatureClient(client)
client.ClusterAlert = newClusterAlertClient(client)
client.ProjectAlert = newProjectAlertClient(client)
client.Notifier = newNotifierClient(client)

View File

@ -0,0 +1,103 @@
package client
import (
"github.com/rancher/norman/types"
)
const (
FeatureType = "feature"
FeatureFieldAnnotations = "annotations"
FeatureFieldCreated = "created"
FeatureFieldCreatorID = "creatorId"
FeatureFieldDefault = "default"
FeatureFieldLabels = "labels"
FeatureFieldName = "name"
FeatureFieldOwnerReferences = "ownerReferences"
FeatureFieldRemoved = "removed"
FeatureFieldUUID = "uuid"
FeatureFieldValue = "value"
)
type Feature struct {
types.Resource
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Default bool `json:"default,omitempty" yaml:"default,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
Value *bool `json:"value,omitempty" yaml:"value,omitempty"`
}
type FeatureCollection struct {
types.Collection
Data []Feature `json:"data,omitempty"`
client *FeatureClient
}
type FeatureClient struct {
apiClient *Client
}
type FeatureOperations interface {
List(opts *types.ListOpts) (*FeatureCollection, error)
Create(opts *Feature) (*Feature, error)
Update(existing *Feature, updates interface{}) (*Feature, error)
Replace(existing *Feature) (*Feature, error)
ByID(id string) (*Feature, error)
Delete(container *Feature) error
}
func newFeatureClient(apiClient *Client) *FeatureClient {
return &FeatureClient{
apiClient: apiClient,
}
}
func (c *FeatureClient) Create(container *Feature) (*Feature, error) {
resp := &Feature{}
err := c.apiClient.Ops.DoCreate(FeatureType, container, resp)
return resp, err
}
func (c *FeatureClient) Update(existing *Feature, updates interface{}) (*Feature, error) {
resp := &Feature{}
err := c.apiClient.Ops.DoUpdate(FeatureType, &existing.Resource, updates, resp)
return resp, err
}
func (c *FeatureClient) Replace(obj *Feature) (*Feature, error) {
resp := &Feature{}
err := c.apiClient.Ops.DoReplace(FeatureType, &obj.Resource, obj, resp)
return resp, err
}
func (c *FeatureClient) List(opts *types.ListOpts) (*FeatureCollection, error) {
resp := &FeatureCollection{}
err := c.apiClient.Ops.DoList(FeatureType, opts, resp)
resp.client = c
return resp, err
}
func (cc *FeatureCollection) Next() (*FeatureCollection, error) {
if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" {
resp := &FeatureCollection{}
err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp)
resp.client = cc.client
return resp, err
}
return nil, nil
}
func (c *FeatureClient) ByID(id string) (*Feature, error) {
resp := &Feature{}
err := c.apiClient.Ops.DoByID(FeatureType, id, resp)
return resp, err
}
func (c *FeatureClient) Delete(container *Feature) error {
return c.apiClient.Ops.DoResourceDelete(FeatureType, &container.Resource)
}

View File

@ -40,6 +40,7 @@ type Config struct {
ProjectLoggings map[string]managementClient.ProjectLogging `json:"projectLoggings,omitempty" yaml:"projectLoggings,omitempty"`
ListenConfigs map[string]managementClient.ListenConfig `json:"listenConfigs,omitempty" yaml:"listenConfigs,omitempty"`
Settings map[string]managementClient.Setting `json:"settings,omitempty" yaml:"settings,omitempty"`
Features map[string]managementClient.Feature `json:"features,omitempty" yaml:"features,omitempty"`
ClusterAlerts map[string]managementClient.ClusterAlert `json:"clusterAlerts,omitempty" yaml:"clusterAlerts,omitempty"`
ProjectAlerts map[string]managementClient.ProjectAlert `json:"projectAlerts,omitempty" yaml:"projectAlerts,omitempty"`
Notifiers map[string]managementClient.Notifier `json:"notifiers,omitempty" yaml:"notifiers,omitempty"`