private async Task <string> AnalyzeSnapshots <T>(string[] secretBackups) where T : ScriptSecrets { string analyzeResult = string.Empty; try { List <T> shapShots = new List <T>(); foreach (string secretPath in secretBackups) { string secretString = await _repository.ReadAsync(ScriptSecretsType.Function, Path.GetFileNameWithoutExtension(secretPath)); shapShots.Add(ScriptSecretSerializer.DeserializeSecrets <T>(secretString)); } string[] hosts = shapShots.Select(x => x.HostName).Distinct().ToArray(); if (hosts.Length > 1) { analyzeResult = string.Format(Resources.ErrorSameSecrets, string.Join(",", hosts)); } } catch { // best effort } return(analyzeResult); }
public override async Task <ScriptSecrets> ReadAsync(ScriptSecretsType type, string functionName) { string filePath = GetSecretsFilePath(type, functionName); string secretsContent = null; if (File.Exists(filePath)) { for (int currentRetry = 0; ; currentRetry++) { try { // load the secrets file secretsContent = await FileUtility.ReadAsync(filePath); break; } catch (IOException) { if (currentRetry > _retryCount) { throw; } } await Task.Delay(_retryDelay); } } return(string.IsNullOrEmpty(secretsContent) ? null : ScriptSecretSerializer.DeserializeSecrets(type, secretsContent)); }
public override async Task <ScriptSecrets> ReadAsync(ScriptSecretsType type, string functionName) { string secretsContent = null; string blobPath = GetSecretsBlobPath(type, functionName); try { BlobClient secretBlobClient = Container.GetBlobClient(blobPath); if (await secretBlobClient.ExistsAsync()) { var downloadResponse = await secretBlobClient.DownloadAsync(); using (StreamReader reader = new StreamReader(downloadResponse.Value.Content)) { secretsContent = reader.ReadToEnd(); } } } catch (Exception ex) { LogErrorMessage("read", ex); throw; } return(string.IsNullOrEmpty(secretsContent) ? null : ScriptSecretSerializer.DeserializeSecrets(type, secretsContent)); }
public override async Task <ScriptSecrets> ReadAsync(ScriptSecretsType type, string functionName) { string secretsContent = null; string blobPath = GetSecretsBlobPath(type, functionName); CloudBlockBlob secretBlob = _blobContainer.GetBlockBlobReference(blobPath); if (await secretBlob.ExistsAsync()) { secretsContent = await secretBlob.DownloadTextAsync(); } return(string.IsNullOrEmpty(secretsContent) ? null : ScriptSecretSerializer.DeserializeSecrets(type, secretsContent)); }
private Task <ScriptSecrets> LoadSecretsAsync(ScriptSecretsType secretsType, string keyScope) => LoadSecretsAsync(secretsType, keyScope, s => ScriptSecretSerializer.DeserializeSecrets(secretsType, s));
private static bool TryLoadSecrets(ScriptSecretsType secretsType, string filePath, out ScriptSecrets secrets) => TryLoadSecrets(filePath, s => ScriptSecretSerializer.DeserializeSecrets(secretsType, s), out secrets);
private Task <ScriptSecrets> LoadSecretsAsync(ScriptSecretsType secretsType, string functionName) => LoadSecretsAsync(secretsType, functionName, s => ScriptSecretSerializer.DeserializeSecrets(secretsType, s));