diff --git a/src/views/backups.html b/src/views/backups.html index e2fcc6d39..9e2e67e59 100644 --- a/src/views/backups.html +++ b/src/views/backups.html @@ -96,6 +96,11 @@ +
+ + +
+
@@ -172,7 +177,7 @@
{{ backupConfig.backupFolder }} - {{ backupConfig.bucket + '/' + backupConfig.prefix }} + {{ backupConfig.bucket + '/' + backupConfig.prefix }} {{ backupConfig.region + ' ' + backupConfig.bucket + '/' + backupConfig.prefix }}
diff --git a/src/views/backups.js b/src/views/backups.js index 9fe093520..f66bb5b80 100644 --- a/src/views/backups.js +++ b/src/views/backups.js @@ -47,6 +47,12 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat { name: 'AT-VIE-1', value: 'https://sos-at-vie-1.exo.io' } ]; + // https://www.scaleway.com/docs/object-storage-feature/ + $scope.scalewayRegions = [ + { name: 'FR-PAR', value: 'https://s3.fr-par.scw.cloud', region: 'fr-par' }, // default + { name: 'NL-AMS', value: 'https://s3.nl-ams.scw.cloud', region: 'nl-ams' } + ]; + $scope.storageProvider = [ { name: 'Amazon S3', value: 's3' }, { name: 'DigitalOcean Spaces', value: 'digitalocean-spaces' }, @@ -54,8 +60,9 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat { name: 'Filesystem', value: 'filesystem' }, { name: 'Google Cloud Storage', value: 'gcs' }, { name: 'Minio', value: 'minio' }, + { name: 'Scaleway Object Storage', value: 'scaleway-objectstorage' }, { name: 'No-op (Only for testing)', value: 'noop' }, - { name: 'S3 API Compatible (v4)', value: 's3-v4-compat' }, + { name: 'S3 API Compatible (v4)', value: 's3-v4-compat' } ]; $scope.retentionTimes = [ @@ -172,7 +179,9 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat }; $scope.s3like = function (provider) { - return provider === 's3' || provider === 'minio' || provider === 's3-v4-compat' || provider === 'exoscale-sos' || provider === 'digitalocean-spaces'; + return provider === 's3' || provider === 'minio' || provider === 's3-v4-compat' + || provider === 'exoscale-sos' || provider === 'digitalocean-spaces' + || provider === 'scaleway-objectstorage'; }; $scope.configureBackup = { @@ -274,6 +283,9 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat } else if (backupConfig.provider === 'exoscale-sos') { backupConfig.region = 'us-east-1'; backupConfig.signatureVersion = 'v4'; + } else if (backupConfig.provider === 'scaleway-objectstorage') { + backupConfig.region = $scope.scalewayRegions.find(function (x) { return x.value === $scope.configureBackup.endpoint; }).region; + backupConfig.signatureVersion = 'v4'; } else if (backupConfig.provider === 'digitalocean-spaces') { backupConfig.region = 'us-east-1'; }