Ejemplo n.º 1
0
        /// <summary>
        /// Download a package from blob storage and unzip it
        /// </summary>
        /// <param name="containerName">The Blob storage container name</param>
        /// <param name="packageName">The name of the zip file package</param>
        /// <param name="workingDirectory">Where to extract the files</param>
        private static void InstallPackage(string containerName, string packageName, string workingDirectory)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(DATA_CONNECTION_STRING));

            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            blobClient.RetryPolicy = RetryPolicies.Retry(100, TimeSpan.FromSeconds(1));
            blobClient.Timeout     = TimeSpan.FromSeconds(600);

            CloudBlobContainer container = blobClient.GetContainerReference(containerName);
            CloudBlockBlob     blob      = container.GetBlockBlobReference(packageName);

            Console.WriteLine(string.Format("Downloading {0} to {1}", blob.Uri, workingDirectory), "Information");

            if (blob.Uri.PathAndQuery.EndsWith(".zip", true, Thread.CurrentThread.CurrentCulture))
            {
                // if this is a zip file, unzip it
                // the temp dirtectory is limited to 100 MB
                var filename = @"c:\" + Guid.NewGuid();
                blob.DownloadToFile(filename);

                Console.WriteLine(string.Format("Extracting {0}", packageName), "Information");

                UnZip(Directory.GetCurrentDirectory(), filename, workingDirectory);

                // delete the temp file
                File.Delete(filename);
            }
            else
            {
                blob.DownloadToFile(@"c:\Applications\" + blob.Uri.Segments.Last());
            }

            Console.WriteLine("Extraction finished", "Information");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Checks a package in Blob Storage against any previous package receipt
        /// to determine whether to reinstall it
        /// </summary>
        private static bool IsNewPackage(string containerName, string packageName, string packageReceiptFile)
        {
            var storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(DATA_CONNECTION_STRING));

            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            blobClient.RetryPolicy = RetryPolicies.Retry(100, TimeSpan.FromSeconds(1));
            blobClient.Timeout     = TimeSpan.FromSeconds(600);

            CloudBlobContainer container = blobClient.GetContainerReference(containerName);
            CloudBlockBlob     blob      = container.GetBlockBlobReference(packageName);

            blob.FetchAttributes();
            DateTime blobTimeStamp = blob.Attributes.Properties.LastModifiedUtc;

            DateTime fileTimeStamp = File.GetCreationTimeUtc(packageReceiptFile);

            if (fileTimeStamp.CompareTo(blobTimeStamp) < 0)
            {
                Console.WriteLine(string.Format("{0} is new or not yet installed.", packageName), "Information");
                return(true);
            }
            else
            {
                Console.WriteLine(string.Format("{0} has previously been installed, skipping download.", packageName), "Information");
                return(false);
            }
        }
Ejemplo n.º 3
0
        public static void Initialize()
        {
            CloudStorageAccount account = CloudConfiguration.GetStorageAccount(AzureConnectionStrings.DataConnection);

            // Tables
            var cloudTableClient = new CloudTableClient(account.TableEndpoint.ToString(), account.Credentials);

            cloudTableClient.CreateTableIfNotExist <ExpenseExpenseItemEntity>(AzureStorageNames.ExpenseTable);
            cloudTableClient.CreateTableIfNotExist <ExpenseExportEntity>(AzureStorageNames.ExpenseExportTable);

            // Blobs
            CloudBlobClient client = account.CreateCloudBlobClient();

            client.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(5));
            var container = client.GetContainerReference(AzureStorageNames.ReceiptContainerName);

            container.CreateIfNotExist();
            container = client.GetContainerReference(AzureStorageNames.ExpenseExportContainerName);
            container.CreateIfNotExist();

            // Queues
            CloudQueueClient queueClient = account.CreateCloudQueueClient();

            queueClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(5));
            CloudQueue queueReference = queueClient.GetQueueReference(AzureStorageNames.ApprovedExpenseMessage);

            queueReference.CreateIfNotExist();
            queueReference = queueClient.GetQueueReference(AzureStorageNames.PoisonApprovedExpenseMessage);
            queueReference.CreateIfNotExist();
            queueReference = queueClient.GetQueueReference(AzureStorageNames.NewReceiptMessage);
            queueReference.CreateIfNotExist();
            queueReference = queueClient.GetQueueReference(AzureStorageNames.PoisonNewReceiptMessage);
            queueReference.CreateIfNotExist();
        }
