diff --git a/apis/management.cattle.io/v3/zz_generated_deepcopy.go b/apis/management.cattle.io/v3/zz_generated_deepcopy.go index 03601631..f5d8ee99 100644 --- a/apis/management.cattle.io/v3/zz_generated_deepcopy.go +++ b/apis/management.cattle.io/v3/zz_generated_deepcopy.go @@ -1,6 +1,7 @@ package v3 import ( + projectcattleiov3 "github.com/rancher/types/apis/project.cattle.io/v3" v1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" runtime "k8s.io/apimachinery/pkg/runtime" @@ -3891,7 +3892,7 @@ func (in *MultiClusterApp) DeepCopyInto(out *MultiClusterApp) { out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) - out.Status = in.Status + in.Status.DeepCopyInto(&out.Status) return } @@ -3946,6 +3947,89 @@ func (in *MultiClusterAppList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MultiClusterAppRevision) DeepCopyInto(out *MultiClusterAppRevision) { + *out = *in + out.Namespaced = in.Namespaced + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + if in.Answers != nil { + in, out := &in.Answers, &out.Answers + *out = make([]Answer, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultiClusterAppRevision. +func (in *MultiClusterAppRevision) DeepCopy() *MultiClusterAppRevision { + if in == nil { + return nil + } + out := new(MultiClusterAppRevision) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MultiClusterAppRevision) 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 *MultiClusterAppRevisionList) DeepCopyInto(out *MultiClusterAppRevisionList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]MultiClusterAppRevision, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultiClusterAppRevisionList. +func (in *MultiClusterAppRevisionList) DeepCopy() *MultiClusterAppRevisionList { + if in == nil { + return nil + } + out := new(MultiClusterAppRevisionList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *MultiClusterAppRevisionList) 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 *MultiClusterAppRollbackInput) DeepCopyInto(out *MultiClusterAppRollbackInput) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MultiClusterAppRollbackInput. +func (in *MultiClusterAppRollbackInput) DeepCopy() *MultiClusterAppRollbackInput { + if in == nil { + return nil + } + out := new(MultiClusterAppRollbackInput) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MultiClusterAppSpec) DeepCopyInto(out *MultiClusterAppSpec) { *out = *in @@ -3966,6 +4050,7 @@ func (in *MultiClusterAppSpec) DeepCopyInto(out *MultiClusterAppSpec) { *out = make([]Member, len(*in)) copy(*out, *in) } + in.UpgradeStrategy.DeepCopyInto(&out.UpgradeStrategy) return } @@ -3982,6 +4067,11 @@ func (in *MultiClusterAppSpec) DeepCopy() *MultiClusterAppSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *MultiClusterAppStatus) DeepCopyInto(out *MultiClusterAppStatus) { *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]projectcattleiov3.AppCondition, len(*in)) + copy(*out, *in) + } return } @@ -6748,6 +6838,22 @@ func (in *RoleTemplateList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RollingUpdate) DeepCopyInto(out *RollingUpdate) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RollingUpdate. +func (in *RollingUpdate) DeepCopy() *RollingUpdate { + if in == nil { + return nil + } + out := new(RollingUpdate) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RotateCertificateInput) DeepCopyInto(out *RotateCertificateInput) { *out = *in @@ -7632,6 +7738,27 @@ func (in *TokenList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UpgradeStrategy) DeepCopyInto(out *UpgradeStrategy) { + *out = *in + if in.RollingUpdate != nil { + in, out := &in.RollingUpdate, &out.RollingUpdate + *out = new(RollingUpdate) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpgradeStrategy. +func (in *UpgradeStrategy) DeepCopy() *UpgradeStrategy { + if in == nil { + return nil + } + out := new(UpgradeStrategy) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *User) DeepCopyInto(out *User) { *out = *in diff --git a/apis/management.cattle.io/v3/zz_generated_k8s_client.go b/apis/management.cattle.io/v3/zz_generated_k8s_client.go index 09a27c51..ddcfd3e2 100644 --- a/apis/management.cattle.io/v3/zz_generated_k8s_client.go +++ b/apis/management.cattle.io/v3/zz_generated_k8s_client.go @@ -64,6 +64,7 @@ type Interface interface { ProjectCatalogsGetter ClusterCatalogsGetter MultiClusterAppsGetter + MultiClusterAppRevisionsGetter GlobalDNSsGetter GlobalDNSProvidersGetter KontainerDriversGetter @@ -120,6 +121,7 @@ type Clients struct { ProjectCatalog ProjectCatalogClient ClusterCatalog ClusterCatalogClient MultiClusterApp MultiClusterAppClient + MultiClusterAppRevision MultiClusterAppRevisionClient GlobalDNS GlobalDNSClient GlobalDNSProvider GlobalDNSProviderClient KontainerDriver KontainerDriverClient @@ -178,6 +180,7 @@ type Client struct { projectCatalogControllers map[string]ProjectCatalogController clusterCatalogControllers map[string]ClusterCatalogController multiClusterAppControllers map[string]MultiClusterAppController + multiClusterAppRevisionControllers map[string]MultiClusterAppRevisionController globalDnsControllers map[string]GlobalDNSController globalDnsProviderControllers map[string]GlobalDNSProviderController kontainerDriverControllers map[string]KontainerDriverController @@ -352,6 +355,9 @@ func NewClientsFromInterface(iface Interface) *Clients { MultiClusterApp: &multiClusterAppClient2{ iface: iface.MultiClusterApps(""), }, + MultiClusterAppRevision: &multiClusterAppRevisionClient2{ + iface: iface.MultiClusterAppRevisions(""), + }, GlobalDNS: &globalDnsClient2{ iface: iface.GlobalDNSs(""), }, @@ -433,6 +439,7 @@ func NewForConfig(config rest.Config) (Interface, error) { projectCatalogControllers: map[string]ProjectCatalogController{}, clusterCatalogControllers: map[string]ClusterCatalogController{}, multiClusterAppControllers: map[string]MultiClusterAppController{}, + multiClusterAppRevisionControllers: map[string]MultiClusterAppRevisionController{}, globalDnsControllers: map[string]GlobalDNSController{}, globalDnsProviderControllers: map[string]GlobalDNSProviderController{}, kontainerDriverControllers: map[string]KontainerDriverController{}, @@ -1027,6 +1034,19 @@ func (c *Client) MultiClusterApps(namespace string) MultiClusterAppInterface { } } +type MultiClusterAppRevisionsGetter interface { + MultiClusterAppRevisions(namespace string) MultiClusterAppRevisionInterface +} + +func (c *Client) MultiClusterAppRevisions(namespace string) MultiClusterAppRevisionInterface { + objectClient := objectclient.NewObjectClient(namespace, c.restClient, &MultiClusterAppRevisionResource, MultiClusterAppRevisionGroupVersionKind, multiClusterAppRevisionFactory{}) + return &multiClusterAppRevisionClient{ + ns: namespace, + client: c, + objectClient: objectClient, + } +} + type GlobalDNSsGetter interface { GlobalDNSs(namespace string) GlobalDNSInterface } diff --git a/apis/management.cattle.io/v3/zz_generated_multi_cluster_app_revision_controller.go b/apis/management.cattle.io/v3/zz_generated_multi_cluster_app_revision_controller.go new file mode 100644 index 00000000..9b01aa4a --- /dev/null +++ b/apis/management.cattle.io/v3/zz_generated_multi_cluster_app_revision_controller.go @@ -0,0 +1,440 @@ +package v3 + +import ( + "context" + + "github.com/rancher/norman/controller" + "github.com/rancher/norman/objectclient" + "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 ( + MultiClusterAppRevisionGroupVersionKind = schema.GroupVersionKind{ + Version: Version, + Group: GroupName, + Kind: "MultiClusterAppRevision", + } + MultiClusterAppRevisionResource = metav1.APIResource{ + Name: "multiclusterapprevisions", + SingularName: "multiclusterapprevision", + Namespaced: true, + + Kind: MultiClusterAppRevisionGroupVersionKind.Kind, + } +) + +func NewMultiClusterAppRevision(namespace, name string, obj MultiClusterAppRevision) *MultiClusterAppRevision { + obj.APIVersion, obj.Kind = MultiClusterAppRevisionGroupVersionKind.ToAPIVersionAndKind() + obj.Name = name + obj.Namespace = namespace + return &obj +} + +type MultiClusterAppRevisionList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []MultiClusterAppRevision +} + +type MultiClusterAppRevisionHandlerFunc func(key string, obj *MultiClusterAppRevision) (runtime.Object, error) + +type MultiClusterAppRevisionChangeHandlerFunc func(obj *MultiClusterAppRevision) (runtime.Object, error) + +type MultiClusterAppRevisionLister interface { + List(namespace string, selector labels.Selector) (ret []*MultiClusterAppRevision, err error) + Get(namespace, name string) (*MultiClusterAppRevision, error) +} + +type MultiClusterAppRevisionController interface { + Generic() controller.GenericController + Informer() cache.SharedIndexInformer + Lister() MultiClusterAppRevisionLister + AddHandler(ctx context.Context, name string, handler MultiClusterAppRevisionHandlerFunc) + AddClusterScopedHandler(ctx context.Context, name, clusterName string, handler MultiClusterAppRevisionHandlerFunc) + Enqueue(namespace, name string) + Sync(ctx context.Context) error + Start(ctx context.Context, threadiness int) error +} + +type MultiClusterAppRevisionInterface interface { + ObjectClient() *objectclient.ObjectClient + Create(*MultiClusterAppRevision) (*MultiClusterAppRevision, error) + GetNamespaced(namespace, name string, opts metav1.GetOptions) (*MultiClusterAppRevision, error) + Get(name string, opts metav1.GetOptions) (*MultiClusterAppRevision, error) + Update(*MultiClusterAppRevision) (*MultiClusterAppRevision, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteNamespaced(namespace, name string, options *metav1.DeleteOptions) error + List(opts metav1.ListOptions) (*MultiClusterAppRevisionList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error + Controller() MultiClusterAppRevisionController + AddHandler(ctx context.Context, name string, sync MultiClusterAppRevisionHandlerFunc) + AddLifecycle(ctx context.Context, name string, lifecycle MultiClusterAppRevisionLifecycle) + AddClusterScopedHandler(ctx context.Context, name, clusterName string, sync MultiClusterAppRevisionHandlerFunc) + AddClusterScopedLifecycle(ctx context.Context, name, clusterName string, lifecycle MultiClusterAppRevisionLifecycle) +} + +type multiClusterAppRevisionLister struct { + controller *multiClusterAppRevisionController +} + +func (l *multiClusterAppRevisionLister) List(namespace string, selector labels.Selector) (ret []*MultiClusterAppRevision, err error) { + err = cache.ListAllByNamespace(l.controller.Informer().GetIndexer(), namespace, selector, func(obj interface{}) { + ret = append(ret, obj.(*MultiClusterAppRevision)) + }) + return +} + +func (l *multiClusterAppRevisionLister) Get(namespace, name string) (*MultiClusterAppRevision, 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: MultiClusterAppRevisionGroupVersionKind.Group, + Resource: "multiClusterAppRevision", + }, key) + } + return obj.(*MultiClusterAppRevision), nil +} + +type multiClusterAppRevisionController struct { + controller.GenericController +} + +func (c *multiClusterAppRevisionController) Generic() controller.GenericController { + return c.GenericController +} + +func (c *multiClusterAppRevisionController) Lister() MultiClusterAppRevisionLister { + return &multiClusterAppRevisionLister{ + controller: c, + } +} + +func (c *multiClusterAppRevisionController) AddHandler(ctx context.Context, name string, handler MultiClusterAppRevisionHandlerFunc) { + c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) { + if obj == nil { + return handler(key, nil) + } else if v, ok := obj.(*MultiClusterAppRevision); ok { + return handler(key, v) + } else { + return nil, nil + } + }) +} + +func (c *multiClusterAppRevisionController) AddClusterScopedHandler(ctx context.Context, name, cluster string, handler MultiClusterAppRevisionHandlerFunc) { + c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) { + if obj == nil { + return handler(key, nil) + } else if v, ok := obj.(*MultiClusterAppRevision); ok && controller.ObjectInCluster(cluster, obj) { + return handler(key, v) + } else { + return nil, nil + } + }) +} + +type multiClusterAppRevisionFactory struct { +} + +func (c multiClusterAppRevisionFactory) Object() runtime.Object { + return &MultiClusterAppRevision{} +} + +func (c multiClusterAppRevisionFactory) List() runtime.Object { + return &MultiClusterAppRevisionList{} +} + +func (s *multiClusterAppRevisionClient) Controller() MultiClusterAppRevisionController { + s.client.Lock() + defer s.client.Unlock() + + c, ok := s.client.multiClusterAppRevisionControllers[s.ns] + if ok { + return c + } + + genericController := controller.NewGenericController(MultiClusterAppRevisionGroupVersionKind.Kind+"Controller", + s.objectClient) + + c = &multiClusterAppRevisionController{ + GenericController: genericController, + } + + s.client.multiClusterAppRevisionControllers[s.ns] = c + s.client.starters = append(s.client.starters, c) + + return c +} + +type multiClusterAppRevisionClient struct { + client *Client + ns string + objectClient *objectclient.ObjectClient + controller MultiClusterAppRevisionController +} + +func (s *multiClusterAppRevisionClient) ObjectClient() *objectclient.ObjectClient { + return s.objectClient +} + +func (s *multiClusterAppRevisionClient) Create(o *MultiClusterAppRevision) (*MultiClusterAppRevision, error) { + obj, err := s.objectClient.Create(o) + return obj.(*MultiClusterAppRevision), err +} + +func (s *multiClusterAppRevisionClient) Get(name string, opts metav1.GetOptions) (*MultiClusterAppRevision, error) { + obj, err := s.objectClient.Get(name, opts) + return obj.(*MultiClusterAppRevision), err +} + +func (s *multiClusterAppRevisionClient) GetNamespaced(namespace, name string, opts metav1.GetOptions) (*MultiClusterAppRevision, error) { + obj, err := s.objectClient.GetNamespaced(namespace, name, opts) + return obj.(*MultiClusterAppRevision), err +} + +func (s *multiClusterAppRevisionClient) Update(o *MultiClusterAppRevision) (*MultiClusterAppRevision, error) { + obj, err := s.objectClient.Update(o.Name, o) + return obj.(*MultiClusterAppRevision), err +} + +func (s *multiClusterAppRevisionClient) Delete(name string, options *metav1.DeleteOptions) error { + return s.objectClient.Delete(name, options) +} + +func (s *multiClusterAppRevisionClient) DeleteNamespaced(namespace, name string, options *metav1.DeleteOptions) error { + return s.objectClient.DeleteNamespaced(namespace, name, options) +} + +func (s *multiClusterAppRevisionClient) List(opts metav1.ListOptions) (*MultiClusterAppRevisionList, error) { + obj, err := s.objectClient.List(opts) + return obj.(*MultiClusterAppRevisionList), err +} + +func (s *multiClusterAppRevisionClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { + return s.objectClient.Watch(opts) +} + +// Patch applies the patch and returns the patched deployment. +func (s *multiClusterAppRevisionClient) Patch(o *MultiClusterAppRevision, patchType types.PatchType, data []byte, subresources ...string) (*MultiClusterAppRevision, error) { + obj, err := s.objectClient.Patch(o.Name, o, patchType, data, subresources...) + return obj.(*MultiClusterAppRevision), err +} + +func (s *multiClusterAppRevisionClient) DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error { + return s.objectClient.DeleteCollection(deleteOpts, listOpts) +} + +func (s *multiClusterAppRevisionClient) AddHandler(ctx context.Context, name string, sync MultiClusterAppRevisionHandlerFunc) { + s.Controller().AddHandler(ctx, name, sync) +} + +func (s *multiClusterAppRevisionClient) AddLifecycle(ctx context.Context, name string, lifecycle MultiClusterAppRevisionLifecycle) { + sync := NewMultiClusterAppRevisionLifecycleAdapter(name, false, s, lifecycle) + s.Controller().AddHandler(ctx, name, sync) +} + +func (s *multiClusterAppRevisionClient) AddClusterScopedHandler(ctx context.Context, name, clusterName string, sync MultiClusterAppRevisionHandlerFunc) { + s.Controller().AddClusterScopedHandler(ctx, name, clusterName, sync) +} + +func (s *multiClusterAppRevisionClient) AddClusterScopedLifecycle(ctx context.Context, name, clusterName string, lifecycle MultiClusterAppRevisionLifecycle) { + sync := NewMultiClusterAppRevisionLifecycleAdapter(name+"_"+clusterName, true, s, lifecycle) + s.Controller().AddClusterScopedHandler(ctx, name, clusterName, sync) +} + +type MultiClusterAppRevisionIndexer func(obj *MultiClusterAppRevision) ([]string, error) + +type MultiClusterAppRevisionClientCache interface { + Get(namespace, name string) (*MultiClusterAppRevision, error) + List(namespace string, selector labels.Selector) ([]*MultiClusterAppRevision, error) + + Index(name string, indexer MultiClusterAppRevisionIndexer) + GetIndexed(name, key string) ([]*MultiClusterAppRevision, error) +} + +type MultiClusterAppRevisionClient interface { + Create(*MultiClusterAppRevision) (*MultiClusterAppRevision, error) + Get(namespace, name string, opts metav1.GetOptions) (*MultiClusterAppRevision, error) + Update(*MultiClusterAppRevision) (*MultiClusterAppRevision, error) + Delete(namespace, name string, options *metav1.DeleteOptions) error + List(namespace string, opts metav1.ListOptions) (*MultiClusterAppRevisionList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + + Cache() MultiClusterAppRevisionClientCache + + OnCreate(ctx context.Context, name string, sync MultiClusterAppRevisionChangeHandlerFunc) + OnChange(ctx context.Context, name string, sync MultiClusterAppRevisionChangeHandlerFunc) + OnRemove(ctx context.Context, name string, sync MultiClusterAppRevisionChangeHandlerFunc) + Enqueue(namespace, name string) + + Generic() controller.GenericController + ObjectClient() *objectclient.ObjectClient + Interface() MultiClusterAppRevisionInterface +} + +type multiClusterAppRevisionClientCache struct { + client *multiClusterAppRevisionClient2 +} + +type multiClusterAppRevisionClient2 struct { + iface MultiClusterAppRevisionInterface + controller MultiClusterAppRevisionController +} + +func (n *multiClusterAppRevisionClient2) Interface() MultiClusterAppRevisionInterface { + return n.iface +} + +func (n *multiClusterAppRevisionClient2) Generic() controller.GenericController { + return n.iface.Controller().Generic() +} + +func (n *multiClusterAppRevisionClient2) ObjectClient() *objectclient.ObjectClient { + return n.Interface().ObjectClient() +} + +func (n *multiClusterAppRevisionClient2) Enqueue(namespace, name string) { + n.iface.Controller().Enqueue(namespace, name) +} + +func (n *multiClusterAppRevisionClient2) Create(obj *MultiClusterAppRevision) (*MultiClusterAppRevision, error) { + return n.iface.Create(obj) +} + +func (n *multiClusterAppRevisionClient2) Get(namespace, name string, opts metav1.GetOptions) (*MultiClusterAppRevision, error) { + return n.iface.GetNamespaced(namespace, name, opts) +} + +func (n *multiClusterAppRevisionClient2) Update(obj *MultiClusterAppRevision) (*MultiClusterAppRevision, error) { + return n.iface.Update(obj) +} + +func (n *multiClusterAppRevisionClient2) Delete(namespace, name string, options *metav1.DeleteOptions) error { + return n.iface.DeleteNamespaced(namespace, name, options) +} + +func (n *multiClusterAppRevisionClient2) List(namespace string, opts metav1.ListOptions) (*MultiClusterAppRevisionList, error) { + return n.iface.List(opts) +} + +func (n *multiClusterAppRevisionClient2) Watch(opts metav1.ListOptions) (watch.Interface, error) { + return n.iface.Watch(opts) +} + +func (n *multiClusterAppRevisionClientCache) Get(namespace, name string) (*MultiClusterAppRevision, error) { + return n.client.controller.Lister().Get(namespace, name) +} + +func (n *multiClusterAppRevisionClientCache) List(namespace string, selector labels.Selector) ([]*MultiClusterAppRevision, error) { + return n.client.controller.Lister().List(namespace, selector) +} + +func (n *multiClusterAppRevisionClient2) Cache() MultiClusterAppRevisionClientCache { + n.loadController() + return &multiClusterAppRevisionClientCache{ + client: n, + } +} + +func (n *multiClusterAppRevisionClient2) OnCreate(ctx context.Context, name string, sync MultiClusterAppRevisionChangeHandlerFunc) { + n.loadController() + n.iface.AddLifecycle(ctx, name+"-create", &multiClusterAppRevisionLifecycleDelegate{create: sync}) +} + +func (n *multiClusterAppRevisionClient2) OnChange(ctx context.Context, name string, sync MultiClusterAppRevisionChangeHandlerFunc) { + n.loadController() + n.iface.AddLifecycle(ctx, name+"-change", &multiClusterAppRevisionLifecycleDelegate{update: sync}) +} + +func (n *multiClusterAppRevisionClient2) OnRemove(ctx context.Context, name string, sync MultiClusterAppRevisionChangeHandlerFunc) { + n.loadController() + n.iface.AddLifecycle(ctx, name, &multiClusterAppRevisionLifecycleDelegate{remove: sync}) +} + +func (n *multiClusterAppRevisionClientCache) Index(name string, indexer MultiClusterAppRevisionIndexer) { + err := n.client.controller.Informer().GetIndexer().AddIndexers(map[string]cache.IndexFunc{ + name: func(obj interface{}) ([]string, error) { + if v, ok := obj.(*MultiClusterAppRevision); ok { + return indexer(v) + } + return nil, nil + }, + }) + + if err != nil { + panic(err) + } +} + +func (n *multiClusterAppRevisionClientCache) GetIndexed(name, key string) ([]*MultiClusterAppRevision, error) { + var result []*MultiClusterAppRevision + objs, err := n.client.controller.Informer().GetIndexer().ByIndex(name, key) + if err != nil { + return nil, err + } + for _, obj := range objs { + if v, ok := obj.(*MultiClusterAppRevision); ok { + result = append(result, v) + } + } + + return result, nil +} + +func (n *multiClusterAppRevisionClient2) loadController() { + if n.controller == nil { + n.controller = n.iface.Controller() + } +} + +type multiClusterAppRevisionLifecycleDelegate struct { + create MultiClusterAppRevisionChangeHandlerFunc + update MultiClusterAppRevisionChangeHandlerFunc + remove MultiClusterAppRevisionChangeHandlerFunc +} + +func (n *multiClusterAppRevisionLifecycleDelegate) HasCreate() bool { + return n.create != nil +} + +func (n *multiClusterAppRevisionLifecycleDelegate) Create(obj *MultiClusterAppRevision) (runtime.Object, error) { + if n.create == nil { + return obj, nil + } + return n.create(obj) +} + +func (n *multiClusterAppRevisionLifecycleDelegate) HasFinalize() bool { + return n.remove != nil +} + +func (n *multiClusterAppRevisionLifecycleDelegate) Remove(obj *MultiClusterAppRevision) (runtime.Object, error) { + if n.remove == nil { + return obj, nil + } + return n.remove(obj) +} + +func (n *multiClusterAppRevisionLifecycleDelegate) Updated(obj *MultiClusterAppRevision) (runtime.Object, error) { + if n.update == nil { + return obj, nil + } + return n.update(obj) +} diff --git a/apis/management.cattle.io/v3/zz_generated_multi_cluster_app_revision_lifecycle_adapter.go b/apis/management.cattle.io/v3/zz_generated_multi_cluster_app_revision_lifecycle_adapter.go new file mode 100644 index 00000000..edbafd56 --- /dev/null +++ b/apis/management.cattle.io/v3/zz_generated_multi_cluster_app_revision_lifecycle_adapter.go @@ -0,0 +1,62 @@ +package v3 + +import ( + "github.com/rancher/norman/lifecycle" + "k8s.io/apimachinery/pkg/runtime" +) + +type MultiClusterAppRevisionLifecycle interface { + Create(obj *MultiClusterAppRevision) (runtime.Object, error) + Remove(obj *MultiClusterAppRevision) (runtime.Object, error) + Updated(obj *MultiClusterAppRevision) (runtime.Object, error) +} + +type multiClusterAppRevisionLifecycleAdapter struct { + lifecycle MultiClusterAppRevisionLifecycle +} + +func (w *multiClusterAppRevisionLifecycleAdapter) HasCreate() bool { + o, ok := w.lifecycle.(lifecycle.ObjectLifecycleCondition) + return !ok || o.HasCreate() +} + +func (w *multiClusterAppRevisionLifecycleAdapter) HasFinalize() bool { + o, ok := w.lifecycle.(lifecycle.ObjectLifecycleCondition) + return !ok || o.HasFinalize() +} + +func (w *multiClusterAppRevisionLifecycleAdapter) Create(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Create(obj.(*MultiClusterAppRevision)) + if o == nil { + return nil, err + } + return o, err +} + +func (w *multiClusterAppRevisionLifecycleAdapter) Finalize(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Remove(obj.(*MultiClusterAppRevision)) + if o == nil { + return nil, err + } + return o, err +} + +func (w *multiClusterAppRevisionLifecycleAdapter) Updated(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Updated(obj.(*MultiClusterAppRevision)) + if o == nil { + return nil, err + } + return o, err +} + +func NewMultiClusterAppRevisionLifecycleAdapter(name string, clusterScoped bool, client MultiClusterAppRevisionInterface, l MultiClusterAppRevisionLifecycle) MultiClusterAppRevisionHandlerFunc { + adapter := &multiClusterAppRevisionLifecycleAdapter{lifecycle: l} + syncFn := lifecycle.NewObjectLifecycleAdapter(name, clusterScoped, adapter, client.ObjectClient()) + return func(key string, obj *MultiClusterAppRevision) (runtime.Object, error) { + newObj, err := syncFn(key, obj) + if o, ok := newObj.(runtime.Object); ok { + return o, err + } + return nil, err + } +} diff --git a/apis/management.cattle.io/v3/zz_generated_scheme.go b/apis/management.cattle.io/v3/zz_generated_scheme.go index 4fa6bac4..5b03cc0f 100644 --- a/apis/management.cattle.io/v3/zz_generated_scheme.go +++ b/apis/management.cattle.io/v3/zz_generated_scheme.go @@ -120,6 +120,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { &ClusterCatalogList{}, &MultiClusterApp{}, &MultiClusterAppList{}, + &MultiClusterAppRevision{}, + &MultiClusterAppRevisionList{}, &GlobalDNS{}, &GlobalDNSList{}, &GlobalDNSProvider{}, diff --git a/client/management/v3/zz_generated_app_condition.go b/client/management/v3/zz_generated_app_condition.go new file mode 100644 index 00000000..9d633aee --- /dev/null +++ b/client/management/v3/zz_generated_app_condition.go @@ -0,0 +1,20 @@ +package client + +const ( + AppConditionType = "appCondition" + AppConditionFieldLastTransitionTime = "lastTransitionTime" + AppConditionFieldLastUpdateTime = "lastUpdateTime" + AppConditionFieldMessage = "message" + AppConditionFieldReason = "reason" + AppConditionFieldStatus = "status" + AppConditionFieldType = "type" +) + +type AppCondition struct { + LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"` + LastUpdateTime string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"` + Message string `json:"message,omitempty" yaml:"message,omitempty"` + Reason string `json:"reason,omitempty" yaml:"reason,omitempty"` + Status string `json:"status,omitempty" yaml:"status,omitempty"` + Type string `json:"type,omitempty" yaml:"type,omitempty"` +} diff --git a/client/management/v3/zz_generated_client.go b/client/management/v3/zz_generated_client.go index 8fd67914..445a0a58 100644 --- a/client/management/v3/zz_generated_client.go +++ b/client/management/v3/zz_generated_client.go @@ -50,6 +50,7 @@ type Client struct { ProjectCatalog ProjectCatalogOperations ClusterCatalog ClusterCatalogOperations MultiClusterApp MultiClusterAppOperations + MultiClusterAppRevision MultiClusterAppRevisionOperations GlobalDNS GlobalDNSOperations GlobalDNSProvider GlobalDNSProviderOperations KontainerDriver KontainerDriverOperations @@ -112,6 +113,7 @@ func NewClient(opts *clientbase.ClientOpts) (*Client, error) { client.ProjectCatalog = newProjectCatalogClient(client) client.ClusterCatalog = newClusterCatalogClient(client) client.MultiClusterApp = newMultiClusterAppClient(client) + client.MultiClusterAppRevision = newMultiClusterAppRevisionClient(client) client.GlobalDNS = newGlobalDNSClient(client) client.GlobalDNSProvider = newGlobalDNSProviderClient(client) client.KontainerDriver = newKontainerDriverClient(client) diff --git a/client/management/v3/zz_generated_multi_cluster_app.go b/client/management/v3/zz_generated_multi_cluster_app.go index 7ea85988..24b6ffe2 100644 --- a/client/management/v3/zz_generated_multi_cluster_app.go +++ b/client/management/v3/zz_generated_multi_cluster_app.go @@ -15,6 +15,7 @@ const ( MultiClusterAppFieldName = "name" MultiClusterAppFieldOwnerReferences = "ownerReferences" MultiClusterAppFieldRemoved = "removed" + MultiClusterAppFieldRevisionHistoryLimit = "revisionHistoryLimit" MultiClusterAppFieldState = "state" MultiClusterAppFieldStatus = "status" MultiClusterAppFieldTargets = "targets" @@ -22,6 +23,7 @@ const ( MultiClusterAppFieldTransitioning = "transitioning" MultiClusterAppFieldTransitioningMessage = "transitioningMessage" MultiClusterAppFieldUUID = "uuid" + MultiClusterAppFieldUpgradeStrategy = "upgradeStrategy" ) type MultiClusterApp struct { @@ -35,6 +37,7 @@ type MultiClusterApp struct { Name string `json:"name,omitempty" yaml:"name,omitempty"` OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"` Removed string `json:"removed,omitempty" yaml:"removed,omitempty"` + RevisionHistoryLimit int64 `json:"revisionHistoryLimit,omitempty" yaml:"revisionHistoryLimit,omitempty"` State string `json:"state,omitempty" yaml:"state,omitempty"` Status *MultiClusterAppStatus `json:"status,omitempty" yaml:"status,omitempty"` Targets []Target `json:"targets,omitempty" yaml:"targets,omitempty"` @@ -42,6 +45,7 @@ type MultiClusterApp struct { Transitioning string `json:"transitioning,omitempty" yaml:"transitioning,omitempty"` TransitioningMessage string `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"` UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"` + UpgradeStrategy *UpgradeStrategy `json:"upgradeStrategy,omitempty" yaml:"upgradeStrategy,omitempty"` } type MultiClusterAppCollection struct { @@ -61,6 +65,8 @@ type MultiClusterAppOperations interface { Replace(existing *MultiClusterApp) (*MultiClusterApp, error) ByID(id string) (*MultiClusterApp, error) Delete(container *MultiClusterApp) error + + ActionRollback(resource *MultiClusterApp, input *MultiClusterAppRollbackInput) error } func newMultiClusterAppClient(apiClient *Client) *MultiClusterAppClient { @@ -113,3 +119,8 @@ func (c *MultiClusterAppClient) ByID(id string) (*MultiClusterApp, error) { func (c *MultiClusterAppClient) Delete(container *MultiClusterApp) error { return c.apiClient.Ops.DoResourceDelete(MultiClusterAppType, &container.Resource) } + +func (c *MultiClusterAppClient) ActionRollback(resource *MultiClusterApp, input *MultiClusterAppRollbackInput) error { + err := c.apiClient.Ops.DoAction(MultiClusterAppType, "rollback", &resource.Resource, input, nil) + return err +} diff --git a/client/management/v3/zz_generated_multi_cluster_app_revision.go b/client/management/v3/zz_generated_multi_cluster_app_revision.go new file mode 100644 index 00000000..428407de --- /dev/null +++ b/client/management/v3/zz_generated_multi_cluster_app_revision.go @@ -0,0 +1,103 @@ +package client + +import ( + "github.com/rancher/norman/types" +) + +const ( + MultiClusterAppRevisionType = "multiClusterAppRevision" + MultiClusterAppRevisionFieldAnnotations = "annotations" + MultiClusterAppRevisionFieldAnswers = "answers" + MultiClusterAppRevisionFieldCreated = "created" + MultiClusterAppRevisionFieldCreatorID = "creatorId" + MultiClusterAppRevisionFieldLabels = "labels" + MultiClusterAppRevisionFieldName = "name" + MultiClusterAppRevisionFieldOwnerReferences = "ownerReferences" + MultiClusterAppRevisionFieldRemoved = "removed" + MultiClusterAppRevisionFieldTemplateVersionID = "templateVersionId" + MultiClusterAppRevisionFieldUUID = "uuid" +) + +type MultiClusterAppRevision struct { + types.Resource + Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Answers []Answer `json:"answers,omitempty" yaml:"answers,omitempty"` + Created string `json:"created,omitempty" yaml:"created,omitempty"` + CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,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"` + TemplateVersionID string `json:"templateVersionId,omitempty" yaml:"templateVersionId,omitempty"` + UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"` +} + +type MultiClusterAppRevisionCollection struct { + types.Collection + Data []MultiClusterAppRevision `json:"data,omitempty"` + client *MultiClusterAppRevisionClient +} + +type MultiClusterAppRevisionClient struct { + apiClient *Client +} + +type MultiClusterAppRevisionOperations interface { + List(opts *types.ListOpts) (*MultiClusterAppRevisionCollection, error) + Create(opts *MultiClusterAppRevision) (*MultiClusterAppRevision, error) + Update(existing *MultiClusterAppRevision, updates interface{}) (*MultiClusterAppRevision, error) + Replace(existing *MultiClusterAppRevision) (*MultiClusterAppRevision, error) + ByID(id string) (*MultiClusterAppRevision, error) + Delete(container *MultiClusterAppRevision) error +} + +func newMultiClusterAppRevisionClient(apiClient *Client) *MultiClusterAppRevisionClient { + return &MultiClusterAppRevisionClient{ + apiClient: apiClient, + } +} + +func (c *MultiClusterAppRevisionClient) Create(container *MultiClusterAppRevision) (*MultiClusterAppRevision, error) { + resp := &MultiClusterAppRevision{} + err := c.apiClient.Ops.DoCreate(MultiClusterAppRevisionType, container, resp) + return resp, err +} + +func (c *MultiClusterAppRevisionClient) Update(existing *MultiClusterAppRevision, updates interface{}) (*MultiClusterAppRevision, error) { + resp := &MultiClusterAppRevision{} + err := c.apiClient.Ops.DoUpdate(MultiClusterAppRevisionType, &existing.Resource, updates, resp) + return resp, err +} + +func (c *MultiClusterAppRevisionClient) Replace(obj *MultiClusterAppRevision) (*MultiClusterAppRevision, error) { + resp := &MultiClusterAppRevision{} + err := c.apiClient.Ops.DoReplace(MultiClusterAppRevisionType, &obj.Resource, obj, resp) + return resp, err +} + +func (c *MultiClusterAppRevisionClient) List(opts *types.ListOpts) (*MultiClusterAppRevisionCollection, error) { + resp := &MultiClusterAppRevisionCollection{} + err := c.apiClient.Ops.DoList(MultiClusterAppRevisionType, opts, resp) + resp.client = c + return resp, err +} + +func (cc *MultiClusterAppRevisionCollection) Next() (*MultiClusterAppRevisionCollection, error) { + if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" { + resp := &MultiClusterAppRevisionCollection{} + err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp) + resp.client = cc.client + return resp, err + } + return nil, nil +} + +func (c *MultiClusterAppRevisionClient) ByID(id string) (*MultiClusterAppRevision, error) { + resp := &MultiClusterAppRevision{} + err := c.apiClient.Ops.DoByID(MultiClusterAppRevisionType, id, resp) + return resp, err +} + +func (c *MultiClusterAppRevisionClient) Delete(container *MultiClusterAppRevision) error { + return c.apiClient.Ops.DoResourceDelete(MultiClusterAppRevisionType, &container.Resource) +} diff --git a/client/management/v3/zz_generated_multi_cluster_app_rollback_input.go b/client/management/v3/zz_generated_multi_cluster_app_rollback_input.go new file mode 100644 index 00000000..90a033eb --- /dev/null +++ b/client/management/v3/zz_generated_multi_cluster_app_rollback_input.go @@ -0,0 +1,10 @@ +package client + +const ( + MultiClusterAppRollbackInputType = "multiClusterAppRollbackInput" + MultiClusterAppRollbackInputFieldRevisionID = "revisionId" +) + +type MultiClusterAppRollbackInput struct { + RevisionID string `json:"revisionId,omitempty" yaml:"revisionId,omitempty"` +} diff --git a/client/management/v3/zz_generated_multi_cluster_app_spec.go b/client/management/v3/zz_generated_multi_cluster_app_spec.go index 5fa0f386..b90cc794 100644 --- a/client/management/v3/zz_generated_multi_cluster_app_spec.go +++ b/client/management/v3/zz_generated_multi_cluster_app_spec.go @@ -1,16 +1,20 @@ package client const ( - MultiClusterAppSpecType = "multiClusterAppSpec" - MultiClusterAppSpecFieldAnswers = "answers" - MultiClusterAppSpecFieldMembers = "members" - MultiClusterAppSpecFieldTargets = "targets" - MultiClusterAppSpecFieldTemplateVersionID = "templateVersionId" + MultiClusterAppSpecType = "multiClusterAppSpec" + MultiClusterAppSpecFieldAnswers = "answers" + MultiClusterAppSpecFieldMembers = "members" + MultiClusterAppSpecFieldRevisionHistoryLimit = "revisionHistoryLimit" + MultiClusterAppSpecFieldTargets = "targets" + MultiClusterAppSpecFieldTemplateVersionID = "templateVersionId" + MultiClusterAppSpecFieldUpgradeStrategy = "upgradeStrategy" ) type MultiClusterAppSpec struct { - Answers []Answer `json:"answers,omitempty" yaml:"answers,omitempty"` - Members []Member `json:"members,omitempty" yaml:"members,omitempty"` - Targets []Target `json:"targets,omitempty" yaml:"targets,omitempty"` - TemplateVersionID string `json:"templateVersionId,omitempty" yaml:"templateVersionId,omitempty"` + Answers []Answer `json:"answers,omitempty" yaml:"answers,omitempty"` + Members []Member `json:"members,omitempty" yaml:"members,omitempty"` + RevisionHistoryLimit int64 `json:"revisionHistoryLimit,omitempty" yaml:"revisionHistoryLimit,omitempty"` + Targets []Target `json:"targets,omitempty" yaml:"targets,omitempty"` + TemplateVersionID string `json:"templateVersionId,omitempty" yaml:"templateVersionId,omitempty"` + UpgradeStrategy *UpgradeStrategy `json:"upgradeStrategy,omitempty" yaml:"upgradeStrategy,omitempty"` } diff --git a/client/management/v3/zz_generated_multi_cluster_app_status.go b/client/management/v3/zz_generated_multi_cluster_app_status.go index 0f864a0c..77f3f730 100644 --- a/client/management/v3/zz_generated_multi_cluster_app_status.go +++ b/client/management/v3/zz_generated_multi_cluster_app_status.go @@ -1,10 +1,12 @@ package client const ( - MultiClusterAppStatusType = "multiClusterAppStatus" - MultiClusterAppStatusFieldHealthstate = "healthState" + MultiClusterAppStatusType = "multiClusterAppStatus" + MultiClusterAppStatusFieldConditions = "conditions" + MultiClusterAppStatusFieldRevisionID = "revisionId" ) type MultiClusterAppStatus struct { - Healthstate string `json:"healthState,omitempty" yaml:"healthState,omitempty"` + Conditions []AppCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"` + RevisionID string `json:"revisionId,omitempty" yaml:"revisionId,omitempty"` } diff --git a/client/management/v3/zz_generated_rolling_update.go b/client/management/v3/zz_generated_rolling_update.go new file mode 100644 index 00000000..180f638b --- /dev/null +++ b/client/management/v3/zz_generated_rolling_update.go @@ -0,0 +1,12 @@ +package client + +const ( + RollingUpdateType = "rollingUpdate" + RollingUpdateFieldBatchSize = "batchSize" + RollingUpdateFieldInterval = "interval" +) + +type RollingUpdate struct { + BatchSize int64 `json:"batchSize,omitempty" yaml:"batchSize,omitempty"` + Interval int64 `json:"interval,omitempty" yaml:"interval,omitempty"` +} diff --git a/client/management/v3/zz_generated_upgrade_strategy.go b/client/management/v3/zz_generated_upgrade_strategy.go new file mode 100644 index 00000000..1bd375c9 --- /dev/null +++ b/client/management/v3/zz_generated_upgrade_strategy.go @@ -0,0 +1,10 @@ +package client + +const ( + UpgradeStrategyType = "upgradeStrategy" + UpgradeStrategyFieldRollingUpdate = "rollingUpdate" +) + +type UpgradeStrategy struct { + RollingUpdate *RollingUpdate `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty"` +} diff --git a/compose/zz_generated_compose.go b/compose/zz_generated_compose.go index 681addce..a353af77 100644 --- a/compose/zz_generated_compose.go +++ b/compose/zz_generated_compose.go @@ -49,6 +49,7 @@ type Config struct { ProjectCatalogs map[string]managementClient.ProjectCatalog `json:"projectCatalogs,omitempty" yaml:"projectCatalogs,omitempty"` ClusterCatalogs map[string]managementClient.ClusterCatalog `json:"clusterCatalogs,omitempty" yaml:"clusterCatalogs,omitempty"` MultiClusterApps map[string]managementClient.MultiClusterApp `json:"multiClusterApps,omitempty" yaml:"multiClusterApps,omitempty"` + MultiClusterAppRevisions map[string]managementClient.MultiClusterAppRevision `json:"multiClusterAppRevisions,omitempty" yaml:"multiClusterAppRevisions,omitempty"` GlobalDNSs map[string]managementClient.GlobalDNS `json:"globalDnses,omitempty" yaml:"globalDnses,omitempty"` GlobalDNSProviders map[string]managementClient.GlobalDNSProvider `json:"globalDnsProviders,omitempty" yaml:"globalDnsProviders,omitempty"` KontainerDrivers map[string]managementClient.KontainerDriver `json:"kontainerDrivers,omitempty" yaml:"kontainerDrivers,omitempty"`