예제 #1
0
        private static async Task <SimpleHttpResponse> DoForContainersAsync(string container,
                                                                            HttpStatusCode successStatus,
                                                                            Func <CloudBlobContainer, Task> action,
                                                                            IEnumerable <CloudStorageAccount> accounts,
                                                                            bool ignoreNotFound,
                                                                            IEnumerable <CloudStorageAccount> excludeAccounts)
        {
            SimpleHttpResponse retval = new SimpleHttpResponse
            {
                StatusCode = successStatus,
            };

            if (excludeAccounts != null)
            {
                accounts = accounts.Except(excludeAccounts);
            }
            var actionTasks = accounts
                              .Select(account => action(NamespaceHandler.GetContainerByName(account, container)));

            try
            {
                await Task.WhenAll(actionTasks.ToArray());
            }
            catch (AggregateException aggEx)
            {
                aggEx.Handle(ex => ProcessException(ex, ignoreNotFound, retval));
            }
            catch (Exception ex)
            {
                if (!ProcessException(ex, ignoreNotFound, retval))
                {
                    throw;
                }
            }
            return(retval);
        }
예제 #2
0
        public static async Task EnqueueBlobReplicationAsync(string container, string blob, bool deleteReplica)
        {
            var namespaceBlob = await NamespaceHandler.FetchNamespaceBlobAsync(container, blob);

            await EnqueueBlobReplicationAsync(namespaceBlob, deleteReplica);
        }