Ejemplo n.º 4
0
        // Constructor - get settings from a hosted service configuration or .NET configuration file.

        public BlobHelper(string configurationSettingName, bool hostedService)
        {
            if (hostedService)
            {
                CloudStorageAccount.SetConfigurationSettingPublisher(
                    (configName, configSettingPublisher) =>
                {
                    var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName);
                    configSettingPublisher(connectionString);
                }
                    );
            }
            else
            {
                CloudStorageAccount.SetConfigurationSettingPublisher(
                    (configName, configSettingPublisher) =>
                {
                    var connectionString = ConfigurationManager.ConnectionStrings[configName].ConnectionString;
                    configSettingPublisher(connectionString);
                }
                    );
            }

            Account = CloudStorageAccount.FromConfigurationSetting(configurationSettingName);

            BlobClient             = Account.CreateCloudBlobClient();
            BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero);
        }
Ejemplo n.º 5
0
 public DatasetInfoDataSource()
 {
     _context = new DatasetInfoDataContext(StorageAccount.TableEndpoint.AbsoluteUri, StorageAccount.Credentials)
     {
         RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1))
     };
 }
Ejemplo n.º 6
0
 static AzureQueueDefaultPolicies()
 {
     MaxQueueOperationRetries          = 5;
     PauseBetweenQueueOperationRetries = TimeSpan.FromMilliseconds(100);
     QueueOperationRetryPolicy         = RetryPolicies.Retry(MaxQueueOperationRetries, PauseBetweenQueueOperationRetries); // 5 x 100ms
     QueueOperationTimeout             = PauseBetweenQueueOperationRetries.Multiply(MaxQueueOperationRetries).Multiply(6); // 3 sec
 }
Ejemplo n.º 7
0
        public void InitializeCloudStorageAccess(string containerName)
        {
            if (containerName == null)
            {
                throw new ArgumentNullException("containerName");
            }
            if (containerName == "")
            {
                throw new ArgumentException("Invalid container name", "containerName");
            }
            if (initializedContainerName != null)
            {
                if (containerName == initializedContainerName)
                {
                    return;
                }
                if (containerName != initializedContainerName)
                {
                    throw new NotSupportedException("InitializeCloudStorageAccess already initialized with container name: "
                                                    + initializedContainerName + " (tried to initialize with: "
                                                    + containerName + ")");
                }
            }
            CloudBlobClient blobClient = StorageSupport.CurrStorageAccount.CreateCloudBlobClient();

            blobClient.RetryPolicy = RetryPolicies.Retry(10, TimeSpan.FromMilliseconds(300));
            CurrBlobClient         = blobClient;

            var activeContainer = blobClient.GetContainerReference(containerName.ToLower());

            activeContainer.CreateIfNotExist();
            CurrActiveContainer      = activeContainer;
            initializedContainerName = containerName;
        }
        private void Connect()
        {
            connected = false;

            int trycount = 0;

            while (trycount++ < 3)
            {
                try
                {
                    string connectionString = RoleEnvironment.GetConfigurationSettingValue(connectionStringName);
                    _storageAccount          = CloudStorageAccount.Parse(connectionString);
                    _tableClient             = new CloudTableClient(_storageAccount.TableEndpoint.AbsoluteUri, _storageAccount.Credentials);
                    _tableClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
                    if (!_tableClient.DoesTableExist(tableName))
                    {
                        _tableClient.CreateTableIfNotExist(tableName);
                    }

                    connected = true;
                    break;
                }
                catch
                {
                }
            }

            if (!connected)
            {
                throw new Exception("Could not connect to table service");
            }
        }
Ejemplo n.º 9
0
        // Constructor - pass in a storage connection string.

        public BlobHelper(string connectionString)
        {
            Account = CloudStorageAccount.Parse(connectionString);

            BlobClient             = Account.CreateCloudBlobClient();
            BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero);
        }
