/// <summary>
        /// Adds an operation to be submitted as part of the batch.
        /// </summary>
        /// <param name="blockBlob">The <see cref="CloudBlockBlob"/> whose tier will be set.</param>
        /// <param name="standardBlobTier">A <see cref="StandardBlobTier"/> representing the tier to set.</param>
        /// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed. If <c>null</c>, no condition is used.</param>
        /// <param name="blobRequestOptions">A <see cref="BlobRequestOptions"/> object that specifies additional options for the request.</param>
        public void AddSubOperation(CloudBlockBlob blockBlob, StandardBlobTier standardBlobTier, AccessCondition accessCondition = default(AccessCondition), BlobRequestOptions blobRequestOptions = default(BlobRequestOptions))
        {
            CommonUtility.AssertInBounds("operationCount", this.Operations.Count, 0, Constants.MaxSubOperationPerBatch - 1);
            CommonUtility.AssertNotNull("blockBlob", blockBlob);
            CommonUtility.AssertNotNull("standardBlobTier", standardBlobTier);

            this.Operations.Add(blockBlob.SetStandardBlobTierImpl(standardBlobTier, default(RehydratePriority?), accessCondition, blobRequestOptions ?? BlobRequestOptions.BaseDefaultRequestOptions));
        }
Example #2
0
 private void SetJobInputAssetArchive(JobInput jobInput, StandardBlobTier inputAssetStorageTier)
 {
     if (jobInput is JobInputAsset jobInputAsset && inputAssetStorageTier != StandardBlobTier.Unknown)
     {
         Asset             inputAsset = GetEntity <Asset>(MediaEntity.Asset, jobInputAsset.AssetName);
         StorageBlobClient blobClient = new StorageBlobClient(this.MediaAccount, inputAsset.StorageAccountName);
         CloudBlockBlob[]  blobs      = blobClient.ListBlobContainer(inputAsset.Container, null);
         foreach (CloudBlockBlob blob in blobs)
         {
             blob.SetStandardBlobTierAsync(inputAssetStorageTier);
         }
     }
 }
