コード例 #1
0
 public static void UpdateSettingsForGlacier(GlacierSettings glacierSettings, string databaseName)
 {
     if (glacierSettings != null)
     {
         glacierSettings.RemoteFolderName = GetUpdatedPath(glacierSettings.RemoteFolderName, databaseName);
     }
 }
コード例 #2
0
        public RavenAwsGlacierClient(GlacierSettings glacierSettings, Progress progress = null, CancellationToken?cancellationToken = null)
            : base(glacierSettings, progress, cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(glacierSettings.VaultName))
            {
                throw new ArgumentException("AWS vault name can't be null or empty");
            }

            _vaultName = glacierSettings.VaultName;
        }
コード例 #3
0
        public RavenAwsGlacierClient(GlacierSettings glacierSettings, Config.Categories.BackupConfiguration configuration, Progress progress = null, CancellationToken cancellationToken = default)
        {
            if (glacierSettings == null)
            {
                throw new ArgumentNullException(nameof(glacierSettings));
            }
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (string.IsNullOrWhiteSpace(glacierSettings.AwsAccessKey))
            {
                throw new ArgumentException("AWS Access Key cannot be null or empty");
            }

            if (string.IsNullOrWhiteSpace(glacierSettings.AwsSecretKey))
            {
                throw new ArgumentException("AWS Secret Key cannot be null or empty");
            }

            if (string.IsNullOrWhiteSpace(glacierSettings.VaultName))
            {
                throw new ArgumentException("AWS Vault Name cannot be null or empty");
            }

            if (string.IsNullOrWhiteSpace(glacierSettings.AwsRegionName))
            {
                throw new ArgumentException("AWS Region Name cannot be null or empty");
            }

            var region = RegionEndpoint.GetBySystemName(glacierSettings.AwsRegionName);

            AWSCredentials credentials;

            if (string.IsNullOrWhiteSpace(glacierSettings.AwsSessionToken))
            {
                credentials = new BasicAWSCredentials(glacierSettings.AwsAccessKey, glacierSettings.AwsSecretKey);
            }
            else
            {
                credentials = new SessionAWSCredentials(glacierSettings.AwsAccessKey, glacierSettings.AwsSecretKey, glacierSettings.AwsSessionToken);
            }

            _client = new AmazonGlacierClient(credentials, new AmazonGlacierConfig
            {
                RegionEndpoint = region,
                Timeout        = configuration.CloudStorageOperationTimeout.AsTimeSpan
            });

            _region            = glacierSettings.AwsRegionName;
            _vaultName         = glacierSettings.VaultName;
            _progress          = progress;
            _cancellationToken = cancellationToken;
        }
コード例 #4
0
        public override DynamicJsonValue ToJson()
        {
            var json = base.ToJson();

            json[nameof(LocalSettings)]       = LocalSettings?.ToJson();
            json[nameof(S3Settings)]          = S3Settings?.ToJson();
            json[nameof(AzureSettings)]       = AzureSettings?.ToJson();
            json[nameof(GlacierSettings)]     = GlacierSettings?.ToJson();
            json[nameof(GoogleCloudSettings)] = GoogleCloudSettings?.ToJson();
            json[nameof(FtpSettings)]         = FtpSettings?.ToJson();
            return(json);
        }
コード例 #5
0
        private void UploadToGlacier(GlacierSettings settings, Stream stream, Progress progress)
        {
            using (var client = new RavenAwsGlacierClient(settings, _settings.Configuration, progress, TaskCancelToken.Token))
            {
                var key       = CombinePathAndKey(settings.RemoteFolderName ?? _settings.DatabaseName);
                var archiveId = client.UploadArchive(stream, key);
                if (_logger.IsInfoEnabled)
                {
                    _logger.Info($"{ReportSuccess(GlacierName)}, archive ID: {archiveId}");
                }

                var runner = new GlacierRetentionPolicyRunner(_retentionPolicyParameters, client);
                runner.Execute();
            }
        }
コード例 #6
0
        public RavenAwsGlacierClient(GlacierSettings glacierSettings, Progress progress = null, Logger logger = null, CancellationToken?cancellationToken = null)
            : base(glacierSettings, progress, cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(glacierSettings.VaultName))
            {
                throw new ArgumentException("AWS vault name can't be null or empty");
            }

            if (string.IsNullOrWhiteSpace(glacierSettings.AwsRegionName))
            {
                throw new ArgumentException("AWS region cannot be null or empty");
            }

            AwsRegion  = glacierSettings.AwsRegionName.ToLower();
            _vaultName = glacierSettings.VaultName;
            _logger    = logger;
        }