Ejemplo n.º 10
0
        static AzureTableDefaultPolicies()
        {
            MaxTableCreationRetries          = 60;
            PauseBetweenTableCreationRetries = TimeSpan.FromSeconds(1);

            MaxTableOperationRetries          = 5;
            PauseBetweenTableOperationRetries = TimeSpan.FromMilliseconds(100);

            MaxBusyRetries          = 120;
            PauseBetweenBusyRetries = TimeSpan.FromMilliseconds(500);
#if DEBUG
            if (Debugger.IsAttached)
            {
                PauseBetweenTableCreationRetries  = PauseBetweenTableCreationRetries.Multiply(100);
                PauseBetweenTableOperationRetries = PauseBetweenTableOperationRetries.Multiply(100);
                PauseBetweenBusyRetries           = PauseBetweenBusyRetries.Multiply(10);
            }
#endif
            TableCreationRetryPolicy = RetryPolicies.Retry(MaxTableCreationRetries, PauseBetweenTableCreationRetries);    // 60 x 1s
            TableCreationTimeout     = PauseBetweenTableCreationRetries.Multiply(MaxTableCreationRetries).Multiply(3);    // 3 min

            TableOperationRetryPolicy = RetryPolicies.Retry(MaxTableOperationRetries, PauseBetweenTableOperationRetries); // 5 x 100ms
            TableOperationTimeout     = PauseBetweenTableOperationRetries.Multiply(MaxTableOperationRetries).Multiply(6); // 3 sec

            BusyRetriesTimeout = PauseBetweenBusyRetries.Multiply(MaxBusyRetries);                                        // 1 minute
        }
Ejemplo n.º 11
0
        private CloudBlobContainer GetBlobContainer(string containerName)
        {
            var client = this.StorageAccount.CreateCloudBlobClient();

            client.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(5));
            return(client.GetContainerReference(containerName));
        }
        public AzureFilesBlobContainer()
        {
            _log   = ClassLogger.Create(GetType());
            _dblog = DebugOnlyLogger.Create(_log);

            var config = Catalog.Factory.Resolve <IConfig>(SpecialFactoryContexts.Routed);

            _containerName = config[BlobContainerLocalConfig.ContainerName];
            EntityAccess access = (EntityAccess)Enum.Parse(typeof(EntityAccess),
                                                           config.Get(BlobContainerLocalConfig.OptionalAccess,
                                                                      EntityAccess.Private.ToString()));

            _contentType = config.Get(BlobContainerLocalConfig.OptionalContentType, "application/raw");

            _account = Client.FromConfig();
            _client  = _account.CreateCloudBlobClient();

            _client.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(5));

            var blobContainerPermissions = new BlobContainerPermissions
            {
                PublicAccess = AzureEntityAccessTranslator.Translate(access)
            };

            _blobContainerPermissions = blobContainerPermissions;
            _container = _client.GetContainerReference(_containerName.ToLowerInvariant());

            if (_container.CreateIfNotExist())
            {
                _container.SetPermissions(_blobContainerPermissions);
            }
        }
Ejemplo n.º 13
0
        private void Connect()
        {
            connected = false;

            int trycount = 0;

            while (trycount++ < 3)
            {
                try
                {
                    //comment added just for test
                    string connectionString = "DefaultEndpointsProtocol=https; AccountName=careerthesaurus; AccountKey=52D4zWvYaIL6gfl4FUt6y8cc9Ar8UV8EWNmBttpraVkMJjcy+cOlDhiZYTnmGZLdpKV1nwlNNlGQJiqZh9rlxQ==";
                    _storageAccount          = CloudStorageAccount.Parse(connectionString);
                    _tableClient             = new CloudTableClient(_storageAccount.TableEndpoint.AbsoluteUri, _storageAccount.Credentials);
                    _tableClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
                    if (!_tableClient.DoesTableExist(tableName))
                    {
                        _tableClient.CreateTableIfNotExist(tableName);
                    }

                    connected = true;
                    break;
                }
                catch
                {
                }
            }

            if (!connected)
            {
                throw new Exception("Could not connect to table service");
            }
        }
        private void Init(string configurationSettingName)
        {
            if (RoleEnvironment.IsAvailable)
            {
                CloudStorageAccount.SetConfigurationSettingPublisher(
                    (configName, configSettingPublisher) =>
                {
                    var connectionString = RoleEnvironment.GetConfigurationSettingValue(configName);
                    configSettingPublisher(connectionString);
                }
                    );
            }
            else
            {
                CloudStorageAccount.SetConfigurationSettingPublisher(
                    (configName, configSettingPublisher) =>
                {
                    var connectionString = ConfigurationManager.ConnectionStrings[configName].ConnectionString;
                    configSettingPublisher(connectionString);
                }
                    );
            }

            Account = CloudStorageAccount.FromConfigurationSetting(configurationSettingName);

            TableClient             = Account.CreateCloudTableClient();
            TableClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromMilliseconds(100));
        }
Ejemplo n.º 15
0
 public GuestBookDataSource()
 {
     context = new GuestBookDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials)
     {
         RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1))
     };
 }