Example #3
0
        static void ProcessBlobDirectory(IEnumerable <IListBlobItem> list, StandardBlobTier tier, string directoryFilter)
        {
            bool hadNewLine = false;

            foreach (var item in list)
            {
                var type = item.GetType();
                if (type == typeof(CloudBlobDirectory))
                {
                    var directory = (CloudBlobDirectory)item;
                    if (directoryFilter == null || directory.Prefix == $"{directoryFilter}/")
                    {
                        Console.WriteLine($"Processing {directory.Uri.AbsolutePath} directory");
                        ProcessBlobDirectory(directory.ListBlobs(), tier, null);
                    }
                    else
                    {
                        Console.WriteLine($"Skipping {directory.Uri.AbsolutePath} directory");
                    }
                    hadNewLine = true;
                }
                else if (type == typeof(CloudBlockBlob))
                {
                    CloudBlockBlob blob     = (CloudBlockBlob)item;
                    var            blobTier = blob.Properties.StandardBlobTier;
                    if (blobTier != tier)
                    {
                        Console.WriteLine($"Updating {blob.Name} blob tier to {tier}");
                        blob.SetStandardBlobTier(tier);
                        hadNewLine = true;
                    }
                    else
                    {
                        Console.Write($".");
                        hadNewLine = false;
                    }
                }
                else
                {
                    Console.WriteLine($"Unknown item type {type} for {item.Uri}");
                    hadNewLine = true;
                }
            }
            if (!hadNewLine)
            {
                Console.WriteLine($"Done");
            }
        }
        public async Task <bool> SetAccessTierAsync(CloudBlockBlob targetBlob, StandardBlobTier tier)
        {
            var accountProperties = await targetBlob.Container.GetAccountPropertiesAsync().ConfigureAwait(false);

            if (!PermittedCoolBlobTierStorageKinds.Contains(accountProperties.AccountKind))
            {
                log.LogWarning($"Unable to set target blob access tier to 'Cool' as the target storage account " +
                               $"(${accountProperties.AccountKind}) does not support blob access tier settings");
                return(false);
            }

            await targetBlob.SetStandardBlobTierAsync(tier).ConfigureAwait(false);

            log.LogInformation("Access tier for target blob set to 'cool'");
            return(true);
        }
 public virtual Task SetStandardBlobTierAsync(StandardBlobTier standardBlobTier, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
 {
     return(this.failoverExecutor.ExecuteAsync(x => x.SetStandardBlobTierAsync(standardBlobTier, accessCondition, options, operationContext, cancellationToken)));
 }
 public virtual Task SetStandardBlobTierAsync(StandardBlobTier standardBlobTier)
 {
     return(this.failoverExecutor.ExecuteAsync(x => x.SetStandardBlobTierAsync(standardBlobTier)));
 }
 public Task SetStandardBlobTierAsync(CloudBlockBlob blob, AccessCondition accessCondition, StandardBlobTier tier, RehydratePriority?rehydratePriority, BlobRequestOptions options, OperationContext operationContext, CancellationToken cmdletCancellationToken)
 {
     throw new NotImplementedException();
 }
Example #8
0
 public override Task SetStandardBlobTierAsync(StandardBlobTier standardBlobTier, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
 {
     return(base.SetStandardBlobTierAsync(standardBlobTier, accessCondition, options, operationContext, cancellationToken));
 }
Example #9
0
 public override Task SetStandardBlobTierAsync(StandardBlobTier standardBlobTier)
 {
     return(base.SetStandardBlobTierAsync(standardBlobTier));
 }
 public virtual Task SetStandardBlobTierAsync(StandardBlobTier standardBlobTier, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext, CancellationToken cancellationToken)
 {
     throw new System.NotImplementedException();
 }
Example #11
0
        /// <summary>
        /// Changes the access tier of a block blob in a blob container.
        /// </summary>
        /// <param name="containerName">Name of the blob container.</param>
        /// <param name="blobName">Name of the blob.</param>
        /// <param name="targetTier"><see cref="StandardBlobTier"/> which indicates the new access tier for the blob.</param>
        /// <returns>True or false.</returns>
        public static async Task <bool> ChangeAccessTier(string containerName, string blobName, StandardBlobTier targetTier)
        {
            try
            {
                CloudBlockBlob blob = _blobClient.GetContainerReference(containerName).GetBlockBlobReference(blobName);
                await blob.SetStandardBlobTierAsync(targetTier);

                return(true);
            }
            catch (Exception exception)
            {
                return(false);
            }
        }
        /// <summary>
        /// アップロード
        /// </summary>
        /// <param name="storageAccount"></param>
        /// <param name="containerName"></param>
        /// <param name="blobName"></param>
        /// <param name="stream"></param>
        /// <param name="standardBlobTier"></param>
        /// <param name="shouldBlobDelete"></param>
        /// <returns></returns>
        /// <remarks>
        /// 層を指定してアップロードすることが出来ない。
        /// アップロード後に層を設定する or コンテナの既定の層を変更する(Azure Portal)
        /// 本メソッドによる方法は、既定の層に置いてある時間分のコスト+層移動のコストがかかるので注意
        /// </remarks>
        public static async Task <bool> UploadStreamAsync(CloudStorageAccount storageAccount, string containerName, string blobName, Stream stream, StandardBlobTier standardBlobTier = StandardBlobTier.Unknown, bool shouldBlobDelete = false)
        {
            // blobコンテナへの参照を取得する
            var container = GetContainerReference(storageAccount, containerName);

            // コンテナが存在しない場合作成する
            container.CreateIfNotExists();

            // コンテナからblobブロックの参照を取得する
            // フォルダ階層ありのアップロードを行う場合、blobNameを「folder/image.jpg」のようにする
            CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);

            // 指定があれば既存のBlobを削除
            if (shouldBlobDelete)
            {
                await blockBlob.DeleteIfExistsAsync();
            }

            // シーク位置を初期位置に戻す
            stream.Seek(0, SeekOrigin.Begin);

            // ファイルをアップロードする
            await blockBlob.UploadFromStreamAsync(stream);

            // 指定があれば層を設定
            if (standardBlobTier != StandardBlobTier.Unknown)
            {
                await blockBlob.SetStandardBlobTierAsync(standardBlobTier);
            }

            return(await Task.FromResult(true));
        }
        /// <summary>
        /// 層変更
        /// </summary>
        /// <param name="storageAccount"></param>
        /// <param name="containerName"></param>
        /// <param name="blobName"></param>
        /// <param name="standardBlobTier"></param>
        /// <returns></returns>
        public static async Task <bool> SetStandardBlobTierAsync(CloudStorageAccount storageAccount, string containerName, string blobName, StandardBlobTier standardBlobTier)
        {
            // blobコンテナへの参照を取得する
            var container = GetContainerReference(storageAccount, containerName);

            // コンテナからblobブロックの参照を取得する
            CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);

            // 層変更
            await blockBlob.SetStandardBlobTierAsync(standardBlobTier);

            return(await Task.FromResult(true));
        }
 public IAzureBlobProviderEventConfigurator WithAccessTier(StandardBlobTier accessTier)
 {
     _accessTierBuilder = ev => accessTier;
     return(this);
 }
 private RESTCommand <NullType> SetStandardBlobTierImpl(StandardBlobTier standardBlobTier, AccessCondition accessCondition, BlobRequestOptions options)
 {
     throw new System.NotImplementedException();
 }
