feat(storage): prepare custom resource for storage API
This commit is contained in:
parent
d02e2d4653
commit
b55afea477
34 changed files with 1110 additions and 369 deletions
|
@ -22,6 +22,50 @@ import (
|
|||
corev1 "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
type JwtSpec struct {
|
||||
// SecretRef - object reference to the Secret where JWT values are stored
|
||||
SecretName string `json:"secretName,omitempty"`
|
||||
// SecretKey - key in secret where to read the JWT HMAC secret from
|
||||
// +kubebuilder:default=secret
|
||||
SecretKey string `json:"secretKey,omitempty"`
|
||||
// JwksKey - key in secret where to read the JWKS from
|
||||
// +kubebuilder:default=jwks.json
|
||||
JwksKey string `json:"jwksKey,omitempty"`
|
||||
// AnonKey - key in secret where to read the anon JWT from
|
||||
// +kubebuilder:default=anon_key
|
||||
AnonKey string `json:"anonKey,omitempty"`
|
||||
// ServiceKey - key in secret where to read the service JWT from
|
||||
// +kubebuilder:default=service_key
|
||||
ServiceKey string `json:"serviceKey,omitempty"`
|
||||
}
|
||||
|
||||
func (s JwtSpec) SecretKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.SecretName,
|
||||
},
|
||||
Key: s.SecretKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s JwtSpec) AnonKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.SecretName,
|
||||
},
|
||||
Key: s.AnonKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s JwtSpec) ServiceKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.SecretName,
|
||||
},
|
||||
Key: s.ServiceKey,
|
||||
}
|
||||
}
|
||||
|
||||
type ImageSpec struct {
|
||||
Image string `json:"image,omitempty"`
|
||||
PullPolicy corev1.PullPolicy `json:"pullPolicy,omitempty"`
|
||||
|
|
|
@ -41,11 +41,11 @@ func init() {
|
|||
var ErrNoSuchSecretValue = errors.New("no such secret value")
|
||||
|
||||
type DatabaseRolesSecrets struct {
|
||||
Admin *corev1.LocalObjectReference `json:"supabaseAdmin,omitempty"`
|
||||
Authenticator *corev1.LocalObjectReference `json:"authenticator,omitempty"`
|
||||
AuthAdmin *corev1.LocalObjectReference `json:"supabaseAuthAdmin,omitempty"`
|
||||
FunctionsAdmin *corev1.LocalObjectReference `json:"supabaseFunctionsAdmin,omitempty"`
|
||||
StorageAdmin *corev1.LocalObjectReference `json:"supabaseStorageAdmin,omitempty"`
|
||||
Admin string `json:"supabaseAdmin,omitempty"`
|
||||
Authenticator string `json:"authenticator,omitempty"`
|
||||
AuthAdmin string `json:"supabaseAuthAdmin,omitempty"`
|
||||
FunctionsAdmin string `json:"supabaseFunctionsAdmin,omitempty"`
|
||||
StorageAdmin string `json:"supabaseStorageAdmin,omitempty"`
|
||||
}
|
||||
|
||||
type DatabaseRoles struct {
|
||||
|
@ -91,23 +91,10 @@ func (d Database) DSNEnv(key string) corev1.EnvVar {
|
|||
}
|
||||
|
||||
type CoreJwtSpec struct {
|
||||
JwtSpec `json:",inline"`
|
||||
// Secret - JWT HMAC secret in plain text
|
||||
// This is WRITE-ONLY and will be copied to the SecretRef by the defaulter
|
||||
Secret *string `json:"secret,omitempty"`
|
||||
// SecretRef - object reference to the Secret where JWT values are stored
|
||||
SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"`
|
||||
// SecretKey - key in secret where to read the JWT HMAC secret from
|
||||
// +kubebuilder:default=secret
|
||||
SecretKey string `json:"secretKey,omitempty"`
|
||||
// JwksKey - key in secret where to read the JWKS from
|
||||
// +kubebuilder:default=jwks.json
|
||||
JwksKey string `json:"jwksKey,omitempty"`
|
||||
// AnonKey - key in secret where to read the anon JWT from
|
||||
// +kubebuilder:default=anon_key
|
||||
AnonKey string `json:"anonKey,omitempty"`
|
||||
// ServiceKey - key in secret where to read the service JWT from
|
||||
// +kubebuilder:default=service_key
|
||||
ServiceKey string `json:"serviceKey,omitempty"`
|
||||
// Expiry - expiration time in seconds for JWTs
|
||||
// +kubebuilder:default=3600
|
||||
Expiry int `json:"expiry,omitempty"`
|
||||
|
@ -115,7 +102,7 @@ type CoreJwtSpec struct {
|
|||
|
||||
func (s CoreJwtSpec) GetJWTSecret(ctx context.Context, client client.Client) ([]byte, error) {
|
||||
var secret corev1.Secret
|
||||
if err := client.Get(ctx, types.NamespacedName{Name: s.SecretRef.Name}, &secret); err != nil {
|
||||
if err := client.Get(ctx, types.NamespacedName{Name: s.SecretName}, &secret); err != nil {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
|
@ -129,15 +116,19 @@ func (s CoreJwtSpec) GetJWTSecret(ctx context.Context, client client.Client) ([]
|
|||
|
||||
func (s CoreJwtSpec) SecretKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.SecretRef,
|
||||
Key: s.SecretKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.SecretName,
|
||||
},
|
||||
Key: s.SecretKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s CoreJwtSpec) JwksKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.SecretRef,
|
||||
Key: s.JwksKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.SecretName,
|
||||
},
|
||||
Key: s.JwksKey,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -146,8 +137,10 @@ func (s CoreJwtSpec) SecretAsEnv(key string) corev1.EnvVar {
|
|||
Name: key,
|
||||
ValueFrom: &corev1.EnvVarSource{
|
||||
SecretKeyRef: &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.SecretRef,
|
||||
Key: s.SecretKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.SecretName,
|
||||
},
|
||||
Key: s.SecretKey,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -194,11 +187,21 @@ func (p *AuthProviderMeta) Vars(provider string) []corev1.EnvVar {
|
|||
}}
|
||||
}
|
||||
|
||||
type SmtpCredentialsReference struct {
|
||||
SecretName string `json:"secretName"`
|
||||
// UsernameKey
|
||||
// +kubebuilder:default="username"
|
||||
UsernameKey string `json:"usernameKey"`
|
||||
// PasswordKey
|
||||
// +kubebuilder:default="password"
|
||||
PasswordKey string `json:"passwordKey"`
|
||||
}
|
||||
|
||||
type EmailAuthSmtpSpec struct {
|
||||
Host string `json:"host"`
|
||||
Port uint16 `json:"port"`
|
||||
MaxFrequency *uint `json:"maxFrequency,omitempty"`
|
||||
CredentialsFrom *corev1.LocalObjectReference `json:"credentialsFrom"`
|
||||
Host string `json:"host"`
|
||||
Port uint16 `json:"port"`
|
||||
MaxFrequency *uint `json:"maxFrequency,omitempty"`
|
||||
CredentialsRef *SmtpCredentialsReference `json:"credentialsRef"`
|
||||
}
|
||||
|
||||
type EmailAuthProvider struct {
|
||||
|
@ -225,8 +228,10 @@ func (p *EmailAuthProvider) Vars(apiExternalURL string) []corev1.EnvVar {
|
|||
Name: "GOTRUE_SMTP_USER",
|
||||
ValueFrom: &corev1.EnvVarSource{
|
||||
SecretKeyRef: &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *p.SmtpSpec.CredentialsFrom,
|
||||
Key: corev1.BasicAuthUsernameKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: p.SmtpSpec.CredentialsRef.SecretName,
|
||||
},
|
||||
Key: p.SmtpSpec.CredentialsRef.UsernameKey,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -234,8 +239,10 @@ func (p *EmailAuthProvider) Vars(apiExternalURL string) []corev1.EnvVar {
|
|||
Name: "GOTRUE_SMTP_PASS",
|
||||
ValueFrom: &corev1.EnvVarSource{
|
||||
SecretKeyRef: &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *p.SmtpSpec.CredentialsFrom,
|
||||
Key: corev1.BasicAuthPasswordKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: p.SmtpSpec.CredentialsRef.SecretName,
|
||||
},
|
||||
Key: p.SmtpSpec.CredentialsRef.PasswordKey,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -21,43 +21,8 @@ import (
|
|||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
type DashboardJwtSpec struct {
|
||||
// SecretRef - object reference to the Secret where JWT values are stored
|
||||
SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"`
|
||||
// SecretKey - key in secret where to read the JWT HMAC secret from
|
||||
// +kubebuilder:default=secret
|
||||
SecretKey string `json:"secretKey,omitempty"`
|
||||
// AnonKey - key in secret where to read the anon JWT from
|
||||
// +kubebuilder:default=anon_key
|
||||
AnonKey string `json:"anonKey,omitempty"`
|
||||
// ServiceKey - key in secret where to read the service JWT from
|
||||
// +kubebuilder:default=service_key
|
||||
ServiceKey string `json:"serviceKey,omitempty"`
|
||||
}
|
||||
|
||||
func (s DashboardJwtSpec) SecretKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.SecretRef,
|
||||
Key: s.SecretKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s DashboardJwtSpec) AnonKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.SecretRef,
|
||||
Key: s.AnonKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s DashboardJwtSpec) ServiceKeySelector() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.SecretRef,
|
||||
Key: s.ServiceKey,
|
||||
}
|
||||
}
|
||||
|
||||
type StudioSpec struct {
|
||||
JWT *DashboardJwtSpec `json:"jwt,omitempty"`
|
||||
JWT *JwtSpec `json:"jwt,omitempty"`
|
||||
// WorkloadTemplate - customize the studio deployment
|
||||
WorkloadTemplate *WorkloadTemplate `json:"workloadTemplate,omitempty"`
|
||||
// GatewayServiceSelector - selector to find the service for the API gateway
|
||||
|
@ -75,6 +40,16 @@ type PGMetaSpec struct {
|
|||
WorkloadTemplate *WorkloadTemplate `json:"workloadTemplate,omitempty"`
|
||||
}
|
||||
|
||||
type DbCredentialsReference struct {
|
||||
SecretName string `json:"secretName"`
|
||||
// UsernameKey
|
||||
// +kubebuilder:default="username"
|
||||
UsernameKey string `json:"usernameKey,omitempty"`
|
||||
// PasswordKey
|
||||
// +kubebuilder:default="password"
|
||||
PasswordKey string `json:"passwordKey,omitempty"`
|
||||
}
|
||||
|
||||
type DashboardDbSpec struct {
|
||||
Host string `json:"host"`
|
||||
// Port - Database port, typically 5432
|
||||
|
@ -83,20 +58,24 @@ type DashboardDbSpec struct {
|
|||
DBName string `json:"dbName"`
|
||||
// DBCredentialsRef - reference to a Secret key where the DB credentials can be retrieved from
|
||||
// Credentials need to be stored in basic auth form
|
||||
DBCredentialsRef *corev1.LocalObjectReference `json:"dbCredentialsRef"`
|
||||
DBCredentialsRef *DbCredentialsReference `json:"dbCredentialsRef"`
|
||||
}
|
||||
|
||||
func (s DashboardDbSpec) UserRef() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.DBCredentialsRef,
|
||||
Key: corev1.BasicAuthUsernameKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.DBCredentialsRef.SecretName,
|
||||
},
|
||||
Key: s.DBCredentialsRef.UsernameKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s DashboardDbSpec) PasswordRef() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: *s.DBCredentialsRef,
|
||||
Key: corev1.BasicAuthPasswordKey,
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.DBCredentialsRef.SecretName,
|
||||
},
|
||||
Key: s.DBCredentialsRef.PasswordKey,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,26 +17,93 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
|
||||
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
|
||||
type StorageBackend string
|
||||
|
||||
const (
|
||||
StorageBackendFile StorageBackend = "file"
|
||||
StorageBackendS3 StorageBackend = "s3"
|
||||
)
|
||||
|
||||
type StorageApiDbSpec struct {
|
||||
Host string `json:"host"`
|
||||
// Port - Database port, typically 5432
|
||||
// +kubebuilder:default=5432
|
||||
Port int `json:"port,omitempty"`
|
||||
DBName string `json:"dbName"`
|
||||
// DBCredentialsRef - reference to a Secret key where the DB credentials can be retrieved from
|
||||
// Credentials need to be stored in basic auth form
|
||||
DBCredentialsRef *DbCredentialsReference `json:"dbCredentialsRef"`
|
||||
}
|
||||
|
||||
func (s StorageApiDbSpec) UserRef() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.DBCredentialsRef.SecretName,
|
||||
},
|
||||
Key: s.DBCredentialsRef.UsernameKey,
|
||||
}
|
||||
}
|
||||
|
||||
func (s StorageApiDbSpec) PasswordRef() *corev1.SecretKeySelector {
|
||||
return &corev1.SecretKeySelector{
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: s.DBCredentialsRef.SecretName,
|
||||
},
|
||||
Key: s.DBCredentialsRef.PasswordKey,
|
||||
}
|
||||
}
|
||||
|
||||
type S3CredentialsRef struct {
|
||||
SecretName string `json:"secretName"`
|
||||
// AccessKeyIdKey - key in Secret where access key id will be referenced from
|
||||
// +kubebuilder:default="accessKeyId"
|
||||
AccessKeyIdKey string `json:"accessKeyIdKey,omitempty"`
|
||||
// AccessSecretKeyKey - key in Secret where access secret key will be referenced from
|
||||
// +kubebuilder:default="secretAccessKey"
|
||||
AccessSecretKeyKey string `json:"accessSecretKeyKey,omitempty"`
|
||||
}
|
||||
|
||||
type S3ProtocolSpec struct {
|
||||
// Region - S3 region to use in the API
|
||||
// +kubebuilder:default="us-east-1"
|
||||
Region string `json:"region,omitempty"`
|
||||
|
||||
// AllowForwardedHeader
|
||||
// +kubebuilder:default=true
|
||||
AllowForwardedHeader bool `json:"allowForwardedHeader,omitempty"`
|
||||
|
||||
// CredentialsSecretRef - reference to the Secret where access key id and access secret key are stored
|
||||
CredentialsSecretRef *S3CredentialsRef `json:"credentialsSecretRef,omitempty"`
|
||||
}
|
||||
|
||||
// StorageSpec defines the desired state of Storage.
|
||||
type StorageSpec struct {
|
||||
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
|
||||
// Important: Run "make" to regenerate code after modifying this file
|
||||
|
||||
// Foo is an example field of Storage. Edit storage_types.go to remove/update
|
||||
Foo string `json:"foo,omitempty"`
|
||||
// BackendType - backend storage type to use
|
||||
// +kubebuilder:validation:Enum={s3,file}
|
||||
BackendType StorageBackend `json:"backendType"`
|
||||
// FileSizeLimit - maximum file upload size in bytes
|
||||
// +kubebuilder:default=52428800
|
||||
FileSizeLimit uint64 `json:"fileSizeLimit,omitempty"`
|
||||
// JwtAuth - Configure the JWT authentication parameters.
|
||||
// This includes where to retrieve anon and service key from as well as JWT secret and JWKS references
|
||||
// needed to validate JWTs send to the API
|
||||
JwtAuth JwtSpec `json:"jwtAuth"`
|
||||
// DBSpec - Configure access to the Postgres database
|
||||
// In most cases this will reference the supabase-storage-admin credentials secret provided by the Core resource
|
||||
DBSpec StorageApiDbSpec `json:"db"`
|
||||
// S3 - Configure S3 protocol
|
||||
S3 *S3ProtocolSpec `json:"s3,omitempty"`
|
||||
// EnableImageTransformation - whether to deploy the image proxy
|
||||
// the image proxy scale images to lower resolutions on demand to reduce traffic for instance for mobile devices
|
||||
EnableImageTransformation bool `json:"enableImageTransformation,omitempty"`
|
||||
}
|
||||
|
||||
// StorageStatus defines the observed state of Storage.
|
||||
type StorageStatus struct {
|
||||
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
|
||||
// Important: Run "make" to regenerate code after modifying this file
|
||||
}
|
||||
type StorageStatus struct{}
|
||||
|
||||
// +kubebuilder:object:root=true
|
||||
// +kubebuilder:subresource:status
|
||||
|
|
|
@ -21,7 +21,7 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
"k8s.io/api/core/v1"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
@ -345,16 +345,12 @@ func (in *Core) DeepCopyObject() runtime.Object {
|
|||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *CoreJwtSpec) DeepCopyInto(out *CoreJwtSpec) {
|
||||
*out = *in
|
||||
out.JwtSpec = in.JwtSpec
|
||||
if in.Secret != nil {
|
||||
in, out := &in.Secret, &out.Secret
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.SecretRef != nil {
|
||||
in, out := &in.SecretRef, &out.SecretRef
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoreJwtSpec.
|
||||
|
@ -474,7 +470,7 @@ func (in *DashboardDbSpec) DeepCopyInto(out *DashboardDbSpec) {
|
|||
*out = *in
|
||||
if in.DBCredentialsRef != nil {
|
||||
in, out := &in.DBCredentialsRef, &out.DBCredentialsRef
|
||||
*out = new(v1.LocalObjectReference)
|
||||
*out = new(DbCredentialsReference)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
@ -489,26 +485,6 @@ func (in *DashboardDbSpec) DeepCopy() *DashboardDbSpec {
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DashboardJwtSpec) DeepCopyInto(out *DashboardJwtSpec) {
|
||||
*out = *in
|
||||
if in.SecretRef != nil {
|
||||
in, out := &in.SecretRef, &out.SecretRef
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardJwtSpec.
|
||||
func (in *DashboardJwtSpec) DeepCopy() *DashboardJwtSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DashboardJwtSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DashboardList) DeepCopyInto(out *DashboardList) {
|
||||
*out = *in
|
||||
|
@ -599,7 +575,7 @@ func (in *Database) DeepCopyInto(out *Database) {
|
|||
*out = new(v1.SecretKeySelector)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
in.Roles.DeepCopyInto(&out.Roles)
|
||||
out.Roles = in.Roles
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Database.
|
||||
|
@ -615,7 +591,7 @@ func (in *Database) DeepCopy() *Database {
|
|||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DatabaseRoles) DeepCopyInto(out *DatabaseRoles) {
|
||||
*out = *in
|
||||
in.Secrets.DeepCopyInto(&out.Secrets)
|
||||
out.Secrets = in.Secrets
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseRoles.
|
||||
|
@ -631,31 +607,6 @@ func (in *DatabaseRoles) DeepCopy() *DatabaseRoles {
|
|||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DatabaseRolesSecrets) DeepCopyInto(out *DatabaseRolesSecrets) {
|
||||
*out = *in
|
||||
if in.Admin != nil {
|
||||
in, out := &in.Admin, &out.Admin
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
if in.Authenticator != nil {
|
||||
in, out := &in.Authenticator, &out.Authenticator
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
if in.AuthAdmin != nil {
|
||||
in, out := &in.AuthAdmin, &out.AuthAdmin
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
if in.FunctionsAdmin != nil {
|
||||
in, out := &in.FunctionsAdmin, &out.FunctionsAdmin
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
if in.StorageAdmin != nil {
|
||||
in, out := &in.StorageAdmin, &out.StorageAdmin
|
||||
*out = new(v1.LocalObjectReference)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DatabaseRolesSecrets.
|
||||
|
@ -706,6 +657,21 @@ func (in *DatabaseStatus) DeepCopy() *DatabaseStatus {
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *DbCredentialsReference) DeepCopyInto(out *DbCredentialsReference) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DbCredentialsReference.
|
||||
func (in *DbCredentialsReference) DeepCopy() *DbCredentialsReference {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(DbCredentialsReference)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *EmailAuthProvider) DeepCopyInto(out *EmailAuthProvider) {
|
||||
*out = *in
|
||||
|
@ -745,9 +711,9 @@ func (in *EmailAuthSmtpSpec) DeepCopyInto(out *EmailAuthSmtpSpec) {
|
|||
*out = new(uint)
|
||||
**out = **in
|
||||
}
|
||||
if in.CredentialsFrom != nil {
|
||||
in, out := &in.CredentialsFrom, &out.CredentialsFrom
|
||||
*out = new(v1.LocalObjectReference)
|
||||
if in.CredentialsRef != nil {
|
||||
in, out := &in.CredentialsRef, &out.CredentialsRef
|
||||
*out = new(SmtpCredentialsReference)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
@ -839,6 +805,21 @@ func (in *ImageSpec) DeepCopy() *ImageSpec {
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *JwtSpec) DeepCopyInto(out *JwtSpec) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JwtSpec.
|
||||
func (in *JwtSpec) DeepCopy() *JwtSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(JwtSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in MigrationStatus) DeepCopyInto(out *MigrationStatus) {
|
||||
{
|
||||
|
@ -946,12 +927,62 @@ func (in *PostgrestSpec) DeepCopy() *PostgrestSpec {
|
|||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *S3CredentialsRef) DeepCopyInto(out *S3CredentialsRef) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3CredentialsRef.
|
||||
func (in *S3CredentialsRef) DeepCopy() *S3CredentialsRef {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(S3CredentialsRef)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *S3ProtocolSpec) DeepCopyInto(out *S3ProtocolSpec) {
|
||||
*out = *in
|
||||
if in.CredentialsSecretRef != nil {
|
||||
in, out := &in.CredentialsSecretRef, &out.CredentialsSecretRef
|
||||
*out = new(S3CredentialsRef)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3ProtocolSpec.
|
||||
func (in *S3ProtocolSpec) DeepCopy() *S3ProtocolSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(S3ProtocolSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *SmtpCredentialsReference) DeepCopyInto(out *SmtpCredentialsReference) {
|
||||
*out = *in
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SmtpCredentialsReference.
|
||||
func (in *SmtpCredentialsReference) DeepCopy() *SmtpCredentialsReference {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(SmtpCredentialsReference)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *Storage) DeepCopyInto(out *Storage) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||
out.Spec = in.Spec
|
||||
in.Spec.DeepCopyInto(&out.Spec)
|
||||
out.Status = in.Status
|
||||
}
|
||||
|
||||
|
@ -973,6 +1004,26 @@ func (in *Storage) DeepCopyObject() runtime.Object {
|
|||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StorageApiDbSpec) DeepCopyInto(out *StorageApiDbSpec) {
|
||||
*out = *in
|
||||
if in.DBCredentialsRef != nil {
|
||||
in, out := &in.DBCredentialsRef, &out.DBCredentialsRef
|
||||
*out = new(DbCredentialsReference)
|
||||
**out = **in
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageApiDbSpec.
|
||||
func (in *StorageApiDbSpec) DeepCopy() *StorageApiDbSpec {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(StorageApiDbSpec)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StorageList) DeepCopyInto(out *StorageList) {
|
||||
*out = *in
|
||||
|
@ -1008,6 +1059,13 @@ func (in *StorageList) DeepCopyObject() runtime.Object {
|
|||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *StorageSpec) DeepCopyInto(out *StorageSpec) {
|
||||
*out = *in
|
||||
out.JwtAuth = in.JwtAuth
|
||||
in.DBSpec.DeepCopyInto(&out.DBSpec)
|
||||
if in.S3 != nil {
|
||||
in, out := &in.S3, &out.S3
|
||||
*out = new(S3ProtocolSpec)
|
||||
(*in).DeepCopyInto(*out)
|
||||
}
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageSpec.
|
||||
|
@ -1040,8 +1098,8 @@ func (in *StudioSpec) DeepCopyInto(out *StudioSpec) {
|
|||
*out = *in
|
||||
if in.JWT != nil {
|
||||
in, out := &in.JWT, &out.JWT
|
||||
*out = new(DashboardJwtSpec)
|
||||
(*in).DeepCopyInto(*out)
|
||||
*out = new(JwtSpec)
|
||||
**out = **in
|
||||
}
|
||||
if in.WorkloadTemplate != nil {
|
||||
in, out := &in.WorkloadTemplate, &out.WorkloadTemplate
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue