diff --git a/apis/management.cattle.io/v3/zz_generated_deepcopy.go b/apis/management.cattle.io/v3/zz_generated_deepcopy.go index 80cce23b..66621462 100644 --- a/apis/management.cattle.io/v3/zz_generated_deepcopy.go +++ b/apis/management.cattle.io/v3/zz_generated_deepcopy.go @@ -399,6 +399,27 @@ func (in *AzureCloudProvider) DeepCopy() *AzureCloudProvider { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BackupConfig) DeepCopyInto(out *BackupConfig) { + *out = *in + if in.S3BackupConfig != nil { + in, out := &in.S3BackupConfig, &out.S3BackupConfig + *out = new(S3BackupConfig) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupConfig. +func (in *BackupConfig) DeepCopy() *BackupConfig { + if in == nil { + return nil + } + out := new(BackupConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BaseService) DeepCopyInto(out *BaseService) { *out = *in @@ -2028,6 +2049,11 @@ func (in *ETCDService) DeepCopyInto(out *ETCDService) { *out = new(bool) **out = **in } + if in.BackupConfig != nil { + in, out := &in.BackupConfig, &out.BackupConfig + *out = new(BackupConfig) + (*in).DeepCopyInto(*out) + } return } @@ -2057,6 +2083,105 @@ func (in *ElasticsearchConfig) DeepCopy() *ElasticsearchConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EtcdBackup) DeepCopyInto(out *EtcdBackup) { + *out = *in + out.Namespaced = in.Namespaced + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.BackupConfig.DeepCopyInto(&out.BackupConfig) + in.Status.DeepCopyInto(&out.Status) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdBackup. +func (in *EtcdBackup) DeepCopy() *EtcdBackup { + if in == nil { + return nil + } + out := new(EtcdBackup) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *EtcdBackup) 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 *EtcdBackupCondition) DeepCopyInto(out *EtcdBackupCondition) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdBackupCondition. +func (in *EtcdBackupCondition) DeepCopy() *EtcdBackupCondition { + if in == nil { + return nil + } + out := new(EtcdBackupCondition) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EtcdBackupList) DeepCopyInto(out *EtcdBackupList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]EtcdBackup, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdBackupList. +func (in *EtcdBackupList) DeepCopy() *EtcdBackupList { + if in == nil { + return nil + } + out := new(EtcdBackupList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *EtcdBackupList) 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 *EtcdBackupStatus) DeepCopyInto(out *EtcdBackupStatus) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]EtcdBackupCondition, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EtcdBackupStatus. +func (in *EtcdBackupStatus) DeepCopy() *EtcdBackupStatus { + if in == nil { + return nil + } + out := new(EtcdBackupStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EventRule) DeepCopyInto(out *EventRule) { *out = *in @@ -6418,6 +6543,7 @@ func (in *RancherKubernetesEngineConfig) DeepCopyInto(out *RancherKubernetesEngi in.CloudProvider.DeepCopyInto(&out.CloudProvider) out.BastionHost = in.BastionHost in.Monitoring.DeepCopyInto(&out.Monitoring) + out.Restore = in.Restore if in.RotateCertificates != nil { in, out := &in.RotateCertificates, &out.RotateCertificates *out = new(RotateCertificates) @@ -6468,6 +6594,38 @@ func (in *ResourceQuotaLimit) DeepCopy() *ResourceQuotaLimit { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestoreConfig) DeepCopyInto(out *RestoreConfig) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestoreConfig. +func (in *RestoreConfig) DeepCopy() *RestoreConfig { + if in == nil { + return nil + } + out := new(RestoreConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RestoreFromEtcdBackupInput) DeepCopyInto(out *RestoreFromEtcdBackupInput) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestoreFromEtcdBackupInput. +func (in *RestoreFromEtcdBackupInput) DeepCopy() *RestoreFromEtcdBackupInput { + if in == nil { + return nil + } + out := new(RestoreFromEtcdBackupInput) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *RoleTemplate) DeepCopyInto(out *RoleTemplate) { *out = *in @@ -6613,6 +6771,22 @@ func (in *RouteOpenstackOpts) DeepCopy() *RouteOpenstackOpts { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *S3BackupConfig) DeepCopyInto(out *S3BackupConfig) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3BackupConfig. +func (in *S3BackupConfig) DeepCopy() *S3BackupConfig { + if in == nil { + return nil + } + out := new(S3BackupConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SMTPConfig) DeepCopyInto(out *SMTPConfig) { *out = *in diff --git a/apis/management.cattle.io/v3/zz_generated_etcd_backup_controller.go b/apis/management.cattle.io/v3/zz_generated_etcd_backup_controller.go new file mode 100644 index 00000000..f4c1dcea --- /dev/null +++ b/apis/management.cattle.io/v3/zz_generated_etcd_backup_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 ( + EtcdBackupGroupVersionKind = schema.GroupVersionKind{ + Version: Version, + Group: GroupName, + Kind: "EtcdBackup", + } + EtcdBackupResource = metav1.APIResource{ + Name: "etcdbackups", + SingularName: "etcdbackup", + Namespaced: true, + + Kind: EtcdBackupGroupVersionKind.Kind, + } +) + +func NewEtcdBackup(namespace, name string, obj EtcdBackup) *EtcdBackup { + obj.APIVersion, obj.Kind = EtcdBackupGroupVersionKind.ToAPIVersionAndKind() + obj.Name = name + obj.Namespace = namespace + return &obj +} + +type EtcdBackupList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []EtcdBackup +} + +type EtcdBackupHandlerFunc func(key string, obj *EtcdBackup) (runtime.Object, error) + +type EtcdBackupChangeHandlerFunc func(obj *EtcdBackup) (runtime.Object, error) + +type EtcdBackupLister interface { + List(namespace string, selector labels.Selector) (ret []*EtcdBackup, err error) + Get(namespace, name string) (*EtcdBackup, error) +} + +type EtcdBackupController interface { + Generic() controller.GenericController + Informer() cache.SharedIndexInformer + Lister() EtcdBackupLister + AddHandler(ctx context.Context, name string, handler EtcdBackupHandlerFunc) + AddClusterScopedHandler(ctx context.Context, name, clusterName string, handler EtcdBackupHandlerFunc) + Enqueue(namespace, name string) + Sync(ctx context.Context) error + Start(ctx context.Context, threadiness int) error +} + +type EtcdBackupInterface interface { + ObjectClient() *objectclient.ObjectClient + Create(*EtcdBackup) (*EtcdBackup, error) + GetNamespaced(namespace, name string, opts metav1.GetOptions) (*EtcdBackup, error) + Get(name string, opts metav1.GetOptions) (*EtcdBackup, error) + Update(*EtcdBackup) (*EtcdBackup, error) + Delete(name string, options *metav1.DeleteOptions) error + DeleteNamespaced(namespace, name string, options *metav1.DeleteOptions) error + List(opts metav1.ListOptions) (*EtcdBackupList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error + Controller() EtcdBackupController + AddHandler(ctx context.Context, name string, sync EtcdBackupHandlerFunc) + AddLifecycle(ctx context.Context, name string, lifecycle EtcdBackupLifecycle) + AddClusterScopedHandler(ctx context.Context, name, clusterName string, sync EtcdBackupHandlerFunc) + AddClusterScopedLifecycle(ctx context.Context, name, clusterName string, lifecycle EtcdBackupLifecycle) +} + +type etcdBackupLister struct { + controller *etcdBackupController +} + +func (l *etcdBackupLister) List(namespace string, selector labels.Selector) (ret []*EtcdBackup, err error) { + err = cache.ListAllByNamespace(l.controller.Informer().GetIndexer(), namespace, selector, func(obj interface{}) { + ret = append(ret, obj.(*EtcdBackup)) + }) + return +} + +func (l *etcdBackupLister) Get(namespace, name string) (*EtcdBackup, 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: EtcdBackupGroupVersionKind.Group, + Resource: "etcdBackup", + }, key) + } + return obj.(*EtcdBackup), nil +} + +type etcdBackupController struct { + controller.GenericController +} + +func (c *etcdBackupController) Generic() controller.GenericController { + return c.GenericController +} + +func (c *etcdBackupController) Lister() EtcdBackupLister { + return &etcdBackupLister{ + controller: c, + } +} + +func (c *etcdBackupController) AddHandler(ctx context.Context, name string, handler EtcdBackupHandlerFunc) { + c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) { + if obj == nil { + return handler(key, nil) + } else if v, ok := obj.(*EtcdBackup); ok { + return handler(key, v) + } else { + return nil, nil + } + }) +} + +func (c *etcdBackupController) AddClusterScopedHandler(ctx context.Context, name, cluster string, handler EtcdBackupHandlerFunc) { + c.GenericController.AddHandler(ctx, name, func(key string, obj interface{}) (interface{}, error) { + if obj == nil { + return handler(key, nil) + } else if v, ok := obj.(*EtcdBackup); ok && controller.ObjectInCluster(cluster, obj) { + return handler(key, v) + } else { + return nil, nil + } + }) +} + +type etcdBackupFactory struct { +} + +func (c etcdBackupFactory) Object() runtime.Object { + return &EtcdBackup{} +} + +func (c etcdBackupFactory) List() runtime.Object { + return &EtcdBackupList{} +} + +func (s *etcdBackupClient) Controller() EtcdBackupController { + s.client.Lock() + defer s.client.Unlock() + + c, ok := s.client.etcdBackupControllers[s.ns] + if ok { + return c + } + + genericController := controller.NewGenericController(EtcdBackupGroupVersionKind.Kind+"Controller", + s.objectClient) + + c = &etcdBackupController{ + GenericController: genericController, + } + + s.client.etcdBackupControllers[s.ns] = c + s.client.starters = append(s.client.starters, c) + + return c +} + +type etcdBackupClient struct { + client *Client + ns string + objectClient *objectclient.ObjectClient + controller EtcdBackupController +} + +func (s *etcdBackupClient) ObjectClient() *objectclient.ObjectClient { + return s.objectClient +} + +func (s *etcdBackupClient) Create(o *EtcdBackup) (*EtcdBackup, error) { + obj, err := s.objectClient.Create(o) + return obj.(*EtcdBackup), err +} + +func (s *etcdBackupClient) Get(name string, opts metav1.GetOptions) (*EtcdBackup, error) { + obj, err := s.objectClient.Get(name, opts) + return obj.(*EtcdBackup), err +} + +func (s *etcdBackupClient) GetNamespaced(namespace, name string, opts metav1.GetOptions) (*EtcdBackup, error) { + obj, err := s.objectClient.GetNamespaced(namespace, name, opts) + return obj.(*EtcdBackup), err +} + +func (s *etcdBackupClient) Update(o *EtcdBackup) (*EtcdBackup, error) { + obj, err := s.objectClient.Update(o.Name, o) + return obj.(*EtcdBackup), err +} + +func (s *etcdBackupClient) Delete(name string, options *metav1.DeleteOptions) error { + return s.objectClient.Delete(name, options) +} + +func (s *etcdBackupClient) DeleteNamespaced(namespace, name string, options *metav1.DeleteOptions) error { + return s.objectClient.DeleteNamespaced(namespace, name, options) +} + +func (s *etcdBackupClient) List(opts metav1.ListOptions) (*EtcdBackupList, error) { + obj, err := s.objectClient.List(opts) + return obj.(*EtcdBackupList), err +} + +func (s *etcdBackupClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { + return s.objectClient.Watch(opts) +} + +// Patch applies the patch and returns the patched deployment. +func (s *etcdBackupClient) Patch(o *EtcdBackup, patchType types.PatchType, data []byte, subresources ...string) (*EtcdBackup, error) { + obj, err := s.objectClient.Patch(o.Name, o, patchType, data, subresources...) + return obj.(*EtcdBackup), err +} + +func (s *etcdBackupClient) DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error { + return s.objectClient.DeleteCollection(deleteOpts, listOpts) +} + +func (s *etcdBackupClient) AddHandler(ctx context.Context, name string, sync EtcdBackupHandlerFunc) { + s.Controller().AddHandler(ctx, name, sync) +} + +func (s *etcdBackupClient) AddLifecycle(ctx context.Context, name string, lifecycle EtcdBackupLifecycle) { + sync := NewEtcdBackupLifecycleAdapter(name, false, s, lifecycle) + s.Controller().AddHandler(ctx, name, sync) +} + +func (s *etcdBackupClient) AddClusterScopedHandler(ctx context.Context, name, clusterName string, sync EtcdBackupHandlerFunc) { + s.Controller().AddClusterScopedHandler(ctx, name, clusterName, sync) +} + +func (s *etcdBackupClient) AddClusterScopedLifecycle(ctx context.Context, name, clusterName string, lifecycle EtcdBackupLifecycle) { + sync := NewEtcdBackupLifecycleAdapter(name+"_"+clusterName, true, s, lifecycle) + s.Controller().AddClusterScopedHandler(ctx, name, clusterName, sync) +} + +type EtcdBackupIndexer func(obj *EtcdBackup) ([]string, error) + +type EtcdBackupClientCache interface { + Get(namespace, name string) (*EtcdBackup, error) + List(namespace string, selector labels.Selector) ([]*EtcdBackup, error) + + Index(name string, indexer EtcdBackupIndexer) + GetIndexed(name, key string) ([]*EtcdBackup, error) +} + +type EtcdBackupClient interface { + Create(*EtcdBackup) (*EtcdBackup, error) + Get(namespace, name string, opts metav1.GetOptions) (*EtcdBackup, error) + Update(*EtcdBackup) (*EtcdBackup, error) + Delete(namespace, name string, options *metav1.DeleteOptions) error + List(namespace string, opts metav1.ListOptions) (*EtcdBackupList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + + Cache() EtcdBackupClientCache + + OnCreate(ctx context.Context, name string, sync EtcdBackupChangeHandlerFunc) + OnChange(ctx context.Context, name string, sync EtcdBackupChangeHandlerFunc) + OnRemove(ctx context.Context, name string, sync EtcdBackupChangeHandlerFunc) + Enqueue(namespace, name string) + + Generic() controller.GenericController + ObjectClient() *objectclient.ObjectClient + Interface() EtcdBackupInterface +} + +type etcdBackupClientCache struct { + client *etcdBackupClient2 +} + +type etcdBackupClient2 struct { + iface EtcdBackupInterface + controller EtcdBackupController +} + +func (n *etcdBackupClient2) Interface() EtcdBackupInterface { + return n.iface +} + +func (n *etcdBackupClient2) Generic() controller.GenericController { + return n.iface.Controller().Generic() +} + +func (n *etcdBackupClient2) ObjectClient() *objectclient.ObjectClient { + return n.Interface().ObjectClient() +} + +func (n *etcdBackupClient2) Enqueue(namespace, name string) { + n.iface.Controller().Enqueue(namespace, name) +} + +func (n *etcdBackupClient2) Create(obj *EtcdBackup) (*EtcdBackup, error) { + return n.iface.Create(obj) +} + +func (n *etcdBackupClient2) Get(namespace, name string, opts metav1.GetOptions) (*EtcdBackup, error) { + return n.iface.GetNamespaced(namespace, name, opts) +} + +func (n *etcdBackupClient2) Update(obj *EtcdBackup) (*EtcdBackup, error) { + return n.iface.Update(obj) +} + +func (n *etcdBackupClient2) Delete(namespace, name string, options *metav1.DeleteOptions) error { + return n.iface.DeleteNamespaced(namespace, name, options) +} + +func (n *etcdBackupClient2) List(namespace string, opts metav1.ListOptions) (*EtcdBackupList, error) { + return n.iface.List(opts) +} + +func (n *etcdBackupClient2) Watch(opts metav1.ListOptions) (watch.Interface, error) { + return n.iface.Watch(opts) +} + +func (n *etcdBackupClientCache) Get(namespace, name string) (*EtcdBackup, error) { + return n.client.controller.Lister().Get(namespace, name) +} + +func (n *etcdBackupClientCache) List(namespace string, selector labels.Selector) ([]*EtcdBackup, error) { + return n.client.controller.Lister().List(namespace, selector) +} + +func (n *etcdBackupClient2) Cache() EtcdBackupClientCache { + n.loadController() + return &etcdBackupClientCache{ + client: n, + } +} + +func (n *etcdBackupClient2) OnCreate(ctx context.Context, name string, sync EtcdBackupChangeHandlerFunc) { + n.loadController() + n.iface.AddLifecycle(ctx, name+"-create", &etcdBackupLifecycleDelegate{create: sync}) +} + +func (n *etcdBackupClient2) OnChange(ctx context.Context, name string, sync EtcdBackupChangeHandlerFunc) { + n.loadController() + n.iface.AddLifecycle(ctx, name+"-change", &etcdBackupLifecycleDelegate{update: sync}) +} + +func (n *etcdBackupClient2) OnRemove(ctx context.Context, name string, sync EtcdBackupChangeHandlerFunc) { + n.loadController() + n.iface.AddLifecycle(ctx, name, &etcdBackupLifecycleDelegate{remove: sync}) +} + +func (n *etcdBackupClientCache) Index(name string, indexer EtcdBackupIndexer) { + err := n.client.controller.Informer().GetIndexer().AddIndexers(map[string]cache.IndexFunc{ + name: func(obj interface{}) ([]string, error) { + if v, ok := obj.(*EtcdBackup); ok { + return indexer(v) + } + return nil, nil + }, + }) + + if err != nil { + panic(err) + } +} + +func (n *etcdBackupClientCache) GetIndexed(name, key string) ([]*EtcdBackup, error) { + var result []*EtcdBackup + objs, err := n.client.controller.Informer().GetIndexer().ByIndex(name, key) + if err != nil { + return nil, err + } + for _, obj := range objs { + if v, ok := obj.(*EtcdBackup); ok { + result = append(result, v) + } + } + + return result, nil +} + +func (n *etcdBackupClient2) loadController() { + if n.controller == nil { + n.controller = n.iface.Controller() + } +} + +type etcdBackupLifecycleDelegate struct { + create EtcdBackupChangeHandlerFunc + update EtcdBackupChangeHandlerFunc + remove EtcdBackupChangeHandlerFunc +} + +func (n *etcdBackupLifecycleDelegate) HasCreate() bool { + return n.create != nil +} + +func (n *etcdBackupLifecycleDelegate) Create(obj *EtcdBackup) (runtime.Object, error) { + if n.create == nil { + return obj, nil + } + return n.create(obj) +} + +func (n *etcdBackupLifecycleDelegate) HasFinalize() bool { + return n.remove != nil +} + +func (n *etcdBackupLifecycleDelegate) Remove(obj *EtcdBackup) (runtime.Object, error) { + if n.remove == nil { + return obj, nil + } + return n.remove(obj) +} + +func (n *etcdBackupLifecycleDelegate) Updated(obj *EtcdBackup) (runtime.Object, error) { + if n.update == nil { + return obj, nil + } + return n.update(obj) +} diff --git a/apis/management.cattle.io/v3/zz_generated_etcd_backup_lifecycle_adapter.go b/apis/management.cattle.io/v3/zz_generated_etcd_backup_lifecycle_adapter.go new file mode 100644 index 00000000..02e1dc4b --- /dev/null +++ b/apis/management.cattle.io/v3/zz_generated_etcd_backup_lifecycle_adapter.go @@ -0,0 +1,62 @@ +package v3 + +import ( + "github.com/rancher/norman/lifecycle" + "k8s.io/apimachinery/pkg/runtime" +) + +type EtcdBackupLifecycle interface { + Create(obj *EtcdBackup) (runtime.Object, error) + Remove(obj *EtcdBackup) (runtime.Object, error) + Updated(obj *EtcdBackup) (runtime.Object, error) +} + +type etcdBackupLifecycleAdapter struct { + lifecycle EtcdBackupLifecycle +} + +func (w *etcdBackupLifecycleAdapter) HasCreate() bool { + o, ok := w.lifecycle.(lifecycle.ObjectLifecycleCondition) + return !ok || o.HasCreate() +} + +func (w *etcdBackupLifecycleAdapter) HasFinalize() bool { + o, ok := w.lifecycle.(lifecycle.ObjectLifecycleCondition) + return !ok || o.HasFinalize() +} + +func (w *etcdBackupLifecycleAdapter) Create(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Create(obj.(*EtcdBackup)) + if o == nil { + return nil, err + } + return o, err +} + +func (w *etcdBackupLifecycleAdapter) Finalize(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Remove(obj.(*EtcdBackup)) + if o == nil { + return nil, err + } + return o, err +} + +func (w *etcdBackupLifecycleAdapter) Updated(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Updated(obj.(*EtcdBackup)) + if o == nil { + return nil, err + } + return o, err +} + +func NewEtcdBackupLifecycleAdapter(name string, clusterScoped bool, client EtcdBackupInterface, l EtcdBackupLifecycle) EtcdBackupHandlerFunc { + adapter := &etcdBackupLifecycleAdapter{lifecycle: l} + syncFn := lifecycle.NewObjectLifecycleAdapter(name, clusterScoped, adapter, client.ObjectClient()) + return func(key string, obj *EtcdBackup) (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_k8s_client.go b/apis/management.cattle.io/v3/zz_generated_k8s_client.go index 0d22dee4..09a27c51 100644 --- a/apis/management.cattle.io/v3/zz_generated_k8s_client.go +++ b/apis/management.cattle.io/v3/zz_generated_k8s_client.go @@ -67,6 +67,7 @@ type Interface interface { GlobalDNSsGetter GlobalDNSProvidersGetter KontainerDriversGetter + EtcdBackupsGetter MonitorMetricsGetter ClusterMonitorGraphsGetter ProjectMonitorGraphsGetter @@ -122,6 +123,7 @@ type Clients struct { GlobalDNS GlobalDNSClient GlobalDNSProvider GlobalDNSProviderClient KontainerDriver KontainerDriverClient + EtcdBackup EtcdBackupClient MonitorMetric MonitorMetricClient ClusterMonitorGraph ClusterMonitorGraphClient ProjectMonitorGraph ProjectMonitorGraphClient @@ -179,6 +181,7 @@ type Client struct { globalDnsControllers map[string]GlobalDNSController globalDnsProviderControllers map[string]GlobalDNSProviderController kontainerDriverControllers map[string]KontainerDriverController + etcdBackupControllers map[string]EtcdBackupController monitorMetricControllers map[string]MonitorMetricController clusterMonitorGraphControllers map[string]ClusterMonitorGraphController projectMonitorGraphControllers map[string]ProjectMonitorGraphController @@ -358,6 +361,9 @@ func NewClientsFromInterface(iface Interface) *Clients { KontainerDriver: &kontainerDriverClient2{ iface: iface.KontainerDrivers(""), }, + EtcdBackup: &etcdBackupClient2{ + iface: iface.EtcdBackups(""), + }, MonitorMetric: &monitorMetricClient2{ iface: iface.MonitorMetrics(""), }, @@ -430,6 +436,7 @@ func NewForConfig(config rest.Config) (Interface, error) { globalDnsControllers: map[string]GlobalDNSController{}, globalDnsProviderControllers: map[string]GlobalDNSProviderController{}, kontainerDriverControllers: map[string]KontainerDriverController{}, + etcdBackupControllers: map[string]EtcdBackupController{}, monitorMetricControllers: map[string]MonitorMetricController{}, clusterMonitorGraphControllers: map[string]ClusterMonitorGraphController{}, projectMonitorGraphControllers: map[string]ProjectMonitorGraphController{}, @@ -1059,6 +1066,19 @@ func (c *Client) KontainerDrivers(namespace string) KontainerDriverInterface { } } +type EtcdBackupsGetter interface { + EtcdBackups(namespace string) EtcdBackupInterface +} + +func (c *Client) EtcdBackups(namespace string) EtcdBackupInterface { + objectClient := objectclient.NewObjectClient(namespace, c.restClient, &EtcdBackupResource, EtcdBackupGroupVersionKind, etcdBackupFactory{}) + return &etcdBackupClient{ + ns: namespace, + client: c, + objectClient: objectClient, + } +} + type MonitorMetricsGetter interface { MonitorMetrics(namespace string) MonitorMetricInterface } diff --git a/apis/management.cattle.io/v3/zz_generated_scheme.go b/apis/management.cattle.io/v3/zz_generated_scheme.go index db6b1375..4fa6bac4 100644 --- a/apis/management.cattle.io/v3/zz_generated_scheme.go +++ b/apis/management.cattle.io/v3/zz_generated_scheme.go @@ -126,6 +126,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { &GlobalDNSProviderList{}, &KontainerDriver{}, &KontainerDriverList{}, + &EtcdBackup{}, + &EtcdBackupList{}, &MonitorMetric{}, &MonitorMetricList{}, &ClusterMonitorGraph{}, diff --git a/client/management/v3/zz_generated_backup_config.go b/client/management/v3/zz_generated_backup_config.go new file mode 100644 index 00000000..86b13d2f --- /dev/null +++ b/client/management/v3/zz_generated_backup_config.go @@ -0,0 +1,14 @@ +package client + +const ( + BackupConfigType = "backupConfig" + BackupConfigFieldIntervalHours = "intervalHours" + BackupConfigFieldRetention = "retention" + BackupConfigFieldS3BackupConfig = "s3BackupConfig" +) + +type BackupConfig struct { + IntervalHours int64 `json:"intervalHours,omitempty" yaml:"intervalHours,omitempty"` + Retention int64 `json:"retention,omitempty" yaml:"retention,omitempty"` + S3BackupConfig *S3BackupConfig `json:"s3BackupConfig,omitempty" yaml:"s3BackupConfig,omitempty"` +} diff --git a/client/management/v3/zz_generated_client.go b/client/management/v3/zz_generated_client.go index 57e7f571..8fd67914 100644 --- a/client/management/v3/zz_generated_client.go +++ b/client/management/v3/zz_generated_client.go @@ -53,6 +53,7 @@ type Client struct { GlobalDNS GlobalDNSOperations GlobalDNSProvider GlobalDNSProviderOperations KontainerDriver KontainerDriverOperations + EtcdBackup EtcdBackupOperations MonitorMetric MonitorMetricOperations ClusterMonitorGraph ClusterMonitorGraphOperations ProjectMonitorGraph ProjectMonitorGraphOperations @@ -114,6 +115,7 @@ func NewClient(opts *clientbase.ClientOpts) (*Client, error) { client.GlobalDNS = newGlobalDNSClient(client) client.GlobalDNSProvider = newGlobalDNSProviderClient(client) client.KontainerDriver = newKontainerDriverClient(client) + client.EtcdBackup = newEtcdBackupClient(client) client.MonitorMetric = newMonitorMetricClient(client) client.ClusterMonitorGraph = newClusterMonitorGraphClient(client) client.ProjectMonitorGraph = newProjectMonitorGraphClient(client) diff --git a/client/management/v3/zz_generated_cluster.go b/client/management/v3/zz_generated_cluster.go index 04cc956f..8408f569 100644 --- a/client/management/v3/zz_generated_cluster.go +++ b/client/management/v3/zz_generated_cluster.go @@ -120,6 +120,8 @@ type ClusterOperations interface { ByID(id string) (*Cluster, error) Delete(container *Cluster) error + ActionBackupEtcd(resource *Cluster) error + ActionDisableMonitoring(resource *Cluster) error ActionEnableMonitoring(resource *Cluster, input *MonitoringInput) error @@ -130,6 +132,8 @@ type ClusterOperations interface { ActionImportYaml(resource *Cluster, input *ImportClusterYamlInput) (*ImportYamlOutput, error) + ActionRestoreFromEtcdBackup(resource *Cluster, input *RestoreFromEtcdBackupInput) error + ActionRotateCertificates(resource *Cluster, input *RotateCertificateInput) error } @@ -184,6 +188,11 @@ func (c *ClusterClient) Delete(container *Cluster) error { return c.apiClient.Ops.DoResourceDelete(ClusterType, &container.Resource) } +func (c *ClusterClient) ActionBackupEtcd(resource *Cluster) error { + err := c.apiClient.Ops.DoAction(ClusterType, "backupEtcd", &resource.Resource, nil, nil) + return err +} + func (c *ClusterClient) ActionDisableMonitoring(resource *Cluster) error { err := c.apiClient.Ops.DoAction(ClusterType, "disableMonitoring", &resource.Resource, nil, nil) return err @@ -212,6 +221,11 @@ func (c *ClusterClient) ActionImportYaml(resource *Cluster, input *ImportCluster return resp, err } +func (c *ClusterClient) ActionRestoreFromEtcdBackup(resource *Cluster, input *RestoreFromEtcdBackupInput) error { + err := c.apiClient.Ops.DoAction(ClusterType, "restoreFromEtcdBackup", &resource.Resource, input, nil) + return err +} + func (c *ClusterClient) ActionRotateCertificates(resource *Cluster, input *RotateCertificateInput) error { err := c.apiClient.Ops.DoAction(ClusterType, "rotateCertificates", &resource.Resource, input, nil) return err diff --git a/client/management/v3/zz_generated_etcd_backup.go b/client/management/v3/zz_generated_etcd_backup.go new file mode 100644 index 00000000..71140978 --- /dev/null +++ b/client/management/v3/zz_generated_etcd_backup.go @@ -0,0 +1,109 @@ +package client + +import ( + "github.com/rancher/norman/types" +) + +const ( + EtcdBackupType = "etcdBackup" + EtcdBackupFieldAnnotations = "annotations" + EtcdBackupFieldBackupConfig = "backupConfig" + EtcdBackupFieldClusterID = "clusterId" + EtcdBackupFieldCreated = "created" + EtcdBackupFieldCreatorID = "creatorId" + EtcdBackupFieldFilename = "filename" + EtcdBackupFieldLabels = "labels" + EtcdBackupFieldName = "name" + EtcdBackupFieldNamespaceId = "namespaceId" + EtcdBackupFieldOwnerReferences = "ownerReferences" + EtcdBackupFieldRemoved = "removed" + EtcdBackupFieldStatus = "status" + EtcdBackupFieldUUID = "uuid" +) + +type EtcdBackup struct { + types.Resource + Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + BackupConfig *BackupConfig `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"` + ClusterID string `json:"clusterId,omitempty" yaml:"clusterId,omitempty"` + Created string `json:"created,omitempty" yaml:"created,omitempty"` + CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"` + Filename string `json:"filename,omitempty" yaml:"filename,omitempty"` + Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` + Name string `json:"name,omitempty" yaml:"name,omitempty"` + NamespaceId string `json:"namespaceId,omitempty" yaml:"namespaceId,omitempty"` + OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"` + Removed string `json:"removed,omitempty" yaml:"removed,omitempty"` + Status *EtcdBackupStatus `json:"status,omitempty" yaml:"status,omitempty"` + UUID string `json:"uuid,omitempty" yaml:"uuid,omitempty"` +} + +type EtcdBackupCollection struct { + types.Collection + Data []EtcdBackup `json:"data,omitempty"` + client *EtcdBackupClient +} + +type EtcdBackupClient struct { + apiClient *Client +} + +type EtcdBackupOperations interface { + List(opts *types.ListOpts) (*EtcdBackupCollection, error) + Create(opts *EtcdBackup) (*EtcdBackup, error) + Update(existing *EtcdBackup, updates interface{}) (*EtcdBackup, error) + Replace(existing *EtcdBackup) (*EtcdBackup, error) + ByID(id string) (*EtcdBackup, error) + Delete(container *EtcdBackup) error +} + +func newEtcdBackupClient(apiClient *Client) *EtcdBackupClient { + return &EtcdBackupClient{ + apiClient: apiClient, + } +} + +func (c *EtcdBackupClient) Create(container *EtcdBackup) (*EtcdBackup, error) { + resp := &EtcdBackup{} + err := c.apiClient.Ops.DoCreate(EtcdBackupType, container, resp) + return resp, err +} + +func (c *EtcdBackupClient) Update(existing *EtcdBackup, updates interface{}) (*EtcdBackup, error) { + resp := &EtcdBackup{} + err := c.apiClient.Ops.DoUpdate(EtcdBackupType, &existing.Resource, updates, resp) + return resp, err +} + +func (c *EtcdBackupClient) Replace(obj *EtcdBackup) (*EtcdBackup, error) { + resp := &EtcdBackup{} + err := c.apiClient.Ops.DoReplace(EtcdBackupType, &obj.Resource, obj, resp) + return resp, err +} + +func (c *EtcdBackupClient) List(opts *types.ListOpts) (*EtcdBackupCollection, error) { + resp := &EtcdBackupCollection{} + err := c.apiClient.Ops.DoList(EtcdBackupType, opts, resp) + resp.client = c + return resp, err +} + +func (cc *EtcdBackupCollection) Next() (*EtcdBackupCollection, error) { + if cc != nil && cc.Pagination != nil && cc.Pagination.Next != "" { + resp := &EtcdBackupCollection{} + err := cc.client.apiClient.Ops.DoNext(cc.Pagination.Next, resp) + resp.client = cc.client + return resp, err + } + return nil, nil +} + +func (c *EtcdBackupClient) ByID(id string) (*EtcdBackup, error) { + resp := &EtcdBackup{} + err := c.apiClient.Ops.DoByID(EtcdBackupType, id, resp) + return resp, err +} + +func (c *EtcdBackupClient) Delete(container *EtcdBackup) error { + return c.apiClient.Ops.DoResourceDelete(EtcdBackupType, &container.Resource) +} diff --git a/client/management/v3/zz_generated_etcd_backup_condition.go b/client/management/v3/zz_generated_etcd_backup_condition.go new file mode 100644 index 00000000..bfae7530 --- /dev/null +++ b/client/management/v3/zz_generated_etcd_backup_condition.go @@ -0,0 +1,20 @@ +package client + +const ( + EtcdBackupConditionType = "etcdBackupCondition" + EtcdBackupConditionFieldLastTransitionTime = "lastTransitionTime" + EtcdBackupConditionFieldLastUpdateTime = "lastUpdateTime" + EtcdBackupConditionFieldMessage = "message" + EtcdBackupConditionFieldReason = "reason" + EtcdBackupConditionFieldStatus = "status" + EtcdBackupConditionFieldType = "type" +) + +type EtcdBackupCondition 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_etcd_backup_status.go b/client/management/v3/zz_generated_etcd_backup_status.go new file mode 100644 index 00000000..85f03a62 --- /dev/null +++ b/client/management/v3/zz_generated_etcd_backup_status.go @@ -0,0 +1,10 @@ +package client + +const ( + EtcdBackupStatusType = "etcdBackupStatus" + EtcdBackupStatusFieldConditions = "conditions" +) + +type EtcdBackupStatus struct { + Conditions []EtcdBackupCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"` +} diff --git a/client/management/v3/zz_generated_etcd_service.go b/client/management/v3/zz_generated_etcd_service.go index 75154d72..7fc19e77 100644 --- a/client/management/v3/zz_generated_etcd_service.go +++ b/client/management/v3/zz_generated_etcd_service.go @@ -2,6 +2,7 @@ package client const ( ETCDServiceType = "etcdService" + ETCDServiceFieldBackupConfig = "backupConfig" ETCDServiceFieldCACert = "caCert" ETCDServiceFieldCert = "cert" ETCDServiceFieldCreation = "creation" @@ -17,6 +18,7 @@ const ( ) type ETCDService struct { + BackupConfig *BackupConfig `json:"backupConfig,omitempty" yaml:"backupConfig,omitempty"` CACert string `json:"caCert,omitempty" yaml:"caCert,omitempty"` Cert string `json:"cert,omitempty" yaml:"cert,omitempty"` Creation string `json:"creation,omitempty" yaml:"creation,omitempty"` diff --git a/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go b/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go index 6ff89a85..9d6c227c 100644 --- a/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go +++ b/client/management/v3/zz_generated_rancher_kubernetes_engine_config.go @@ -17,6 +17,7 @@ const ( RancherKubernetesEngineConfigFieldNodes = "nodes" RancherKubernetesEngineConfigFieldPrefixPath = "prefixPath" RancherKubernetesEngineConfigFieldPrivateRegistries = "privateRegistries" + RancherKubernetesEngineConfigFieldRestore = "restore" RancherKubernetesEngineConfigFieldRotateCertificates = "rotateCertificates" RancherKubernetesEngineConfigFieldSSHAgentAuth = "sshAgentAuth" RancherKubernetesEngineConfigFieldSSHKeyPath = "sshKeyPath" @@ -40,6 +41,7 @@ type RancherKubernetesEngineConfig struct { Nodes []RKEConfigNode `json:"nodes,omitempty" yaml:"nodes,omitempty"` PrefixPath string `json:"prefixPath,omitempty" yaml:"prefixPath,omitempty"` PrivateRegistries []PrivateRegistry `json:"privateRegistries,omitempty" yaml:"privateRegistries,omitempty"` + Restore *RestoreConfig `json:"restore,omitempty" yaml:"restore,omitempty"` RotateCertificates *RotateCertificates `json:"rotateCertificates,omitempty" yaml:"rotateCertificates,omitempty"` SSHAgentAuth bool `json:"sshAgentAuth,omitempty" yaml:"sshAgentAuth,omitempty"` SSHKeyPath string `json:"sshKeyPath,omitempty" yaml:"sshKeyPath,omitempty"` diff --git a/client/management/v3/zz_generated_restore_config.go b/client/management/v3/zz_generated_restore_config.go new file mode 100644 index 00000000..8370f96f --- /dev/null +++ b/client/management/v3/zz_generated_restore_config.go @@ -0,0 +1,12 @@ +package client + +const ( + RestoreConfigType = "restoreConfig" + RestoreConfigFieldRestore = "restore" + RestoreConfigFieldSnapshotName = "snapshotName" +) + +type RestoreConfig struct { + Restore bool `json:"restore,omitempty" yaml:"restore,omitempty"` + SnapshotName string `json:"snapshotName,omitempty" yaml:"snapshotName,omitempty"` +} diff --git a/client/management/v3/zz_generated_restore_from_etcd_backup_input.go b/client/management/v3/zz_generated_restore_from_etcd_backup_input.go new file mode 100644 index 00000000..1e3ff064 --- /dev/null +++ b/client/management/v3/zz_generated_restore_from_etcd_backup_input.go @@ -0,0 +1,10 @@ +package client + +const ( + RestoreFromEtcdBackupInputType = "restoreFromEtcdBackupInput" + RestoreFromEtcdBackupInputFieldEtcdBackupID = "etcdBackupId" +) + +type RestoreFromEtcdBackupInput struct { + EtcdBackupID string `json:"etcdBackupId,omitempty" yaml:"etcdBackupId,omitempty"` +} diff --git a/client/management/v3/zz_generated_s3backup_config.go b/client/management/v3/zz_generated_s3backup_config.go new file mode 100644 index 00000000..a348c87f --- /dev/null +++ b/client/management/v3/zz_generated_s3backup_config.go @@ -0,0 +1,18 @@ +package client + +const ( + S3BackupConfigType = "s3BackupConfig" + S3BackupConfigFieldAccessKey = "accessKey" + S3BackupConfigFieldBucketName = "bucketName" + S3BackupConfigFieldEndpoint = "endpoint" + S3BackupConfigFieldRegion = "region" + S3BackupConfigFieldSecretKey = "secretKey" +) + +type S3BackupConfig struct { + AccessKey string `json:"accessKey,omitempty" yaml:"accessKey,omitempty"` + BucketName string `json:"bucketName,omitempty" yaml:"bucketName,omitempty"` + Endpoint string `json:"endpoint,omitempty" yaml:"endpoint,omitempty"` + Region string `json:"region,omitempty" yaml:"region,omitempty"` + SecretKey string `json:"secretKey,omitempty" yaml:"secretKey,omitempty"` +} diff --git a/compose/zz_generated_compose.go b/compose/zz_generated_compose.go index 71f758cb..681addce 100644 --- a/compose/zz_generated_compose.go +++ b/compose/zz_generated_compose.go @@ -52,6 +52,7 @@ type Config struct { 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"` + EtcdBackups map[string]managementClient.EtcdBackup `json:"etcdBackups,omitempty" yaml:"etcdBackups,omitempty"` MonitorMetrics map[string]managementClient.MonitorMetric `json:"monitorMetrics,omitempty" yaml:"monitorMetrics,omitempty"` ClusterMonitorGraphs map[string]managementClient.ClusterMonitorGraph `json:"clusterMonitorGraphs,omitempty" yaml:"clusterMonitorGraphs,omitempty"` ProjectMonitorGraphs map[string]managementClient.ProjectMonitorGraph `json:"projectMonitorGraphs,omitempty" yaml:"projectMonitorGraphs,omitempty"`