Ejemplo n.º 16
0
        /// <summary>
        /// Download a package from blob storage and unzip it
        /// </summary>
        /// <param name="containerName">The Blob storage container name</param>
        /// <param name="packageName">The name of the zip file package</param>
        /// <param name="workingDirectory">Where to extract the files</param>
        private static void InstallPackage(string containerName, string packageName, string workingDirectory)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue(DATA_CONNECTION_STRING));

            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            blobClient.RetryPolicy = RetryPolicies.Retry(100, TimeSpan.FromSeconds(1));
            blobClient.Timeout     = TimeSpan.FromSeconds(600);

            CloudBlobContainer container = blobClient.GetContainerReference(containerName);
            CloudBlockBlob     blob      = container.GetBlockBlobReference(packageName);

            Console.WriteLine(string.Format("Downloading {0} to {1}", blob.Uri, workingDirectory), "Information");

            string filename = Path.GetTempFileName();

            blob.DownloadToFile(filename);

            Console.WriteLine(string.Format("Extracting {0}", packageName), "Information");
            UnZip(Directory.GetCurrentDirectory(), filename, workingDirectory);

            // delete the temp file
            File.Delete(filename);
            Console.WriteLine("Extraction finished", "Information");
        }
Ejemplo n.º 17
0
        public BlobRepository()
        {
            var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["CfCloudStorage"].ConnectionString;

            StorageAccount         = CloudStorageAccount.Parse(connectionString);
            BlobClient             = StorageAccount.CreateCloudBlobClient();
            BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero);
        }
        public void AddEventMessage(EventMessage msg)
        {
            this.context             = new EventMessageDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);
            this.context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));

            this.context.AddObject(this.context.EventMessageTableName, msg);
            this.context.SaveChanges();
        }
Ejemplo n.º 19
0
        private void DeleteRecreateTable()
        {
            CloudTableClient client = AzureHelper.StorageAccount.CreateCloudTableClient();

            client.RetryPolicy = RetryPolicies.Retry(int.MaxValue, TimeSpan.FromSeconds(5));
            client.DeleteTable(WorkerStatsTableName);
            client.CreateTable(WorkerStatsTableName);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Instantiate a new DataSources object.
        /// This method will throw exception if the storage account is wrong.
        /// </summary>
        public DataSources()
        {
            // Instantiate a table service context.
            _context             = new WordDataContext(_storageAccount.TableEndpoint.AbsoluteUri, _storageAccount.Credentials);
            _context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));

            // Instantiate a queue client for use.
            _queueStorage = _storageAccount.CreateCloudQueueClient();
        }
Ejemplo n.º 21
0
        private void InitAzure()
        {
            this.StorageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["ComicStorage"].ConnectionString);

            this.BlobClient             = this.StorageAccount.CreateCloudBlobClient();
            this.BlobClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.Zero);

            this.QueueClient             = this.StorageAccount.CreateCloudQueueClient();
            this.QueueClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.Zero);
        }
Ejemplo n.º 22
0
        public AzureBlobContainer(CloudStorageAccount account, string containerName)
        {
            this.account = account;

            var client = this.account.CreateCloudBlobClient();

            client.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(5));

            this.container = client.GetContainerReference(containerName);
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Gather data for each Hour based on Slice Start Time.
        /// </summary>
        /// <param name="sliceStartTime"></param>
        /// <param name="urlFormat"></param>
        private void GatherDataForOneHour(string sliceStartTime, string urlFormat)
        {
            Uri      storageAccountUri = new Uri("http://" + _dataStorageAccountName + ".blob.core.windows.net/");
            string   year             = sliceStartTime.Substring(0, 4);
            string   month            = sliceStartTime.Substring(4, 2);
            string   day              = sliceStartTime.Substring(6, 2);
            string   hour             = sliceStartTime.Substring(8, 2);
            string   minute           = sliceStartTime.Substring(10, 2);
            DateTime dataSlotGathered = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day), int.Parse(hour), int.Parse(minute), 0);

            _logger.Write(TraceEventType.Information, "Current data slot gathered : {0}.......", dataSlotGathered);

            // Temporary staging folder
            string dataStagingFolder = string.Format(@"{0}\{1}\{1}-{2}", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), year, month);

            Directory.CreateDirectory(dataStagingFolder);

            // Temporary staging file
            string hourlyFileName   = string.Format("data-{0}{1}{2}-{3}0000.txt", year, month, day, hour);
            string decompressedFile = Path.Combine(dataStagingFolder, hourlyFileName);

            try
            {
                _logger.Write(TraceEventType.Information, "Gathering hourly data: ..");
                TriggerRequest(urlFormat, year, month, day, hour, decompressedFile);

                _logger.Write(TraceEventType.Information, "Uploading to Blob: ..");
                CloudBlobClient blobClient = new CloudBlobClient(storageAccountUri, new StorageCredentialsAccountAndKey(_dataStorageAccountName, _dataStorageAccountKey));
                string          blobPath   = string.Format(CultureInfo.InvariantCulture, "httpdownloaddatain/{0}-{1}-{2}-{3}/{4}",
                                                           year, month, day, hour, hourlyFileName);

                CloudBlobContainer container = blobClient.GetContainerReference(_dataStorageContainer);
                container.CreateIfNotExist();

                CloudBlob blob = container.GetBlobReference(blobPath);

                BlobRequestOptions options = new BlobRequestOptions
                {
                    Timeout     = new TimeSpan(0, 5, 0),
                    RetryPolicy = RetryPolicies.Retry(3, new TimeSpan(0, 1, 0))
                };
                blob.UploadFile(decompressedFile, options);
            }
            catch (Exception ex)
            {
                _logger.Write(TraceEventType.Error, "Error occurred : {0}", ex);
            }
            finally
            {
                if (File.Exists(decompressedFile))
                {
                    File.Delete(decompressedFile);
                }
            }
        }