Example #16
0
 public JsonResult Create(string transformName, string jobName, string jobDescription, string jobPriority, string inputFileUrl,
                          string inputAssetName, StandardBlobTier inputAssetStorageTier, string streamingPolicyName, ContentProtection contentProtection)
 {
     try
     {
         Job    job       = null;
         string authToken = HomeController.GetAuthToken(Request, Response);
         using (MediaClient mediaClient = new MediaClient(authToken))
         {
             bool      videoAnalyzerPreset = false;
             bool      audioAnalyzerPreset = false;
             Transform transform           = mediaClient.GetEntity <Transform>(MediaEntity.Transform, transformName);
             foreach (TransformOutput transformOutput in transform.Outputs)
             {
                 if (transformOutput.Preset is VideoAnalyzerPreset)
                 {
                     videoAnalyzerPreset = true;
                 }
                 else if (transformOutput.Preset is AudioAnalyzerPreset)
                 {
                     audioAnalyzerPreset = true;
                 }
             }
             MediaJobOutputPublish outputAssetPublish = new MediaJobOutputPublish()
             {
                 InputAssetStorageTier = inputAssetStorageTier,
                 StreamingPolicyName   = streamingPolicyName,
                 ContentProtection     = contentProtection,
             };
             string insightId  = null;
             Asset  inputAsset = string.IsNullOrEmpty(inputAssetName) ? null : mediaClient.GetEntity <Asset>(MediaEntity.Asset, inputAssetName);
             if (mediaClient.IndexerEnabled() && (videoAnalyzerPreset || audioAnalyzerPreset))
             {
                 insightId = mediaClient.IndexerUploadVideo(inputFileUrl, inputAsset, jobPriority, videoAnalyzerPreset, audioAnalyzerPreset);
             }
             if (!string.IsNullOrEmpty(transformName))
             {
                 MediaJobOutputInsight outputInsight = new MediaJobOutputInsight()
                 {
                     Id           = insightId,
                     VideoIndexer = videoAnalyzerPreset,
                     AudioIndexer = audioAnalyzerPreset
                 };
                 job = mediaClient.CreateJob(transformName, jobName, jobDescription, jobPriority, inputFileUrl, inputAsset, null, outputAssetPublish, outputInsight, true);
             }
         }
         return(Json(job));
     }
     catch (ValidationException ex)
     {
         Error error = new Error()
         {
             Type    = HttpStatusCode.BadRequest,
             Message = ex.Message
         };
         return(new JsonResult(error)
         {
             StatusCode = (int)error.Type
         });
     }
     catch (ApiErrorException ex)
     {
         return(new JsonResult(ex.Response.Content)
         {
             StatusCode = (int)ex.Response.StatusCode
         });
     }
 }
        /// <summary>
        /// テキストのアップロード
        /// </summary>
        /// <param name="storageAccount"></param>
        /// <param name="containerName"></param>
        /// <param name="blobName"></param>
        /// <param name="uploadText"></param>
        /// <param name="standardBlobTier"></param>
        /// <param name="shouldBlobDelete"></param>
        /// <returns></returns>
        /// <remarks>
        /// </remarks>
        public static async Task <bool> UploadTextAsync(CloudStorageAccount storageAccount, string containerName, string blobName, string uploadText, StandardBlobTier standardBlobTier = StandardBlobTier.Unknown, bool shouldBlobDelete = false)
        {
            // blobコンテナへの参照を取得する
            var container = GetContainerReference(storageAccount, containerName);

            // コンテナが存在しない場合作成する
            container.CreateIfNotExists();

            // コンテナからblobブロックの参照を取得する
            CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);

            // 指定があれば既存のBlobを削除
            if (shouldBlobDelete)
            {
                await blockBlob.DeleteIfExistsAsync();
            }

            // テキストをアップロードする
            await blockBlob.UploadTextAsync(uploadText);

            // 指定があれば層を設定
            if (standardBlobTier != StandardBlobTier.Unknown)
            {
                await blockBlob.SetStandardBlobTierAsync(standardBlobTier);
            }

            return(await Task.FromResult(true));
        }
 /// <summary>
 /// Return a task that asynchronously set block blob Tier
 /// </summary>
 /// <param name="blob">CloudBlockBlob object</param>
 /// <param name="tier">block blob Tier</param>
 /// <param name="accessCondition">Access condition</param>
 /// <param name="options">Blob request options</param>
 /// <param name="operationContext">An object that represents the context for the current operation.</param>
 public Task SetStandardBlobTierAsync(CloudBlockBlob blob, AccessCondition accessCondition, StandardBlobTier tier, RehydratePriority?rehydratePriority, BlobRequestOptions options, XSCL.OperationContext operationContext, CancellationToken cmdletCancellationToken)
 {
     return(blob.SetStandardBlobTierAsync(tier, rehydratePriority, accessCondition, options, operationContext, cmdletCancellationToken));
 }
 public virtual Task SetStandardBlobTierAsync(StandardBlobTier standardBlobTier)
 {
     throw new System.NotImplementedException();
 }