Example #1
0
        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);
            }
        }
Example #2
0
        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);