Ejemplo n.º 24
0
        public BlobHelper(string storageName, string privateKey)
        {
            var connectionString = String.Format(
                "DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}",
                storageName, privateKey);

            Account    = CloudStorageAccount.Parse(connectionString);
            BlobClient = Account.CreateCloudBlobClient();

            BlobClient.RetryPolicy = RetryPolicies.Retry(4, TimeSpan.Zero);
        }
        public ExpenseExportStorage()
        {
            this.account = CloudConfiguration.GetStorageAccount(AzureConnectionStrings.DataConnection);

            this.containerName = AzureStorageNames.ExpenseExportContainerName;
            var client = this.account.CreateCloudBlobClient();

            client.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(5));

            this.container = client.GetContainerReference(this.containerName);
        }
        public GenericTableDataRepository(string connectionString)
        {
            this.connectionStringName = !string.IsNullOrEmpty(connectionString) ? connectionString : connectionStringName;
            string cs = RoleEnvironment.GetConfigurationSettingValue(connectionStringName);

            storageAccount = CloudStorageAccount.Parse(cs);
            tableClient    = new CloudTableClient(storageAccount.TableEndpoint.AbsoluteUri,
                                                  storageAccount.Credentials);
            tableClient.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
            tableClient.CreateTableIfNotExist(tableName);
        }
Ejemplo n.º 27
0
        public QueueHelper()
        {
            string connectionString = Settings.AzureConnectionString();

            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(connectionString);

            cloudQueueClient = cloudStorageAccount.CreateCloudQueueClient();

            cloudQueueClient.Timeout     = Settings.Timeout();
            cloudQueueClient.RetryPolicy = RetryPolicies.Retry(Settings.RetryCount(), TimeSpan.FromSeconds(3));
        }
Ejemplo n.º 28
0
        public GuestBookService(string connectionString)
        {
            storageAccount = CloudStorageAccount.FromConfigurationSetting(connectionString);
            string endpoint    = storageAccount.TableEndpoint.AbsoluteUri;
            var    credentials = storageAccount.Credentials;

            CloudTableClient.CreateTablesFromModel(typeof(GuestBookTableServiceContext), endpoint, credentials);
            tableServiceContext = new GuestBookTableServiceContext(endpoint, credentials)
            {
                RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1))
            };
        }
Ejemplo n.º 29
0
 private void InitBd()
 {
     Microsoft.WindowsAzure.CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
     {
         configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
     });
     storageAccount = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
     CloudTableClient.CreateTablesFromModel(typeof(NewsDB_AzureDataContext), storageAccount.TableEndpoint.AbsoluteUri,
                                            storageAccount.Credentials);
     context             = new NewsDB_AzureDataContext(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);
     context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
 }
Ejemplo n.º 30
0
        private BlobRequestOptions GetBlobRequestOptions()
        {
            BlobRequestOptions options = new BlobRequestOptions()
            {
                // Changing for immediate return in case of disconnection
                //RetryPolicy = RetryPolicies.RetryExponential(RetryPolicies.DefaultClientRetryCount, RetryPolicies.DefaultMaxBackoff),
                RetryPolicy = RetryPolicies.Retry(0, TimeSpan.FromSeconds(0)), // i.e. do not retry
                Timeout     = TimeSpan.FromSeconds(AzureHelper.Timeout)        // i.e. timeout in a second
            };

            return(options);
        }