コード例 #7
0
 protected override void ValidateImpl(ref List <string> errors)
 {
     if (S3Settings != null)
     {
         if (S3Settings.HasSettings() == false)
         {
             errors.Add($"{nameof(S3Settings)} has no valid setting. '{nameof(S3Settings.BucketName)}' and '{nameof(GetBackupConfigurationScript)}' are both null");
         }
     }
     if (AzureSettings != null)
     {
         if (AzureSettings.HasSettings() == false)
         {
             errors.Add($"{nameof(AzureSettings)} has no valid setting. '{nameof(AzureSettings.StorageContainer)}' and '{nameof(GetBackupConfigurationScript)}' are both null");
         }
     }
     if (GlacierSettings != null)
     {
         if (GlacierSettings.HasSettings() == false)
         {
             errors.Add($"{nameof(GlacierSettings)} has no valid setting. '{nameof(GlacierSettings.VaultName)}' and '{nameof(GetBackupConfigurationScript)}' are both null");
         }
     }
     if (GoogleCloudSettings != null)
     {
         if (GoogleCloudSettings.HasSettings() == false)
         {
             errors.Add($"{nameof(GoogleCloudSettings)} has no valid setting. '{nameof(GoogleCloudSettings.BucketName)}' and '{nameof(GetBackupConfigurationScript)}' are both null");
         }
     }
     if (FtpSettings != null)
     {
         if (FtpSettings.HasSettings() == false)
         {
             errors.Add($"{nameof(FtpSettings)} has no valid setting. '{nameof(FtpSettings.Port)}' is 0  and '{nameof(FtpSettings.Url)}' and '{nameof(GetBackupConfigurationScript)}' are both null");
         }
     }
     if (LocalSettings != null)
     {
         if (LocalSettings.HasSettings() == false)
         {
             errors.Add($"{nameof(LocalSettings)} has no valid setting. '{nameof(LocalSettings.FolderPath)}' and '{nameof(GetBackupConfigurationScript)}' are both null");
         }
     }
 }
コード例 #8
0
        static AmazonGlacierTheoryAttribute()
        {
            var glacierSettingsString = Environment.GetEnvironmentVariable(GlacierCredentialEnvironmentVariable);

            if (glacierSettingsString == null)
            {
                EnvVariableMissing = true;
                return;
            }

            try
            {
                _glacierSettings = JsonConvert.DeserializeObject <GlacierSettings>(glacierSettingsString);
            }
            catch (Exception e)
            {
                ParsingError = e.ToString();
            }
        }
コード例 #9
0
        private async Task UploadToGlacier(
            GlacierSettings settings,
            Stream stream,
            string folderName,
            string fileName,
            Progress progress)
        {
            using (var client = new RavenAwsGlacierClient(settings.AwsAccessKey, settings.AwsSecretKey,
                                                          settings.AwsRegionName, settings.VaultName, progress, TaskCancelToken.Token))
            {
                var key       = CombinePathAndKey(_database.Name, folderName, fileName);
                var archiveId = await client.UploadArchive(stream, key);

                if (_logger.IsInfoEnabled)
                {
                    _logger.Info($"Successfully uploaded backup file '{fileName}' to Glacier, archive ID: {archiveId}");
                }
            }
        }
コード例 #10
0
ファイル: Aws.cs プロジェクト: trisadmeslek/ravendb
        private static GlacierSettings GetGlacierSettings(string region, string vaultName)
        {
            var glacierSettings = AmazonGlacierFactAttribute.GlacierSettings;

            if (glacierSettings == null)
            {
                return(null);
            }

            var settings = new GlacierSettings
            {
                VaultName     = vaultName,
                AwsAccessKey  = glacierSettings.AwsAccessKey,
                AwsSecretKey  = glacierSettings.AwsSecretKey,
                AwsRegionName = region
            };

            return(settings);
        }
コード例 #11
0
ファイル: BackupSettings.cs プロジェクト: zuhuizou/DotNetDAL
        public bool Equals(GlacierSettings other)
        {
            if (other == null)
            {
                return(false);
            }

            if (WasEnabled(other))
            {
                return(true);
            }

            if (other.AwsRegionName != AwsRegionName)
            {
                return(false);
            }

            if (other.VaultName != VaultName)
            {
                return(false);
            }

            return(true);
        }