From b531d9ef63ac37704e8f6835afddd66c5d02f803 Mon Sep 17 00:00:00 2001 From: lgtm <1gtm@users.noreply.github.com> Date: Fri, 9 Feb 2024 01:06:10 -0800 Subject: [PATCH] Add support Disabling TLS Certificate Verification for Secure S3 Storage (#741) (#742) Signed-off-by: Anisur Rahman --- go.mod | 4 +- go.sum | 8 +- pkg/backup.go | 1 + pkg/restore.go | 1 + .../objectstore-api/api/v1/generated.pb.go | 124 +++++++++++------- .../objectstore-api/api/v1/generated.proto | 2 + .../api/v1/openapi_generated.go | 6 + .../objectstore-api/api/v1/types.go | 9 +- vendor/modules.txt | 4 +- .../apimachinery/apis/constants.go | 1 + .../v1alpha1/openapi_generated.go | 6 + .../apis/stash/v1alpha1/openapi_generated.go | 6 + .../apis/stash/v1beta1/openapi_generated.go | 6 + .../apis/ui/v1alpha1/openapi_generated.go | 6 + .../stash.appscode.com_backupblueprints.yaml | 2 + .../crds/stash.appscode.com_repositories.yaml | 2 + .../apimachinery/pkg/restic/commands.go | 23 ++++ .../apimachinery/pkg/restic/config.go | 1 + .../apimachinery/pkg/util/addon.go | 25 +++- 19 files changed, 177 insertions(+), 60 deletions(-) diff --git a/go.mod b/go.mod index 21d14228..cabe137c 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( kmodules.xyz/client-go v0.29.5 kmodules.xyz/custom-resources v0.29.0 kmodules.xyz/offshoot-api v0.29.0 - stash.appscode.dev/apimachinery v0.32.1-0.20240101013736-ef308633d8b2 + stash.appscode.dev/apimachinery v0.32.1-0.20240206075719-41610d0ce38f ) require ( @@ -83,7 +83,7 @@ require ( k8s.io/kube-openapi v0.0.0-20231129212854-f0671cc7e66a // indirect k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect kmodules.xyz/apiversion v0.2.0 // indirect - kmodules.xyz/objectstore-api v0.29.0 // indirect + kmodules.xyz/objectstore-api v0.29.1-0.20240205052451-a5cf0aa669f1 // indirect kmodules.xyz/prober v0.29.0 // indirect sigs.k8s.io/controller-runtime v0.16.3 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/go.sum b/go.sum index bba5742f..cecf7258 100644 --- a/go.sum +++ b/go.sum @@ -543,8 +543,8 @@ kmodules.xyz/client-go v0.29.5 h1:iRl4MoV+96TM1csInOCWjn5xSOXzuYlil6CO40vXLHU= kmodules.xyz/client-go v0.29.5/go.mod h1:pHuzpwzEcDUIGjVVvwz9N8lY+6A7HXwvs2d7NtK7Hho= kmodules.xyz/custom-resources v0.29.0 h1:RaDM2+wSVXiwIvLqmkTVYpwoH83AC8wruXe2p2rOZNY= kmodules.xyz/custom-resources v0.29.0/go.mod h1:MzZyXtxdg1PDxGk3RTTO1Xv3KiVqZnIonSwmxVbagOY= -kmodules.xyz/objectstore-api v0.29.0 h1:dK53fQXdoboyW/EyBBAMjykT8u7jstKrM1DS4RJvhEU= -kmodules.xyz/objectstore-api v0.29.0/go.mod h1:Kxmv6F7Kd/7EoKX3X2xIzhHT++zlj2qdXLcp/8avUYI= +kmodules.xyz/objectstore-api v0.29.1-0.20240205052451-a5cf0aa669f1 h1:k66vcGkx9SNka0tfmbeBiEgwj1E2+EKJHxnifOUsroA= +kmodules.xyz/objectstore-api v0.29.1-0.20240205052451-a5cf0aa669f1/go.mod h1:Kxmv6F7Kd/7EoKX3X2xIzhHT++zlj2qdXLcp/8avUYI= kmodules.xyz/offshoot-api v0.29.0 h1:GHLhxxT9jU1N8+FvOCCeJNyU5g0duYS46UGrs6AHNLY= kmodules.xyz/offshoot-api v0.29.0/go.mod h1:5NxhBblXoDHWStx9HCDJR2KFTwYjEZ7i1Id3jelIunw= kmodules.xyz/prober v0.29.0 h1:Ex7m4F9rH7uWNNJlLgP63ROOM+nUATJkC2L5OQ7nwMg= @@ -556,5 +556,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+s sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -stash.appscode.dev/apimachinery v0.32.1-0.20240101013736-ef308633d8b2 h1:dePrbjp7o57sKe33K1ppaWQK/Ely4QgxmCcab0sDOpY= -stash.appscode.dev/apimachinery v0.32.1-0.20240101013736-ef308633d8b2/go.mod h1:hTslVqyx20fF2i2s/m0rqXD+pZwnI2oG3k5zPzsDnXQ= +stash.appscode.dev/apimachinery v0.32.1-0.20240206075719-41610d0ce38f h1:0B35Biy3T5cNWlfMKr2LPgDaXv6C7IeDBYHOeqBaLko= +stash.appscode.dev/apimachinery v0.32.1-0.20240206075719-41610d0ce38f/go.mod h1:5ZunLyvEChKp4LpPJq8mTKQss3bsT93S/Tqu9BRvQTA= diff --git a/pkg/backup.go b/pkg/backup.go index f96fa2fe..3996a9de 100644 --- a/pkg/backup.go +++ b/pkg/backup.go @@ -126,6 +126,7 @@ func NewCmdBackup() *cobra.Command { cmd.Flags().StringVar(&opt.setupOptions.Provider, "provider", opt.setupOptions.Provider, "Backend provider (i.e. gcs, s3, azure etc)") cmd.Flags().StringVar(&opt.setupOptions.Bucket, "bucket", opt.setupOptions.Bucket, "Name of the cloud bucket/container (keep empty for local backend)") cmd.Flags().StringVar(&opt.setupOptions.Endpoint, "endpoint", opt.setupOptions.Endpoint, "Endpoint for s3/s3 compatible backend or REST backend URL") + cmd.Flags().BoolVar(&opt.setupOptions.InsecureTLS, "insecure-tls", opt.setupOptions.InsecureTLS, "InsecureTLS for TLS secure s3/s3 compatible backend") cmd.Flags().StringVar(&opt.setupOptions.Region, "region", opt.setupOptions.Region, "Region for s3/s3 compatible backend") cmd.Flags().StringVar(&opt.setupOptions.Path, "path", opt.setupOptions.Path, "Directory inside the bucket where backup will be stored") cmd.Flags().StringVar(&opt.setupOptions.ScratchDir, "scratch-dir", opt.setupOptions.ScratchDir, "Temporary directory") diff --git a/pkg/restore.go b/pkg/restore.go index 9bcfaa86..1623360e 100644 --- a/pkg/restore.go +++ b/pkg/restore.go @@ -114,6 +114,7 @@ func NewCmdRestore() *cobra.Command { cmd.Flags().StringVar(&opt.setupOptions.Provider, "provider", opt.setupOptions.Provider, "Backend provider (i.e. gcs, s3, azure etc)") cmd.Flags().StringVar(&opt.setupOptions.Bucket, "bucket", opt.setupOptions.Bucket, "Name of the cloud bucket/container (keep empty for local backend)") cmd.Flags().StringVar(&opt.setupOptions.Endpoint, "endpoint", opt.setupOptions.Endpoint, "Endpoint for s3/s3 compatible backend or REST backend URL") + cmd.Flags().BoolVar(&opt.setupOptions.InsecureTLS, "insecure-tls", opt.setupOptions.InsecureTLS, "InsecureTLS for TLS secure s3/s3 compatible backend") cmd.Flags().StringVar(&opt.setupOptions.Region, "region", opt.setupOptions.Region, "Region for s3/s3 compatible backend") cmd.Flags().StringVar(&opt.setupOptions.Path, "path", opt.setupOptions.Path, "Directory inside the bucket where backup will be stored") cmd.Flags().StringVar(&opt.storageSecret.Name, "storage-secret-name", opt.storageSecret.Name, "Name of the storage secret") diff --git a/vendor/kmodules.xyz/objectstore-api/api/v1/generated.pb.go b/vendor/kmodules.xyz/objectstore-api/api/v1/generated.pb.go index 1c2bac87..8fda3229 100644 --- a/vendor/kmodules.xyz/objectstore-api/api/v1/generated.pb.go +++ b/vendor/kmodules.xyz/objectstore-api/api/v1/generated.pb.go @@ -281,52 +281,54 @@ func init() { } var fileDescriptor_c2461da20a2c3fd4 = []byte{ - // 714 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x95, 0x3f, 0x6f, 0xd3, 0x4e, - 0x18, 0xc7, 0xe3, 0x38, 0x75, 0x92, 0x4b, 0x95, 0xdf, 0xaf, 0x27, 0x84, 0x4c, 0x25, 0x9c, 0xca, - 0x95, 0xaa, 0x22, 0x5a, 0x5b, 0x75, 0x16, 0x26, 0x24, 0x1c, 0xa1, 0x08, 0xa9, 0x85, 0x72, 0x16, - 0x0c, 0x5d, 0x90, 0xed, 0x5c, 0x5d, 0x93, 0xc4, 0x17, 0x9d, 0xcf, 0xa1, 0x74, 0xe2, 0x25, 0x30, - 0xc2, 0xce, 0xcc, 0x9b, 0x60, 0xe9, 0xd8, 0xb1, 0x53, 0x44, 0xcd, 0xc8, 0x9b, 0x40, 0x77, 0xbe, - 0xa4, 0x69, 0x41, 0x28, 0x1d, 0x40, 0x0c, 0x96, 0x72, 0xcf, 0xf3, 0x7d, 0x3e, 0x77, 0xcf, 0x9f, - 0xbb, 0x80, 0x76, 0x7f, 0x48, 0x7a, 0xd9, 0x00, 0xa7, 0xd6, 0xf1, 0xdb, 0x13, 0x9b, 0x04, 0xaf, - 0x71, 0xc8, 0x52, 0x46, 0x28, 0xde, 0xf6, 0x47, 0xb1, 0xcd, 0xbf, 0xf1, 0x8e, 0x1d, 0xe1, 0x04, - 0x53, 0x9f, 0xe1, 0x9e, 0x35, 0xa2, 0x84, 0x11, 0xb8, 0x3e, 0x1f, 0x64, 0xcd, 0x05, 0xbd, 0xf2, - 0x47, 0xb1, 0xc5, 0xbf, 0xf1, 0xce, 0xea, 0x76, 0x14, 0xb3, 0xa3, 0x2c, 0xb0, 0x42, 0x32, 0xb4, - 0x23, 0x12, 0x11, 0x5b, 0xc4, 0x06, 0xd9, 0xa1, 0x58, 0x89, 0x85, 0xf8, 0x55, 0x30, 0x57, 0xcd, - 0xfe, 0x83, 0xd4, 0x8a, 0x89, 0xd8, 0x32, 0x24, 0x14, 0xff, 0x62, 0x5f, 0xf3, 0x93, 0x02, 0xea, - 0x8f, 0x4e, 0x32, 0x8a, 0xbd, 0x11, 0x0e, 0xa1, 0x0d, 0xea, 0x21, 0x49, 0x98, 0x1f, 0x27, 0x98, - 0xea, 0xca, 0x9a, 0xb2, 0x59, 0x77, 0x57, 0x4e, 0x27, 0xad, 0x52, 0x3e, 0x69, 0xd5, 0x3b, 0x53, - 0x07, 0xba, 0xd4, 0xc0, 0x0d, 0xa0, 0x8d, 0x28, 0x3e, 0x8c, 0x8f, 0xf5, 0xb2, 0x50, 0x37, 0xa5, - 0x5a, 0xdb, 0x17, 0x56, 0x24, 0xbd, 0xf0, 0x21, 0x68, 0x0e, 0xfd, 0xe3, 0x0e, 0x49, 0x12, 0x1c, - 0xb2, 0x98, 0x24, 0xa9, 0xae, 0xae, 0x29, 0x9b, 0xaa, 0x7b, 0x5b, 0xea, 0x9b, 0x7b, 0x57, 0xbc, - 0xe8, 0x9a, 0xda, 0xfc, 0xa0, 0x00, 0xcd, 0x75, 0xc4, 0x19, 0x37, 0x80, 0x16, 0x64, 0x61, 0x1f, - 0x33, 0x79, 0xc0, 0xd9, 0x96, 0xae, 0xb0, 0x22, 0xe9, 0xfd, 0x6b, 0x47, 0xfb, 0x5e, 0x01, 0x55, - 0xd7, 0x0f, 0xfb, 0x38, 0xe9, 0xc1, 0x2e, 0x58, 0xe1, 0x4d, 0xf3, 0x23, 0xec, 0xe1, 0x90, 0x62, - 0xf6, 0xd4, 0x1f, 0x62, 0x79, 0xcc, 0x3b, 0x12, 0xb7, 0xe2, 0x5d, 0x17, 0xa0, 0x9f, 0x63, 0xe0, - 0x33, 0xb0, 0x34, 0x20, 0xa1, 0x3f, 0x10, 0x67, 0x6f, 0x38, 0x96, 0xb5, 0xc0, 0x78, 0x58, 0xbb, - 0x3c, 0x82, 0xd7, 0xc8, 0xad, 0xe7, 0x93, 0xd6, 0x92, 0x58, 0xa2, 0x82, 0x03, 0x3b, 0xa0, 0x9c, - 0xb6, 0x45, 0x66, 0x0d, 0xe7, 0xfe, 0x42, 0x34, 0xaf, 0x2d, 0x50, 0x5a, 0x3e, 0x69, 0x95, 0xbd, - 0x36, 0x2a, 0xa7, 0x6d, 0xd8, 0x05, 0x6a, 0x14, 0xa6, 0x7a, 0x45, 0x50, 0xb6, 0x16, 0xa2, 0x74, - 0x3b, 0x9e, 0xc0, 0x54, 0xf3, 0x49, 0x4b, 0xed, 0x76, 0x3c, 0xc4, 0x09, 0x3c, 0x3d, 0x9f, 0x0f, - 0x9d, 0xbe, 0x74, 0x83, 0xf4, 0x66, 0x63, 0x5a, 0xa4, 0x27, 0x96, 0xa8, 0xe0, 0x70, 0x60, 0xfa, - 0x26, 0x3e, 0x64, 0xba, 0x76, 0x03, 0xa0, 0xc7, 0x23, 0x2e, 0x81, 0x62, 0x89, 0x0a, 0x0e, 0xaf, - 0x57, 0xe0, 0xe8, 0xd5, 0x1b, 0xd4, 0xab, 0x18, 0xcf, 0xa2, 0x5e, 0xae, 0x83, 0xca, 0x81, 0x03, - 0x9f, 0x83, 0x0a, 0xc5, 0x29, 0xd3, 0x6b, 0x02, 0xd3, 0x5e, 0x08, 0x83, 0x70, 0xca, 0x3c, 0x4c, - 0xc7, 0x98, 0x0a, 0x5c, 0x2d, 0x9f, 0xb4, 0x2a, 0xdc, 0x86, 0x04, 0xca, 0xfc, 0xa8, 0x80, 0xaa, - 0xac, 0xe9, 0x3f, 0x77, 0x13, 0xbe, 0x28, 0xa0, 0x3e, 0x9b, 0x41, 0x78, 0x00, 0x96, 0xc7, 0x64, - 0x90, 0x0d, 0xb1, 0x47, 0x32, 0x1a, 0x16, 0xd7, 0xa0, 0xe1, 0xac, 0x59, 0xc5, 0xa3, 0x24, 0xd2, - 0xe5, 0x8f, 0x12, 0xcf, 0xf9, 0xe5, 0x9c, 0xce, 0xbd, 0x25, 0x77, 0x5b, 0x9e, 0xb7, 0xa2, 0x2b, - 0x2c, 0xfe, 0x4e, 0x0d, 0x49, 0x96, 0xb0, 0x7d, 0x9f, 0x1d, 0xc9, 0xa4, 0x66, 0xef, 0xd4, 0xde, - 0xd4, 0x81, 0x2e, 0x35, 0xf0, 0x1e, 0xa8, 0xa6, 0x59, 0x20, 0xe4, 0xaa, 0x90, 0xff, 0x27, 0xe5, - 0x55, 0xaf, 0x30, 0xa3, 0xa9, 0xdf, 0xb4, 0x41, 0xf3, 0x6a, 0x0f, 0xe0, 0x5d, 0xa0, 0x66, 0x74, - 0x20, 0x8b, 0xdc, 0x90, 0x81, 0xea, 0x0b, 0xb4, 0x8b, 0xb8, 0xdd, 0xfc, 0xac, 0x00, 0xad, 0xb8, - 0x2c, 0x70, 0x0b, 0xd4, 0x70, 0xd2, 0x1b, 0x91, 0x38, 0x99, 0xf6, 0xe4, 0x7f, 0x29, 0xaf, 0x3d, - 0x96, 0x76, 0x34, 0x53, 0xcc, 0xf5, 0xaf, 0xbc, 0x60, 0xff, 0xd4, 0xdf, 0xf6, 0x6f, 0x03, 0x68, - 0x14, 0x47, 0x31, 0x49, 0xc4, 0x0d, 0x9d, 0xd3, 0x21, 0x61, 0x45, 0xd2, 0x6b, 0xf6, 0x40, 0x7d, - 0x36, 0xfa, 0x7f, 0xec, 0xc9, 0x77, 0x9f, 0x9c, 0x5e, 0x18, 0xa5, 0xb3, 0x0b, 0xa3, 0x74, 0x7e, - 0x61, 0x94, 0xde, 0xe5, 0x86, 0x72, 0x9a, 0x1b, 0xca, 0x59, 0x6e, 0x28, 0xe7, 0xb9, 0xa1, 0x7c, - 0xcd, 0x0d, 0xe5, 0xfd, 0x37, 0xa3, 0x74, 0xb0, 0xbe, 0xc0, 0x9f, 0xe5, 0x8f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xf2, 0xe5, 0xf6, 0x9b, 0x52, 0x07, 0x00, 0x00, + // 739 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0x4f, 0x6f, 0xd3, 0x48, + 0x14, 0x8f, 0xe3, 0xd4, 0x49, 0x26, 0x55, 0x76, 0x3b, 0xbb, 0x5a, 0x79, 0x2b, 0xe1, 0x54, 0xa9, + 0x54, 0x15, 0xd1, 0x3a, 0xaa, 0x23, 0x24, 0x4e, 0x48, 0x38, 0x42, 0x51, 0xa5, 0x16, 0xca, 0x18, + 0x38, 0xf4, 0x82, 0x6c, 0x67, 0xea, 0x9a, 0x24, 0x9e, 0x68, 0x3c, 0x0e, 0xa5, 0x27, 0x3e, 0x02, + 0x47, 0xb8, 0xf3, 0x4d, 0xb8, 0xf4, 0xd8, 0x63, 0x4f, 0x11, 0x35, 0xe2, 0xc4, 0x97, 0x40, 0x33, + 0x9e, 0x24, 0x6e, 0x41, 0x28, 0x3d, 0x80, 0x38, 0x58, 0xf2, 0x7b, 0xef, 0xf7, 0x7e, 0xf3, 0xfe, + 0xce, 0x80, 0x76, 0x7f, 0x48, 0x7a, 0xc9, 0x00, 0xc7, 0xe6, 0xc9, 0xeb, 0xd3, 0x16, 0xf1, 0x5e, + 0x62, 0x9f, 0xc5, 0x8c, 0x50, 0xbc, 0xed, 0x8e, 0xc2, 0x16, 0xff, 0xc6, 0x3b, 0xad, 0x00, 0x47, + 0x98, 0xba, 0x0c, 0xf7, 0xcc, 0x11, 0x25, 0x8c, 0xc0, 0xf5, 0xbc, 0x93, 0x99, 0x73, 0x7a, 0xe1, + 0x8e, 0x42, 0x93, 0x7f, 0xe3, 0x9d, 0xd5, 0xed, 0x20, 0x64, 0xc7, 0x89, 0x67, 0xfa, 0x64, 0xd8, + 0x0a, 0x48, 0x40, 0x5a, 0xc2, 0xd7, 0x4b, 0x8e, 0x84, 0x24, 0x04, 0xf1, 0x97, 0x71, 0xae, 0x36, + 0xfb, 0xf7, 0x62, 0x33, 0x24, 0xe2, 0x48, 0x9f, 0x50, 0xfc, 0x83, 0x73, 0x9b, 0x1f, 0x14, 0x50, + 0x7d, 0x70, 0x9a, 0x50, 0xec, 0x8c, 0xb0, 0x0f, 0x5b, 0xa0, 0xea, 0x93, 0x88, 0xb9, 0x61, 0x84, + 0xa9, 0xae, 0xac, 0x29, 0x9b, 0x55, 0x7b, 0xe5, 0x6c, 0xd2, 0x28, 0xa4, 0x93, 0x46, 0xb5, 0x33, + 0x35, 0xa0, 0x39, 0x06, 0x6e, 0x00, 0x6d, 0x44, 0xf1, 0x51, 0x78, 0xa2, 0x17, 0x05, 0xba, 0x2e, + 0xd1, 0xda, 0x81, 0xd0, 0x22, 0x69, 0x85, 0xf7, 0x41, 0x7d, 0xe8, 0x9e, 0x74, 0x48, 0x14, 0x61, + 0x9f, 0x85, 0x24, 0x8a, 0x75, 0x75, 0x4d, 0xd9, 0x54, 0xed, 0xff, 0x24, 0xbe, 0xbe, 0x7f, 0xc5, + 0x8a, 0xae, 0xa1, 0x9b, 0xef, 0x14, 0xa0, 0xd9, 0x96, 0x88, 0x71, 0x03, 0x68, 0x5e, 0xe2, 0xf7, + 0x31, 0x93, 0x01, 0xce, 0x8e, 0xb4, 0x85, 0x16, 0x49, 0xeb, 0x6f, 0x0b, 0xed, 0x6b, 0x09, 0x94, + 0x6d, 0xd7, 0xef, 0xe3, 0xa8, 0x07, 0xbb, 0x60, 0x85, 0x37, 0xcd, 0x0d, 0xb0, 0x83, 0x7d, 0x8a, + 0xd9, 0x23, 0x77, 0x88, 0x65, 0x98, 0xff, 0x4b, 0xba, 0x15, 0xe7, 0x3a, 0x00, 0x7d, 0xef, 0x03, + 0x1f, 0x83, 0xa5, 0x01, 0xf1, 0xdd, 0x81, 0x88, 0xbd, 0x66, 0x99, 0xe6, 0x02, 0xe3, 0x61, 0xee, + 0x71, 0x0f, 0x5e, 0x23, 0xbb, 0x9a, 0x4e, 0x1a, 0x4b, 0x42, 0x44, 0x19, 0x0f, 0xec, 0x80, 0x62, + 0xdc, 0x16, 0x99, 0xd5, 0xac, 0x3b, 0x0b, 0xb1, 0x39, 0x6d, 0x41, 0xa5, 0xa5, 0x93, 0x46, 0xd1, + 0x69, 0xa3, 0x62, 0xdc, 0x86, 0x5d, 0xa0, 0x06, 0x7e, 0xac, 0x97, 0x04, 0xcb, 0xd6, 0x42, 0x2c, + 0xdd, 0x8e, 0x23, 0x68, 0xca, 0xe9, 0xa4, 0xa1, 0x76, 0x3b, 0x0e, 0xe2, 0x0c, 0x3c, 0x3d, 0x97, + 0x0f, 0x9d, 0xbe, 0x74, 0x83, 0xf4, 0x66, 0x63, 0x9a, 0xa5, 0x27, 0x44, 0x94, 0xf1, 0x70, 0xc2, + 0xf8, 0x55, 0x78, 0xc4, 0x74, 0xed, 0x06, 0x84, 0x0e, 0xf7, 0x98, 0x13, 0x0a, 0x11, 0x65, 0x3c, + 0xbc, 0x5e, 0x9e, 0xa5, 0x97, 0x6f, 0x50, 0xaf, 0x6c, 0x3c, 0xb3, 0x7a, 0xd9, 0x16, 0x2a, 0x7a, + 0x16, 0x7c, 0x02, 0x4a, 0x14, 0xc7, 0x4c, 0xaf, 0x08, 0x9a, 0xf6, 0x42, 0x34, 0x08, 0xc7, 0xcc, + 0xc1, 0x74, 0x8c, 0xa9, 0xa0, 0xab, 0xa4, 0x93, 0x46, 0x89, 0xeb, 0x90, 0xa0, 0x6a, 0xbe, 0x57, + 0x40, 0x59, 0xd6, 0xf4, 0x8f, 0xdb, 0x84, 0x8f, 0x0a, 0xa8, 0xce, 0x66, 0x10, 0x1e, 0x82, 0xe5, + 0x31, 0x19, 0x24, 0x43, 0xec, 0x90, 0x84, 0xfa, 0xd9, 0x1a, 0xd4, 0xac, 0x35, 0x33, 0xbb, 0x94, + 0x44, 0xba, 0xfc, 0x52, 0xe2, 0x39, 0x3f, 0xcf, 0xe1, 0xec, 0x7f, 0xe5, 0x69, 0xcb, 0x79, 0x2d, + 0xba, 0xc2, 0xc5, 0xef, 0xa9, 0x21, 0x49, 0x22, 0x76, 0xe0, 0xb2, 0x63, 0x99, 0xd4, 0xec, 0x9e, + 0xda, 0x9f, 0x1a, 0xd0, 0x1c, 0x03, 0x6f, 0x83, 0x72, 0x9c, 0x78, 0x02, 0xae, 0x0a, 0xf8, 0x5f, + 0x12, 0x5e, 0x76, 0x32, 0x35, 0x9a, 0xda, 0x9b, 0x2d, 0x50, 0xbf, 0xda, 0x03, 0x78, 0x0b, 0xa8, + 0x09, 0x1d, 0xc8, 0x22, 0xd7, 0xa4, 0xa3, 0xfa, 0x0c, 0xed, 0x21, 0xae, 0x6f, 0x7e, 0x51, 0x80, + 0x96, 0x2d, 0x0b, 0xdc, 0x02, 0x15, 0x1c, 0xf5, 0x46, 0x24, 0x8c, 0xa6, 0x3d, 0xf9, 0x5b, 0xc2, + 0x2b, 0x0f, 0xa5, 0x1e, 0xcd, 0x10, 0xb9, 0xfe, 0x15, 0x17, 0xec, 0x9f, 0xfa, 0xd3, 0xfe, 0x6d, + 0x00, 0x8d, 0xe2, 0x20, 0x24, 0x91, 0xd8, 0xd0, 0x1c, 0x0e, 0x09, 0x2d, 0x92, 0x56, 0x78, 0x17, + 0xd4, 0xc2, 0x28, 0xc6, 0x7e, 0x42, 0xf1, 0xd3, 0x3d, 0x47, 0xec, 0x60, 0xc5, 0xfe, 0x47, 0x82, + 0x6b, 0xbb, 0x73, 0x13, 0xca, 0xe3, 0x9a, 0x3d, 0x50, 0x9d, 0x6d, 0xcc, 0x2f, 0x7b, 0x29, 0xec, + 0xdd, 0xb3, 0x4b, 0xa3, 0x70, 0x7e, 0x69, 0x14, 0x2e, 0x2e, 0x8d, 0xc2, 0x9b, 0xd4, 0x50, 0xce, + 0x52, 0x43, 0x39, 0x4f, 0x0d, 0xe5, 0x22, 0x35, 0x94, 0x4f, 0xa9, 0xa1, 0xbc, 0xfd, 0x6c, 0x14, + 0x0e, 0xd7, 0x17, 0x78, 0x63, 0xbf, 0x05, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xea, 0x65, 0x4f, 0x89, + 0x07, 0x00, 0x00, } func (m *AzureSpec) Marshal() (dAtA []byte, err error) { @@ -640,6 +642,14 @@ func (m *S3Spec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + i-- + if m.InsecureTLS { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 i -= len(m.Region) copy(dAtA[i:], m.Region) i = encodeVarintGenerated(dAtA, i, uint64(len(m.Region))) @@ -828,6 +838,7 @@ func (m *S3Spec) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = len(m.Region) n += 1 + l + sovGenerated(uint64(l)) + n += 2 return n } @@ -934,6 +945,7 @@ func (this *S3Spec) String() string { `Bucket:` + fmt.Sprintf("%v", this.Bucket) + `,`, `Prefix:` + fmt.Sprintf("%v", this.Prefix) + `,`, `Region:` + fmt.Sprintf("%v", this.Region) + `,`, + `InsecureTLS:` + fmt.Sprintf("%v", this.InsecureTLS) + `,`, `}`, }, "") return s @@ -2076,6 +2088,26 @@ func (m *S3Spec) Unmarshal(dAtA []byte) error { } m.Region = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field InsecureTLS", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.InsecureTLS = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/vendor/kmodules.xyz/objectstore-api/api/v1/generated.proto b/vendor/kmodules.xyz/objectstore-api/api/v1/generated.proto index c40ce7b1..a69d6727 100644 --- a/vendor/kmodules.xyz/objectstore-api/api/v1/generated.proto +++ b/vendor/kmodules.xyz/objectstore-api/api/v1/generated.proto @@ -88,6 +88,8 @@ message S3Spec { optional string prefix = 3; optional string region = 4; + + optional bool insecureTLS = 5; } message SwiftSpec { diff --git a/vendor/kmodules.xyz/objectstore-api/api/v1/openapi_generated.go b/vendor/kmodules.xyz/objectstore-api/api/v1/openapi_generated.go index 2d5313a0..3153e183 100644 --- a/vendor/kmodules.xyz/objectstore-api/api/v1/openapi_generated.go +++ b/vendor/kmodules.xyz/objectstore-api/api/v1/openapi_generated.go @@ -444,6 +444,12 @@ func schema_kmodulesxyz_objectstore_api_api_v1_S3Spec(ref common.ReferenceCallba Format: "", }, }, + "insecureTLS": { + SchemaProps: spec.SchemaProps{ + Type: []string{"boolean"}, + Format: "", + }, + }, }, Required: []string{"endpoint", "bucket"}, }, diff --git a/vendor/kmodules.xyz/objectstore-api/api/v1/types.go b/vendor/kmodules.xyz/objectstore-api/api/v1/types.go index eced231d..7a1c5957 100644 --- a/vendor/kmodules.xyz/objectstore-api/api/v1/types.go +++ b/vendor/kmodules.xyz/objectstore-api/api/v1/types.go @@ -98,10 +98,11 @@ type LocalSpec struct { } type S3Spec struct { - Endpoint string `json:"endpoint" protobuf:"bytes,1,opt,name=endpoint"` - Bucket string `json:"bucket" protobuf:"bytes,2,opt,name=bucket"` - Prefix string `json:"prefix,omitempty" protobuf:"bytes,3,opt,name=prefix"` - Region string `json:"region,omitempty" protobuf:"bytes,4,opt,name=region"` + Endpoint string `json:"endpoint" protobuf:"bytes,1,opt,name=endpoint"` + Bucket string `json:"bucket" protobuf:"bytes,2,opt,name=bucket"` + Prefix string `json:"prefix,omitempty" protobuf:"bytes,3,opt,name=prefix"` + Region string `json:"region,omitempty" protobuf:"bytes,4,opt,name=region"` + InsecureTLS bool `json:"insecureTLS,omitempty" protobuf:"varint,5,opt,name=insecureTLS"` } type GCSSpec struct { diff --git a/vendor/modules.txt b/vendor/modules.txt index cb0d4c82..1bdf7161 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -671,7 +671,7 @@ kmodules.xyz/custom-resources/client/clientset/versioned/typed/appcatalog/v1alph kmodules.xyz/custom-resources/client/clientset/versioned/typed/auditor/v1alpha1 kmodules.xyz/custom-resources/client/clientset/versioned/typed/metrics/v1alpha1 kmodules.xyz/custom-resources/crds -# kmodules.xyz/objectstore-api v0.29.0 +# kmodules.xyz/objectstore-api v0.29.1-0.20240205052451-a5cf0aa669f1 ## explicit; go 1.21 kmodules.xyz/objectstore-api/api/v1 # kmodules.xyz/offshoot-api v0.29.0 @@ -701,7 +701,7 @@ sigs.k8s.io/structured-merge-diff/v4/value ## explicit; go 1.12 sigs.k8s.io/yaml sigs.k8s.io/yaml/goyaml.v2 -# stash.appscode.dev/apimachinery v0.32.1-0.20240101013736-ef308633d8b2 +# stash.appscode.dev/apimachinery v0.32.1-0.20240206075719-41610d0ce38f ## explicit; go 1.21.5 stash.appscode.dev/apimachinery/apis stash.appscode.dev/apimachinery/apis/repositories diff --git a/vendor/stash.appscode.dev/apimachinery/apis/constants.go b/vendor/stash.appscode.dev/apimachinery/apis/constants.go index 4eb2f20a..d5cbe9f3 100644 --- a/vendor/stash.appscode.dev/apimachinery/apis/constants.go +++ b/vendor/stash.appscode.dev/apimachinery/apis/constants.go @@ -78,6 +78,7 @@ const ( RepositoryPrefix = "REPOSITORY_PREFIX" RepositoryEndpoint = "REPOSITORY_ENDPOINT" RepositoryRegion = "REPOSITORY_REGION" + RepositoryInsecureTLS = "REPOSITORY_INSECURE_TLS" Hostname = "HOSTNAME" SourceHostname = "SOURCE_HOSTNAME" diff --git a/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go index dc8ba7d2..f3cc64e3 100644 --- a/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go +++ b/vendor/stash.appscode.dev/apimachinery/apis/repositories/v1alpha1/openapi_generated.go @@ -19446,6 +19446,12 @@ func schema_kmodulesxyz_objectstore_api_api_v1_S3Spec(ref common.ReferenceCallba Format: "", }, }, + "insecureTLS": { + SchemaProps: spec.SchemaProps{ + Type: []string{"boolean"}, + Format: "", + }, + }, }, Required: []string{"endpoint", "bucket"}, }, diff --git a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go index 6790e1e0..5c383e8c 100644 --- a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go +++ b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1alpha1/openapi_generated.go @@ -19451,6 +19451,12 @@ func schema_kmodulesxyz_objectstore_api_api_v1_S3Spec(ref common.ReferenceCallba Format: "", }, }, + "insecureTLS": { + SchemaProps: spec.SchemaProps{ + Type: []string{"boolean"}, + Format: "", + }, + }, }, Required: []string{"endpoint", "bucket"}, }, diff --git a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go index 4f81a674..9ea7459b 100644 --- a/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go +++ b/vendor/stash.appscode.dev/apimachinery/apis/stash/v1beta1/openapi_generated.go @@ -19497,6 +19497,12 @@ func schema_kmodulesxyz_objectstore_api_api_v1_S3Spec(ref common.ReferenceCallba Format: "", }, }, + "insecureTLS": { + SchemaProps: spec.SchemaProps{ + Type: []string{"boolean"}, + Format: "", + }, + }, }, Required: []string{"endpoint", "bucket"}, }, diff --git a/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go b/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go index 057cfd60..95e8ba72 100644 --- a/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go +++ b/vendor/stash.appscode.dev/apimachinery/apis/ui/v1alpha1/openapi_generated.go @@ -19446,6 +19446,12 @@ func schema_kmodulesxyz_objectstore_api_api_v1_S3Spec(ref common.ReferenceCallba Format: "", }, }, + "insecureTLS": { + SchemaProps: spec.SchemaProps{ + Type: []string{"boolean"}, + Format: "", + }, + }, }, Required: []string{"endpoint", "bucket"}, }, diff --git a/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_backupblueprints.yaml b/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_backupblueprints.yaml index b700f6bc..e35c1d97 100644 --- a/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_backupblueprints.yaml +++ b/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_backupblueprints.yaml @@ -1794,6 +1794,8 @@ spec: type: string endpoint: type: string + insecureTLS: + type: boolean prefix: type: string region: diff --git a/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_repositories.yaml b/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_repositories.yaml index 879a6435..0321c1a7 100644 --- a/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_repositories.yaml +++ b/vendor/stash.appscode.dev/apimachinery/crds/stash.appscode.com_repositories.yaml @@ -1801,6 +1801,8 @@ spec: type: string endpoint: type: string + insecureTLS: + type: boolean prefix: type: string region: diff --git a/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go b/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go index 2723ec35..fd4a8377 100644 --- a/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go +++ b/vendor/stash.appscode.dev/apimachinery/pkg/restic/commands.go @@ -80,6 +80,7 @@ func (w *ResticWrapper) listSnapshots(snapshotIDs []string) ([]Snapshot, error) result := make([]Snapshot, 0) args := w.appendCacheDirFlag([]interface{}{"snapshots", "--json", "--quiet", "--no-lock"}) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) for _, id := range snapshotIDs { args = append(args, id) @@ -95,6 +96,7 @@ func (w *ResticWrapper) listSnapshots(snapshotIDs []string) ([]Snapshot, error) func (w *ResticWrapper) deleteSnapshots(snapshotIDs []string) ([]byte, error) { args := w.appendCacheDirFlag([]interface{}{"forget", "--quiet", "--prune"}) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) for _, id := range snapshotIDs { args = append(args, id) @@ -107,6 +109,7 @@ func (w *ResticWrapper) repositoryExist() bool { klog.Infoln("Checking whether the backend repository exist or not....") args := w.appendCacheDirFlag([]interface{}{"snapshots", "--json", "--no-lock"}) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) if _, err := w.run(Command{Name: ResticCMD, Args: args}); err == nil { return true @@ -122,6 +125,7 @@ func (w *ResticWrapper) initRepository() error { args := w.appendCacheDirFlag([]interface{}{"init"}) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) _, err := w.run(Command{Name: ResticCMD, Args: args}) return err @@ -151,6 +155,7 @@ func (w *ResticWrapper) backup(params backupParams) ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendCleanupCacheFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) @@ -174,6 +179,7 @@ func (w *ResticWrapper) backupFromStdin(options BackupOptions) ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendCleanupCacheFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) commands = append(commands, Command{Name: ResticCMD, Args: args}) @@ -248,6 +254,7 @@ func (w *ResticWrapper) tryCleanup(retentionPolicy v1alpha1.RetentionPolicy, hos if len(args) > 1 { args = w.appendCacheDirFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) @@ -294,6 +301,7 @@ func (w *ResticWrapper) restore(params restoreParams) ([]byte, error) { } args = w.appendCacheDirFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) @@ -325,6 +333,7 @@ func (w *ResticWrapper) DumpOnce(dumpOptions DumpOptions) ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) // first add restic command, then add StdoutPipeCommands @@ -339,6 +348,7 @@ func (w *ResticWrapper) check() ([]byte, error) { klog.Infoln("Checking integrity of repository") args := w.appendCacheDirFlag([]interface{}{"check", "--no-lock"}) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) args = w.appendMaxConnectionsFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) @@ -353,6 +363,7 @@ func (w *ResticWrapper) stats(snapshotID string) ([]byte, error) { args = w.appendMaxConnectionsFlag(args) args = append(args, "--quiet", "--json", "--mode", "raw-data", "--no-lock") args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) } @@ -362,6 +373,7 @@ func (w *ResticWrapper) unlock() ([]byte, error) { args := w.appendCacheDirFlag([]interface{}{"unlock", "--remove-all"}) args = w.appendMaxConnectionsFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) } @@ -515,6 +527,7 @@ func (w *ResticWrapper) addKey(params keyParams) ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendMaxConnectionsFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) } @@ -527,6 +540,7 @@ func (w *ResticWrapper) listKey() ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendMaxConnectionsFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) } @@ -543,6 +557,7 @@ func (w *ResticWrapper) updateKey(params keyParams) ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendMaxConnectionsFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) } @@ -555,6 +570,14 @@ func (w *ResticWrapper) removeKey(params keyParams) ([]byte, error) { args = w.appendCacheDirFlag(args) args = w.appendMaxConnectionsFlag(args) args = w.appendCaCertFlag(args) + args = w.appendInsecureTLSFlag(args) return w.run(Command{Name: ResticCMD, Args: args}) } + +func (w *ResticWrapper) appendInsecureTLSFlag(args []interface{}) []interface{} { + if w.config.InsecureTLS { + return append(args, "--insecure-tls") + } + return args +} diff --git a/vendor/stash.appscode.dev/apimachinery/pkg/restic/config.go b/vendor/stash.appscode.dev/apimachinery/pkg/restic/config.go index a070db44..11b295fa 100644 --- a/vendor/stash.appscode.dev/apimachinery/pkg/restic/config.go +++ b/vendor/stash.appscode.dev/apimachinery/pkg/restic/config.go @@ -87,6 +87,7 @@ type SetupOptions struct { CacertFile string ScratchDir string EnableCache bool + InsecureTLS bool MaxConnections int64 StorageSecret *core.Secret Nice *ofst.NiceSettings diff --git a/vendor/stash.appscode.dev/apimachinery/pkg/util/addon.go b/vendor/stash.appscode.dev/apimachinery/pkg/util/addon.go index cff35cbf..bb8d762c 100644 --- a/vendor/stash.appscode.dev/apimachinery/pkg/util/addon.go +++ b/vendor/stash.appscode.dev/apimachinery/pkg/util/addon.go @@ -60,8 +60,8 @@ func ExtractAddonInfo(appClient appcatalog_cs.Interface, task v1beta1.TaskRef, t addon.RestoreTask.Name = task.Name } if len(task.Params) != 0 { - addon.BackupTask.Params = getTaskParams(task) - addon.RestoreTask.Params = getTaskParams(task) + addon.BackupTask.Params = upsertParams(addon.BackupTask.Params, getTaskParams(task)) + addon.RestoreTask.Params = upsertParams(addon.BackupTask.Params, getTaskParams(task)) } return &addon, nil @@ -75,3 +75,24 @@ func getTaskParams(task v1beta1.TaskRef) []appcat.Param { } return params } + +func upsertParams(oldParams, newParams []appcat.Param) []appcat.Param { + paramMap := make(map[string]appcat.Param) + + for _, newParam := range newParams { + paramMap[newParam.Name] = newParam + } + + for _, oldParam := range oldParams { + if _, found := paramMap[oldParam.Name]; !found { + paramMap[oldParam.Name] = oldParam + } + } + + var updatedParams []appcat.Param + for _, param := range paramMap { + updatedParams = append(updatedParams, param) + } + + return updatedParams +}