async Task PopulateContainer(StoreTier tier, BranchState state, string[] paths, ILogger log) { if (state.In(CloneDb, Fresh)) { return; } async Task <(AzureBlobFileStore container, CloudBlobContainer legacy, StringPath[] rooDirs)> GetStorePrep(SemVersion version) { var container = Stores.Store(tier: tier, version: version); var legacy = container.LegacyContainer(); var rooDirs = await container.ListDirs("").ToArrayAsync(); return(container, legacy, rooDirs); } var source = await GetStorePrep(VersionInfo.ProdVersion); var dest = await GetStorePrep(VersionInfo.Version); foreach (var path in source.rooDirs.Where(d => paths == null || paths.Contains(d.ToString()))) { var sourceBlob = source.legacy.GetDirectoryReference(path); var destBlob = dest.legacy.GetDirectoryReference(path); await YtBackup.CopyBlobs(nameof(BranchEnvCreator), sourceBlob, destBlob, log); } }
public AzureBlobFileStore Store(StringPath path = null, StoreTier tier = Premium, SemVersion version = null) { var p = new StringPath(Cfg.RootPath(version ?? Version)); if (path != null) { p = p.Add(path); } var store = new AzureBlobFileStore(tier switch { StoreTier.Backup => Cfg.BackupCs, Premium => Cfg.PremiumDataStorageCs, _ => Cfg.DataStorageCs }, p, Log);